Inline-CSS für hr wurde beim Konvertieren von HTML in PDF mithilfe der iText-Bibliothek nicht angewendet

8

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%     
Vishwajit Palankar 25.11.2016, 10:33
quelle

2 Antworten

4

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:

  1. Überprüfen XML Worker unterstützt den Tag: Tags Klasse .
  2. Wenn das Tag unterstützt wird, was in diesem Fall der Fall ist, sehen Sie sich die Standardimplementierung an. Hier ist es von der die HorizontalRule-Klasse . Wir sehen jedoch, dass es keine Unterstützung für Ihren Anwendungsfall gibt. Ein Weg also ist, diesen Code als Blueprint zu verwenden. (Folgt unten) Sie können auch von der spezifischen Tag-Klasse erben und die End () -Methode außer Kraft setzen, wie hier getan. So oder so, Sie implementieren lediglich einen benutzerdefinierten Tag-Prozessor.
  3. Wenn der Tag nicht unterstützt, müssen Sie Ihren eigenen benutzerdefinierten Tag Prozessor rollen durch Erben von AbstractTagProcessor .

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 :

hinzu %Vor%

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:

    
kuujinbo 02.12.2016 00:14
quelle
0

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.

    
Nikunj Sardhara 05.12.2016 05:18
quelle

Tags und Links