Java如何从无效的HTML中创建PDF或图像

4
我想用Java从“无效”的HTML文件创建PDF(或任何图像格式[png,jpg,bmp ..])。我通过谷歌找到了一个工具:iText,以及一些使用iText在Java中从HTML创建PDF的教程。在这个(X)HTML转PDF与Java教程中,如果HTML有效,则可以正常工作并生成类似于此文件的PDF文件。但是,如果我尝试从我的HTML创建PDF,则会出现一些错误。
首先,我的HTML格式不正确,而且不幸的是无法更改。我将其上传到这里,W3C的验证器发现28个错误
我的选择是:
  • 首先清理和验证我的HTML,并尽快创建PDF。
  • 寻找另一个适用于我的问题的工具。
  • 您的建议(使用Java)。
  • 最后一种选择是,使用另一个平台(.net、Php、Python等),并从我的应用程序使用Web服务。
请帮我解决这个问题。提前感谢您。

1
似乎你已经“快到了”。我的建议是修复HTML并使用可行的工具,正如你亲自看到的一样。修复28个HTML错误(特别是如果那是你自己的模板而不是从“外部”得到的东西)可能会比转换到其他平台或工具更容易和更快,这些平台或工具也有可能无法处理无效的HTML。 - Patryk Ćwiek
这个 HTML 是成千上万个变体之一。它不是静态的,每次调用都可以动态更改。 - Oguz Ozkeroglu
问题在于,两个不同的程序呈现有效HTML的方式完全正常,更不用说无效的HTML了。HTML的源是什么?有没有办法进行修正? - RoToRa
尽管你说你不会,但你真的需要修复你的HTML。 - Brendan Lesniak
@RoToRa,正如我所说的问题,无法更改HTML。 HTML文件是由另一个系统创建并提供给我的,我无法干预该系统(SAP PI)。 - Oguz Ozkeroglu
1
考虑到SAP是一家提供支持的大型公司(我认为),应该可以针对HTML问题提交错误报告。 - RoToRa
3个回答

4

谢谢你的回答。我现在尝试了一下,但对于我的问题没有起作用。 - Oguz Ozkeroglu
它给了我一个XML,看起来比第一个HTML更好;然后使用iText,它给了我一个PDF。但是这个PDF文件看起来不像Firefox的解释器,它们是不同的。 - Oguz Ozkeroglu
我明白了。你可以尝试其他的HTML清理解决方案,因为如果专业工具不能很好地完成工作,我怀疑其他转换器也不会做得更好... - Alexander Pavlov

2
您可以使用支持损坏HTML的HTML解析器,例如jsoup。与jtidy类似,它可以自动创建有效的HTML,但它还允许您操作HTML DOM,因此您可以尝试明确地按照您想要的方式修复最大的问题。

2
尝试使用wkhtmltopdf。它使用无头浏览器(webkit)先呈现html,然后生成PDF。我在我的一个Java项目中使用了它,并且效果很好。
它提供了一些灵活的命令行选项,这里是选项列表和用法链接。它也适用于格式不良的html文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接