Das war ein ziemlich interessantes Problem, also +1 auf die Frage.
Der erste Schritt bestand darin, nachzusehen, ob iTextSharp XML Worker das HTML
td
-Tag unterstützt. Die Zuordnungen können in der Quelle in iTextSharp.tool.xml.html.Tags . Dort finden Sie td
ist zugeordnet zu iTextSharp.tool.xml.html.table.TableData , was die Implementierung eines benutzerdefinierten Tag-Prozessors ein wenig einfacher macht. I.e. Alles, was wir tun müssen, erben von der Klasse und überschreiben End()
:
Wie in den Inline-Kommentaren erwähnt, ist dies eine sehr einfache Implementierung für Ihre spezifischen Anforderungen. Sie müssen zusätzliche Logik hinzufügen, um andere Schreibmodus CSS
Eigenschaftswert und enthält alle Plausibilitätsprüfungen.
Aufgrund des Kommentars, den @Daniel hinterlassen hat, ist es nicht klar, wie benutzerdefinierte CSS
beim Konvertieren der% hinzugefügt werden. co_de% bis HTML
. Zuerst das aktualisierte HTML:
Dann ein kleines Snippet mit benutzerdefiniertem CSS:
%Vor% Der etwas schwierige Teil ist das extra Setup - Sie können nicht das einfache out of the box PDF
verwenden, das hier bei SO üblich ist. Hier ist eine einfache Hilfsmethode, die Ihnen den Einstieg erleichtern sollte:
Anstatt eine Erläuterung des obigen Beispielcodes erneut zu wiederholen, Siehe die Dokumentation (iText entfernte Dokumentation, verlinkt mit Wayback Machine), um eine bessere Vorstellung davon zu bekommen, warum Sie den Parser auf diese Weise einrichten müssen.
Beachten Sie auch:
XMLWorkerHelper.GetInstance().ParseXHtml()
-Snippet hat das HTML
-Tag entfernt, da der Stil direkt auf das p
-Tag angewendet werden kann. td
. Wenn sie weggelassen werden, sind die Spalten variable Breiten, die übereinstimmen, wenn der Text horizontal gerendert wurde. Getestet mit iTextSharp und XML Worker Versionen 5.5.9 Hier ist das aktualisierte Ergebnis:
Tags und Links html c# asp.net itextsharp xmlworker