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

vsi*_*ngh 13 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);

}
Run Code Online (Sandbox Code Playgroud)

当我拿这个byte[]并保存到文件时,该文件是空白的.我PDStream用来将输入流嵌入到文档中

来自http://pdfbox.apache.org/apidocs/

public PDStream(PDDocument doc,
                InputStream str)
         throws IOException
Run Code Online (Sandbox Code Playgroud)

从输入流中读取所有数据并将其嵌入到文档中,这将关闭InputStream.

vsi*_*ngh 13

我一直在寻找HTML到PDF的渲染器.我们使用的是iText.我希望与Apache PDFBox一样.但是,看起来它无法完成.

我可以使用Apache FOP或继续使用iText.

如果有人感兴趣,这是iText解决方案: Java将XML文档渲染为PDF

如果您正在寻找使用PDF框合并的解决方案,这里是 使用Apapche pdf框合并pdf文件

  • 我正在寻找iText的替代品,其许可规则不适用于封闭源项目 (4认同)
  • apache pdfbox 不支持 HTML 到 PDF 的转换。最近在slashdot上有一个关于java pdf库的讨论,我发现飞碟使用了iText v2 LGPL,我还没有测试过,但我将讨论留在这里以备将来参考:http://ask .slashdot.org/comments.pl?sid=5505091&cid=47625223 (3认同)
  • OpenHTMLtoPDF是使用PDFBOX的FlyingSaucer的分支。https://github.com/danfickle/openhtmltopdf (2认同)

And*_*rey 9

Open HTML to PDF 库在底层使用 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();
}
Run Code Online (Sandbox Code Playgroud)