PDFBox-从字符串创建java.io.InputStream
我正在集成我的RESTful服务以支持文档下载等。为此,我正在探索PDFBox库,它能够处理PDF文档,如果我必须创建和保存文档,它工作正常 我的示例代码如下所示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;
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。这正是我正在寻找的…将尝试和更新此线程。。。第一种方法不起作用…也似乎有点不整洁。。。。