我正在尝试从HTML内容创建PDF。
public byte[] generatePdf(final XhtmlPDFGenerationRequest request) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PDDocument document = new PDDocument();
InputStream stream = new ByteArrayInputStream(request.getContent()
.getBytes());
PDStream pdstream = new PDStream(document, stream);
document.save(baos);
document.close();
return this.toByteArray(baos);
}
当我将此byte[]
保存到文件时,该文件为空。我正在使用PDStream
将输入流嵌入到文档中
来自http://pdfbox.apache.org/apidocs/
public PDStream(PDDocument doc,
InputStream str)
throws IOException
从输入流中读取所有数据并将其嵌入到文档中,这将关闭InputStream
。
答案 0 :(得分:13)
我一直在寻找HTML到PDF的渲染器。我们使用的是iText。我希望与Apache PDFBox一样。但是,看起来它无法完成。
我可以使用Apache FOP或继续使用iText。
如果有人感兴趣,这是iText解决方案: Java Render XML Document as PDF
如果您正在寻找使用PDF框进行合并的解决方案,请点击此处 Merge pdf files using Apapche pdf box
答案 1 :(得分:2)
Open HTML to PDF library在后台使用PDFBox,并隐藏了所有转换复杂性。
用法非常简单:
try (OutputStream os = new FileOutputStream("/Users/me/output.pdf")) {
PdfRendererBuilder builder = new PdfRendererBuilder();
builder.withUri("file:////Users/me/input.html");
builder.toStream(os);
builder.run();
}
答案 2 :(得分:0)
也许有点晚了,但是如果 itext 许可证对您来说是个问题,那么 LibrePdf 可能是您的一个选择: https://github.com/LibrePDF/OpenPDF
它基于 iText LGPL 代码。