Ошибка 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()
,