我正在使用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
而不在任何时候创建文件?在此先感谢您的关注和解答。
最佳答案
当调用schedule
而不是exectue
时,作业在后台运行。您在这里面临赛车状况。
同样,也没有充分的理由在字节数组输出流上调用toString
。使用getBytes()
。