Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PDFBox-从字符串创建java.io.InputStream_Java_Inputstream_Pdfbox - Fatal编程技术网

PDFBox-从字符串创建java.io.InputStream

PDFBox-从字符串创建java.io.InputStream,java,inputstream,pdfbox,Java,Inputstream,Pdfbox,我正在集成我的RESTful服务以支持文档下载等。为此,我正在探索PDFBox库,它能够处理PDF文档,如果我必须创建和保存文档,它工作正常 我的示例代码如下所示 PDDocument doc = null; PDPage page = null; try{ doc = new PDDocument(); page = new PDPage(); doc.addPage(page); PDFont font = PDType1Font.HELVETICA;

我正在集成我的RESTful服务以支持文档下载等。为此,我正在探索PDFBox库,它能够处理PDF文档,如果我必须创建和保存文档,它工作正常

我的示例代码如下所示

    PDDocument doc = null;
PDPage page = null;
try{
    doc = new PDDocument();
    page = new PDPage();
    doc.addPage(page);
    PDFont font = PDType1Font.HELVETICA;
    PDPageContentStream content = new PDPageContentStream(doc,page);
    content.beginText();
    content.drawString("Some Content Received At Runtime");
    content.endText();
    content.close();
    doc.save("SomeName.pdf");
    doc.close();

    // Now load and return the stream
    return PDDocument.load("SomeName.pdf").getDocument().createCOSStream().getFilteredStream();
} catch (Exception e) {
    // Do nothing for now
}
如果您在上面的示例中看到,我可以选择将文档转换为InputStream,但要实现这一点,我必须先保存文档,然后重新加载!这是不可取的,因为这将使我正在运行的服务器充斥着垃圾


我真正想要的是在不保存文档的情况下实现这一点!可能吗?我应该看看其他像iText这样的图书馆吗?如果您知道相同的示例,请分享。

如果您直接调用doc.createCoStream而不是先保存它,会发生什么情况?如果不起作用,您可以将文档保存到内存中并从内存中读取:正如@Thilo所建议的,使用doc.save重载,它接受带有ByteArrayOutputStream的输出流,获取字节[]从它和包装在一个ByteArrayInputStream。这正是我正在寻找的…将尝试和更新此线程。。。第一种方法不起作用…也似乎有点不整洁。。。。