Documents4j的OutputStream问题

时间:2017-07-24 08:19:44

标签: java outputstream documents4j

我正在使用Documents4j将文档转换为PDF / a。我想使用以下代码构建一个返回文件String DecimalValue = FilterUSD.Text.ToString().Trim(); Double Deci = Convert.ToDouble(DecimalValue); if(Deci < 0) { //Negative Double init = Deci; Double init2 = init - 1; sbuilder.Append(" Amount_USD").Append(" <= ").Append("@init AND Amount_USD > @init2 "); } else { //Positive, as above } 表示的函数:

Select * FROM Table WHERE Amount_USD <= @init AND Amount_USD > @init2 

但我的输出是空白的。我认为我通过输入不恰当的参数来滥用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

提前感谢您的关注和答案。

1 个答案:

答案 0 :(得分:1)

在调用schedule而不是exectue时,作业将在后台运行。你在这里面临着竞争条件。

此外,没有充分的理由在字节数组输出流上调用toString; ratheer使用getBytes()