[Gelöst][entity_print] mit dompdf: Inkompatibel zu Font Awesome Icons?
am 05.05.2021 - 08:39 Uhr in
Hallo,
ich versuche das Modul "Entity Print" zum Laufen zu kriegen. Verwende dazu die PDF-Engine "dompdf".
Im Grunde scheint es mir zwar gelungen zu sein, nur wenn ich von Inhaltstypen mit Font Awesome Icons eine PDF generieren möchte, erhalte ich folgende Fehlermeldung:
Fehler beim Erzeugen des Dokuments: Failed to generate PDF: '__fa_primary_color' is not a valid CSS2 property., '__fa_secondary_color' is not a valid CSS2 property., '__fa_primary_color' is not a valid CSS2 property., '__fa_secondary_color' is not a valid CSS2 property., '__fa_primary_color' is not a valid CSS2 property., '__fa_secondary_color' is not a valid CSS2 property., '__fa_primary_color' is not a valid CSS2 property., '__fa_secondary_color' is not a valid CSS2 property., '__fa_primary_color' is not a valid CSS2 property., '__fa_secondary_color' is not a valid CSS2 property., '__fa_primary_color' is not a valid CSS2 property., '__fa_secondary_color' is not a valid CSS2 property., '__fa_primary_color' is not a valid CSS2 property., '__fa_secondary_color' is not a valid CSS2 property.
Bzw. folgende Fehlermeldung in den Protokollnachrichten (watchdog):
Drupal\entity_print\PrintEngineException: Failed to generate PDF: '__fa_primary_color' is not a recognized CSS property., '__fa_secondary_color' is not a recognized CSS property., '__fa_primary_color' is not a recognized CSS property., '__fa_secondary_color' is not a recognized CSS property., '__fa_primary_color' is not a recognized CSS property., '__fa_secondary_color' is not a recognized CSS property., '__fa_primary_color' is not a recognized CSS property., '__fa_secondary_color' is not a recognized CSS property., '__fa_primary_color' is not a recognized CSS property., '__fa_secondary_color' is not a recognized CSS property., '__fa_primary_color' is not a recognized CSS property., '__fa_secondary_color' is not a recognized CSS property., '__fa_primary_color' is not a recognized CSS property., '__fa_secondary_color' is not a recognized CSS property. in Drupal\entity_print\Plugin\EntityPrint\PrintEngine\DomPdf->send() (Zeile 192 in /…/drupal/modules/entity_print/src/Plugin/EntityPrint/PrintEngine/DomPdf.php).
Ich habe mehrere Versionen von dompdf ausprobiert (0.8.0, 0.8.3, 0.8.5, 1.0.2) ohne Erfolg - bei allen Versionen erscheint der gleiche Fehler.
Bei Inhaltstypen ohne Font Awesome Icons funktioniert es aber und es wird eine PDF generiert - ohne jegliche Fehermeldung. Aktuell aktiv habe ich dompdf 1.0.2.
Da der Fehler unabhängig von der dompdf Version auftritt, gehe ich davon aus, dass es eher am Modul "entity_print" liegen könnte.
Ich habe auch schon in meinen CSS-Dateien nach der angemahnten CSS-Anweisung geschaut und falls vorhanden entfernt. Hat auch nichts gebracht, weil diese Eigenschaft vermutlich vom Javascript von Font Awesome erzeugt wird.
Meine entity_print Einstellungen:
- Standard-CSS aktivieren: Nein (keine Änderung wenn aktiv oder inaktiv - Fehler bleibt gleich)
- Download erzwingen: Nein
- PDF-Schnittstelle: Dompdf
- Papierformat: A4
- Papierausrichtung: Hochformat
- HTML5-Verarbeitungsroutine aktivieren: Ja
- Protokoll deaktivieren: Nein
- Externe-Internetadressen aktivieren: Ja
- SSL-Konfiguration (CA-Datei, Peer verifizieren, Peer-Name verifizieren): Nichts ausgewählt/alles leer
- HTTP-Authentifizierung (Benutzername, Passwort): alles leer
- EPub: Nichts ausgewählt
- Word Document: Nichts ausgewählt
Verwendete Versionen:
- Drupal: 8.9.14
- Entity Print: 8.x-2.2
- Font Awesome Icons: 8.x-2.18
- PHP: 7.4.14
- Webserver: Apache
Hat jemand eine Idee, was ich hier tun kann, um den Fehler zu umgehen oder zu beheben?
Bin mit meinem Latein am Ende.
Vielen Dank im Voraus für eure Hilfe.
- Anmelden oder Registrieren um Kommentare zu schreiben
Auch wenn ich in einem
am 05.05.2021 - 11:02 Uhr
Auch wenn ich in einem Javascript versuche, die CSS-Eigenschaft zu "löschen", kommt trotzdem der Fehler.
Habe folgendes versucht:
jQuery('.fontawesome-icon').css({'--fa-primary-color': '', '--fa-secondary-color': ''});
jQuery('.fontawesome-icon svg').css({'--fa-primary-color': '', '--fa-secondary-color': ''});
jQuery('.fontawesome-icon svg path').css({'--fa-primary-color': '', '--fa-secondary-color': ''});
Das löscht zwar brav die CSS-Eigenschaften, aber vermutlich zu spät für die PDF-Generierung. Also clientseitig ist da vermutlich nichts zu reißen.
Ich habe das eigentliche
am 06.05.2021 - 09:49 Uhr
Ich habe das eigentliche Problem zwar nicht lösen können, habe aber einen Workaround gefunden.
Das Modul erstellt einen eigenen View-Mode: PDF.
Diesen wollte ich nutzen, wie in der Anleitung des Moduls auch beschrieben und einfach die Felder mit Font Awesome aussparen, damit ich den Fehler umgehen kann.
Schön und gut, aber das klappte nicht. Aus irgendeinem Grund verwendete das Modul immer nur den View-Mode "full" für die Ausgabe. Das habe ich durch folgenden Befehl herausgefunden: "http://example.com/print/pdf/node/NODE-ID/debug" und der Verwendung des Web-Developer-Tools in Firefox.
Dann dachte ich, ich versuche mal einen Patch, um den View-Mode selbst zu wählen: https://www.drupal.org/project/entity_print/issues/2884806#comment-13909213
Das funktierte aber auch nicht - führte nur zu weiteren Fehlern.
Dann habe ich mir die Original-Dateien angesehen und herausgefunden, dass zumindest in meinem Fall, die Schreibweise des referenzierten View-Modes falsch ist.
In der Datei ContentEntityRenderer.php (Verzeichnis: modules/entity_print/src/Renderer) in der Zeile 82 steht:
<?php
$view_mode = 'pdf';
?>
In meinem Fall wird der View-Mode allerdings "PDF" geschrieben. Also habe ich es abgeändert:
<?php
$view_mode = 'PDF';
?>
Danach habe ich ein entsprechendes Twig-Template in meinem Themes-Ordner hinterlegt: node--content-type-name--PDF.html.twig
Und siehe da: Es funktioniert! Layout kann nun endlich gesteuert werden und der Font Awesome Fehler umgangen.