使用Java将HTML文件转换为PDF

Dev*_*Guy 9 html java pdf

我正在寻找一种使用Java库(最好是免费的)将HTML文件转换为PDF的方法。我已经在网上进行了一些搜索以查找要使用的工具,但是还没有找到一种能持续使用的解决方案(我曾提到过iText,但看起来使用它会产生一定的费用)。是否可以使用现有的库来完成HTML到PDF的转换?

Dev*_*Guy 7

更新:

我最终从Maven回购中使用了Flying-Saucer:https//mvnrepository.com/artifact/org.xhtmlrenderer/flying-saucer-pdf

让它对我来说很简单,这是我使用此方法创建的一种方法:

public static void generatePDF(String inputHtmlPath, String outputPdfPath)
{
    try {
        String url = new File(inputHtmlPath).toURI().toURL().toString();
        System.out.println("URL: " + url);

        OutputStream out = new FileOutputStream(outputPdfPath);

        //Flying Saucer part
        ITextRenderer renderer = new ITextRenderer();

        renderer.setDocument(url);
        renderer.layout();
        renderer.createPDF(out);

        out.close();
    } catch (DocumentException | IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是用法:

public static void main(String[] args){
    String inputFile = "C:/Users/jrothst/Desktop/TestHtml.htm";
    String outputFile = "C:/Users/jrothst/Desktop/TestPdf.pdf";

    generatePDF(inputFile, outputFile);

    System.out.println("Done!");
}
Run Code Online (Sandbox Code Playgroud)

输出PDF效果很好,并且使用非常简单。它还很好地处理了html中的CSS。并未将其用于外部CSS,但我相信这也是可能的。

  • 我也喜欢飞碟。请注意,虽然 FS 具有友好的许可证,但它使用 iText 5(例如代码示例中的 ITextRenderer),它具有 AGPL 许可证。因此,我最终选择了 openhtmltopdf,因为它没有 iText 依赖项(它使用 Apache PDFBox)。到目前为止,它与 CSS 配合得非常好,并且完成了我需要它做的所有事情。 (3认同)
  • 不幸的是,飞碟不支持 CSS3 (2认同)

ieu*_*gen 7

您有几种选择:

  • openhtmltopdf-仍在酝酿中的新代码,但有一些不错的结果
  • Apache FOP-可以转换XML,而不是HTML,但可能会有用
  • itext的旧版本(版本2)
  • Wkhtmltopdf-可以通过外部过程从Java调用它,到目前为止使用非常成功