从java上的第三方HTML生成PDF

时间:2014-04-16 15:33:41

标签: java itext flying-saucer xmlworker

我正在尝试生成第三方HTML的PDF版本(实际上它是一个HTM文件)。这个HTML将来可能会改变,我完全无法控制它。我想做的只是将其转换为PDF格式。

我已经尝试了两种解决方案:iText(带XmlWorker)和Flying-Saucer,但到目前为止还没有成功。

我的问题是HTML文件非常默认模式。例子:

    <link rel=File-List href="040602_inds_files/filelist.xml">

    <meta http-equiv=Content-Type content="text/html; charset=windows-1252">

第一个没有关闭标签(iText崩溃),第二个没有关于'http-equiv'值的双引号(Flying-Saucer崩溃)。

我发现了很多关于这个问题的帖子,但他们都在处理自己的HTML,所以他们可以修复它并再试一次。但我不能这样做。

This是我要转换的页面。

这是我的iText转换方法:

        public static void convert(PdfWriter writer, Document document, String siteUrl) throws MalformedURLException, IOException {
            XMLWorkerHelper.getInstance().parseXHtml(writer, document,
                    new BufferedReader(new InputStreamReader(new URL(siteUrl).openStream())));
        }

这是我的飞碟转换方法:

        public static void convertFS(String siteUrl, String fileName) throws com.lowagie.text.DocumentException, IOException {
            OutputStream os = new FileOutputStream(fileName);
            ITextRenderer renderer = new ITextRenderer();
            renderer.setDocument(siteUrl);
            renderer.layout();
            renderer.createPDF(os);

            os.close();
        }

任何提示?如果它们可以正常使用,我会接受其他库。 Thx提前。

1 个答案:

答案 0 :(得分:0)

您可以先通过jsoup解析HTML文件,然后将内容转换为标准HTML文件,最后可以使用iText生成PDF