2012-03-24 11 views
0

Bei der Verwendung von XMLWorkerHelper.GetInstance(). ParseXHTML() finde ich, dass es wirklich streng ist. Jede falsche Reihenfolge von Tags oder nicht geschlossenen Tags führt zum Auslösen einer Ausnahme.Umgang mit itextsharp XMLWorkerHelper.ParseXHTML striktes Verhalten

Ich konvertiere HTML, über das ich keine Kontrolle habe.

Gibt es Flags, die es weniger strikt machen? Eine Eingabe-Callback-Schnittstelle für lustige Markups? Alles in der itextsharp.tools.xml.html? Oder eine komplett neue Bibliothek, die mit itextsharp.text.IElement kompatibel ist?

Antwort

1

Der Name der Klasse und diese Methode fasst es ziemlich zusammen - Sie können nicht. Die gesamte Pipeline basiert auf der Annahme, dass ein gültiges XML-Dokument übergeben wird, alles andere wird eine Ausnahme auslösen. Sie können die Pipeline anpassen und Ihre eigenen Handler für Dinge wie Link-Auflösung, benutzerdefinierte CSS-Eigenschaften und neue HTML-Tags hinzufügen, aber der Kerndokumentprozessor benötigt noch gültigen HTML-Code.

Ich würde empfehlen, in running your HTML through a library that can convert it to XHTML zu suchen.

EDIT

Überprüfen Sie auch wkhtmltopdf aus. Es verwendet Webkit um HTML zu rendern und macht (scheinbar) einen ziemlich guten Job.

+0

Dank Chris. Bisher habe ich HTML Tidy und HTMLAgilityPack ohne Erfolg betrachtet. Riesiger Flaschenhals hier. – Jake

+0

@Jake, ich habe meine Antwort mit einem anderen Tool aktualisiert –