Ошибка OutputStream с Documents4j

Я использую Documents4j для преобразования документов в PDF/a. Я хочу построить функцию, которая возвращает String представление моего файла с этим кодом:

    String input=...;
    DocumentType[] docType= {DocumentType.CSV,DocumentType.DOC,DocumentType.MHTML,DocumentType.MS_EXCEL,DocumentType.MS_WORD,DocumentType.ODS,DocumentType.PDF,DocumentType.RTF,DocumentType.TEXT,DocumentType.XML};

    IConverter converter = LocalConverter.make();

    ByteArrayInputStream in= new ByteArrayInputStream(input.getBytes());       
    ByteArrayOutputStream out = new ByteArrayOutputStream();

    Future<Boolean> conversion = converter.convert(in)
    .as(docType[n-1])
    .to(out) 
    .as(DocumentType.PDFA)
    .prioritizeWith(1000) // optional
    .schedule();

    String output=out.toString();

    in.close();
    out.flush();
    out.close();
    System.out.println(output);
    return(output);

Но мой вывод пуст. Я думаю, что неправильно использовал .to() метод путем ввода неуместного аргумента. Который OutputStream я должен использовать, если это не ByteArrayOutputStream? Если нет жизнеспособных OutputStream Кроме как FileOutputStreamесть ли у вас идеи о том, как вернуть String на выходе без создания файла в любой момент?

Заранее спасибо за внимание и ответы.

1 ответ

Решение

При звонке schedule вместо exectueработа выполняется в фоновом режиме. Вы столкнулись с гоночным состоянием здесь.

Также нет веских причин звонить toString на выходном потоке байтового массива; как обычно getBytes(),

Другие вопросы по тегам