Ich benutze Itext-Bibliothek für Android zum Konvertieren von HTML in PDF, die gut funktioniert, aber bei bestimmten Dingen ist es nicht richtig zu analysieren. Ich möchte ein gepunktetes Trennzeichen mit roter Farbe erstellen, aber es gibt mir immer ein durchgezogenes Trennzeichen mit dunkelgrauer Farbe.
Mein html-Tag ist
%Vor%Mein Conversion-Code
%Vor%Ich bin ein .NET Entwickler, also ist der Code in C #. Aber Sie sollten in der Lage sein, folgendes einfach zu übersetzen.
iText ist eine PDF-erste Bibliothek, und [X]HTML
parsing ist ziemlich komplex, daher ist es in dieser Hinsicht nicht voll funktionsfähig. Wenn Sie [X]HTML
analysieren und die Dinge nicht so laufen, wie Sie es für bestimmte Tags erwarten, sollten Sie folgende grundlegende Schritte ausführen:
XML Worker
unterstützt den Tag: Tags Klasse . Wie auch immer, hier ist ein einfaches Beispiel, um loszulegen. Zuerst der benutzerdefinierte Tag-Prozessor:
%Vor% Der Großteil des Codes wird direkt aus der vorhandenen Quelle übernommen, mit Ausnahme der Prüfungen für CSS.Property.BORDER_BOTTOM_STYLE
und CSS.Property.BORDER_BOTTOM_COLOR
, um den Rahmenstil und die Farbe festzulegen, wenn sie im Attribut <hr>
style
inline sind.
Dann fügen Sie den oben genannten benutzerdefinierten Tag-Prozessor zum XML-Worker TagProcessorFactory
:
Zu beachten ist, dass der CSS-Parser von iText, obwohl wir die Kurzschrift border
inline verwenden, intern die Stile all festlegt. Das heißt, Sie können einen der vier Longhand-Styles verwenden, um dies zu überprüfen - ich habe zufällig CSS.Property.BORDER_BOTTOM_STYLE
und CSS.Property.BORDER_BOTTOM_COLOR
verwendet.
Das resultierende PDF:
Sie können ein div ohne oder mit einem beliebigen Inhalt anstelle einer hr verwenden und diesem div einen Rahmenstil geben, ich bin mir sicher, dass es in Ihrem Fall funktioniert.