0

私は数日間、iText とその美しさについて学んできました。

HTMLソースコードをPDFに正常に変換できました。ただし、HTMLWorker が以前行っていたように、XMLWorker が例外をスローすることなく、破損した html (タグの欠落など) を PDF に変換できるかどうか疑問に思っていました。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());

writerの出力をファイルにダンプするか、別の方法で渡すかは、iText の API に基づいて決定します。

于 2013-02-11T16:32:00.717 に答える