我正在使用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()

09-26 22:12