0

几天来,我一直在学习 iText 及其美妙之处。

我成功地将 HTML 源代码转换为 PDF。但是,我一直想知道是否可以将损坏的 html(缺少标签等)转换为 PDF 而不会像 HTMLWorker 过去那样抛出异常。我知道 XMLWorker 是非常明智的,并且只适用于正确编写的 HTML 或 (X)HTML,但是因为我从第二方获取 html,这很可能会破坏 HTML。

我想知道是否有一种方法可以转换可能的内容并让错误像浏览器一样浮动。

4

1 回答 1

1

在将损坏的 HTML 传递给 iText 之前使用TagSoup 。它将清理损坏的 HTML 并返回有效的 X(HT)ML。

TagSoup 实现了 SAX 解析器接口。有一些 关于如何使用它的例子,但它缺乏一些“真实”的文档

可能您将不得不再次序列化 XML 并将其转储到文件中以将其提供给 iText,我不知道它的接口。

可以使用XMLWriter序列化 SAX 流。碰巧它已经包含在 TagSoup 中,因此您不需要添加额外的依赖项。

final Parser parser = new Parser();
final StringWriter writer = new StringWriter();

parser.setContentHandler(new XMLWriter(writer));
parser.parse(new InputSource(
        new URL("http://oregonstate.edu/instruct/phl302/texts/hobbes/leviathan-c.html")
                .openConnection().getInputStream()));
System.out.println(writer.toString());

根据 iText 的 API 决定是将writer的输出转储到文件还是以其他方式传递。

于 2013-02-11T16:32:00.717 回答