【问题标题】:Generating PDF from a third-party HTML on java在 java 上从第三方 HTML 生成 PDF
【发布时间】:2014-04-16 15:33:41
【问题描述】:

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

我已经尝试了 2 个解决方案: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();
        }

有什么建议吗?如果它们可以正常使用,我接受其他库。提前谢谢。

【问题讨论】:

  • 可能您可以首先通过使用接受格式错误的 HTML 代码(例如 jsoup)的库读取来规范化 HTML 代码,写入具有所有标签且格式正确的临时位置,然后执行 PDF使用 iText 从临时位置转换。

标签: java itext flying-saucer xmlworker


【解决方案1】:

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

【讨论】:

  • 请使用大写,这样文字会更好看
  • 在完成工作之前我还有一些问题,但 jsoup 确实解决了这个问题。顺便说一句,我选择飞碟。谢谢。
猜你喜欢
  • 2011-04-25
  • 2010-12-11
  • 1970-01-01
  • 2011-12-31
  • 2015-07-18
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
  • 2013-06-05
相关资源
最近更新 更多