我正在使用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()方法,输入了一个不适当的参数。如果不是ByteArrayOutputStream,我应该使用哪个OutputStream?如果除了FileOutputStream之外没有任何可行的OutputStream,您是否知道如何在输出中返回String,而不在任何时候创建文件?
提前感谢您的关注和回答。
发布于 2017-07-31 04:41:57
当调用schedule而不是exectue时,作业在后台运行。你在这里面临着赛车的情况。
此外,没有充分的理由在字节数组输出流上调用toString;更多的人使用getBytes()。
https://stackoverflow.com/questions/45275514
复制相似问题