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

2022-09-03 14:05:47

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


答案 1

我正在寻找一个HTML到PDF渲染器。我们使用的是iText。我希望对Apache PDFBox做同样的事情。但是,看起来它做不到。

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

如果有人有兴趣,这里是iText解决方案:Java Render XML Document as PDF

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


答案 2

打开HTML到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();
}

推荐