14

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

4

3 回答 3

15

我正在寻找一个 HTML 到 PDF 的渲染器。我们使用的是 iText。我希望对 Apache PDFBox 做同样的事情。但是,似乎无法做到。

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

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

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

于 2013-11-05T15:44:17.737 回答
4

打开 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();
}
于 2020-11-10T22:07:56.373 回答
0

可能有点晚了,但如果 itext 许可证对您来说是个问题,也许 LibrePdf 对您来说是一个选择: https ://github.com/LibrePDF/OpenPDF

它基于 iText LGPL 代码。

于 2021-06-30T11:47:07.107 回答