使用iText将HTML转换为PDF

时间:2008-10-25 03:36:52

标签: html pdf itext

有没有人知道是否可以使用iText将HTML页面(网址)转换为PDF?

如果答案是'不',那也没关系,因为我将不再浪费时间尝试解决这个问题而只是在我知道的一些组件上花一些钱:)

提前感谢您的回复!

8 个答案:

答案 0 :(得分:29)

我认为这正是您所寻找的

http://today.java.net/pub/a/today/2007/06/26/generating-pdfs-with-flying-saucer-and-itext.html

http://code.google.com/p/flying-saucer

  

Flying Saucer的主要目的是将符合规范的XHTML和CSS 2.1作为Swing组件呈现给屏幕。尽管它最初用于将标记嵌入桌面应用程序(如iTunes音乐商店),但飞碟也已经扩展到了iText。这使得将XHTML渲染为PDF以及图像和屏幕变得非常容易。 Flying Saucer需要Java 1.4或更高版本。

答案 1 :(得分:6)

我最终使用了来自webSupergoo的ABCPdf。 它工作得非常好,大约350美元,它根据你上面的评论节省了我的时间和小时。 再次感谢Daniel和Bratch的意见。

答案 2 :(得分:3)

最简单的方法是使用pdfHTML。 它是一个iText7插件,可将HTML5(+ CSS3)转换为pdf语法。

代码很简单:

    HtmlConverter.convertToPdf(
        "<b>This text should be written in bold.</b>",       // html to be converted
        new PdfWriter(
            new File("C://users/mark/documents/output.pdf")  // destination file
        )
    );

要了解详情,请转到http://itextpdf.com/itext7/pdfHTML

答案 3 :(得分:1)

你的问题的答案实际上是双重的。首先,您需要指定要对渲染的HTML执行的操作:将其保存到新的PDF文件中,或在另一个渲染上下文中使用它(即将其添加到您正在生成的其他文档中)。

前者使用飞碟框架相对容易实现,可在此处找到:https://github.com/flyingsaucerproject/flyingsaucer

后者实际上是一个更全面的问题,需要进一步分类。 使用iText,您将无法(至少,至少)将iText元素(即ParagraphPhraseChunk等)与生成的HTML结合使用。您可以使用ContentByte的{​​{1}}方法并为此模板生成HTML来解决此问题。

另一方面,如果您想要使用水印,日期等标记生成的HTML,则可以使用iText执行此操作。

所以底线:您不能轻易地将呈现的HTML集成到其他pdf生成上下文中,但您可以将HTML直接呈现为空白PDF文档。

答案 4 :(得分:0)

使用itext libray:

这是示例代码。运行正常:

        String htmlFilePath = filePath + ".html";
        String pdfFilePath = filePath + ".pdf";

        // create an html file on given file path
        Writer unicodeFileWriter = new OutputStreamWriter(new FileOutputStream(htmlFilePath), "UTF-8");
        unicodeFileWriter.write(document.toString());
        unicodeFileWriter.close();

        ConverterProperties properties = new ConverterProperties();
        properties.setCharset("UTF-8");
        if (url.contains(".kr") || url.contains(".tw") || url.contains(".cn") || url.contains(".jp")) {
            properties.setFontProvider(new DefaultFontProvider(false, false, true));
        }

        // convert the html file to pdf file.
        HtmlConverter.convertToPdf(new File(htmlFilePath), new File(pdfFilePath), properties);

Maven依赖项

    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itext7-core</artifactId>
        <version>7.1.6</version>
        <type>pom</type>
    </dependency>

    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>html2pdf</artifactId>
        <version>2.1.3</version>
    </dependency>

答案 5 :(得分:-1)

使用iText的HTMLWorker

Example

答案 6 :(得分:-2)

当我今年早些时候需要HTML到PDF转换时,我尝试了Winnovative HTML到PDF转换器的试用(我认为ExpertPDF也是同样的产品)。它工作得很好,所以我们在那家公司买了许可证。在那之后我不会深入探讨它。

答案 7 :(得分:-2)

也许你可以试试:

http://www.allcolor.org/YaHPConverter/