Mit itextsharp xmlworker HTML in pdf konvertieren und Text vertikal schreiben

8

Ist es möglich, in xmlworker die Textrichtung bottom-up zu schreiben? Ich möchte es in der Tabelle verwenden. Mein Code ist

%Vor%

Aber es funktioniert nicht nach der Konvertierung von HTML nach PDF. Text FIRST und SECOND sind nicht in Richtung von unten nach oben.

    
Daniel 23.03.2016, 13:52
quelle

2 Antworten

6

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() :

%Vor%

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.

AKTUALISIEREN

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:

%Vor%

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:

%Vor%

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:

  1. XML Worker unterstützt nicht alle CSS2 / CSS3-Eigenschaften. Sie können also mit etwas experimentieren, was funktioniert oder nicht funktioniert PDF, um den HTML-Code im Browser anzuzeigen.
  2. Das XMLWorkerHelper.GetInstance().ParseXHtml() -Snippet hat das HTML -Tag entfernt, da der Stil direkt auf das p -Tag angewendet werden kann.
  3. Die Eigenschaft inline 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:

    
kuujinbo 25.03.2016, 04:28
quelle
0
%Vor%

Alternative zu utf8:

%Vor%     
Pablo G. González 20.02.2018 19:35
quelle