如何使用PDFBox从HTML创建PDF文件?

时间:2013-10-31 17:54:28

标签: java pdf pdfbox

我正在尝试从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

3 个答案:

答案 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 代码。