Contao-Camp 2024
Ergebnis 1 bis 13 von 13

Thema: TCPDF und Sonderzeichen [solved]

  1. #1
    Contao-Nutzer
    Registriert seit
    24.02.2016.
    Beiträge
    183

    Standard TCPDF und Sonderzeichen [solved]

    Hallo zusammen,
    mir ist in Zusammenhang mit Isotope Ecommerce aufgefallen, dass gewisse Sonderzeichen beim Generieren vom PDF Rechnungen nicht erkannt und als '?' ausgegeben werden. Aus einem Issue heraus, wurde mir gesagt, das Contao TCPDF als Library verwendet. Auf der Website von TCPDF wird als Feature folgendes geschrieben: "UTF-8 Unicode and Right-To-Left languages"

    Als konkreter Fall ist der Buchstaben '?' nicht erkannt und als '?' im PDF ausgegeben worden. Nach meinen Recherchen ist dieser Buchstabe aber Teil von UTF-8 Unicode.

    Es kommt doch recht häufig vor, dass solche und ähnliche Zeichen in Namen oder Adressen von FE-Usern vorkommen. Gerade bei einer mehrsprachigen Website sollten die User keine Probleme mit der Erstellung von PDFs aufgrund ihrer Namen haben.

    Ich würde gerne wissen, woran das nun liegen könnte, ob ich mich in meinen Recherchen vertan habe, oder ob es Möglichkeiten gibt diesen Fehler zu beheben. Natürlich ist mir bewusst, dass ich einen anderen PDF-Generator wie z.B. DOMPDF einbinden könnte, jedoch bin ich davon überzeugt, dass ich nicht der einzige mit diesem Problem bin.
    Geändert von Sabaid (09.08.2017 um 08:48 Uhr)

  2. #2
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.612
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Sabaid Beitrag anzeigen
    Als konkreter Fall ist der Buchstaben '?' nicht erkannt und als '?' im PDF ausgegeben worden.
    Passt doch, die Forumsoftware regagiert offenbar genauso auf diese Zeichen
    Um welche(n) Buchstaben geht es wirklich?

  3. #3
    Contao-Nutzer
    Registriert seit
    24.02.2016.
    Beiträge
    183

    Standard

    Zitat Zitat von do_while Beitrag anzeigen
    Passt doch, die Forumsoftware regagiert offenbar genauso auf diese Zeichen
    Um welche(n) Buchstaben geht es wirklich?
    Interessant, in der Vorschau wurde er richtig angezeigt. Ich hab nun den Beitrag bearbeitet, das Zeichen eingefügt, die Vorschau angeschaut in der er dann auch angezeigt wurde und sobald ich dann Änderung speichern drück, wurde der Buchstabe zum '?'.

    Es handelte sich um folgenden Buchstaben: https://de.wikipedia.org/wiki/%C5%81

  4. #4
    Contao-Nutzer
    Registriert seit
    24.02.2016.
    Beiträge
    183

    Standard

    Sowohl im Backend als auch im Frontend wird der Buchstabe richtig dargestellt. Ist mir ein Rätsel, warum es im PDF als '?' dargestellt wird.

  5. #5
    Contao-Urgestein
    Registriert seit
    29.10.2009.
    Ort
    Magdeburg
    Beiträge
    2.020
    Partner-ID
    626
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Sabaid Beitrag anzeigen
    Sowohl im Backend als auch im Frontend wird der Buchstabe richtig dargestellt. Ist mir ein Rätsel, warum es im PDF als '?' dargestellt wird.
    Eine Möglichkeit könnte sein dass die verwendete Schriftart die Zeichen nicht darstellen kann.
    Geändert von webstar (09.08.2017 um 08:39 Uhr) Grund: Typo

  6. #6
    Contao-Nutzer
    Registriert seit
    24.02.2016.
    Beiträge
    183

    Standard

    Zitat Zitat von webstar Beitrag anzeigen
    Eine Möglichkeit könnte sein dass die verwendete Schriftart für Zeichen nicht darstellen kann.
    Vielen Dank, ich hab mir die verwendeten Schriftarten im PDF angeschaut.

    PDF_fonts.png

    FreeSerif ist eine Unicode-Font. Helvetica bzw. Helvetica Bold sind keine. In meinem Template sollte eigentlich Arial vorrangig ausgewählt werden: font-family: Arial, Helvetica, sans-serif
    Doch selbst nachdem ich Helvetica aus dem Styling entfernt habe, wird es immer noch im PDF verwendet. Beim Generieren des PDFs wird scheinbar Arial durch Helvetica ersetzt (siehe Originalschrift).

  7. #7
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.612
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Wahrscheinlich wird der Font Freeserif verwendet, TCPDF hat da eine eigene Einstellung in der
    system/config/tcpdf.php (Contao 3.5)
    bzw. vendor/contao/core-bundle/src/Resources/contao/config/tcpdf.php (Contao 4.4)

  8. #8
    Contao-Nutzer
    Registriert seit
    24.02.2016.
    Beiträge
    183

    Standard

    Zitat Zitat von do_while Beitrag anzeigen
    Wahrscheinlich wird der Font Freeserif verwendet, TCPDF hat da eine eigene Einstellung in der
    system/config/tcpdf.php (Contao 3.5)
    bzw. vendor/contao/core-bundle/src/Resources/contao/config/tcpdf.php (Contao 4.4)
    Dann müsste das doch eigentlich passen. Ich hab nun sogar in der Datenbank geschaut, ob dort vielleicht etwas an der Kodierung geändert wurde, wurde aber richtig eingetragen.
    Ich verwende Contao 3.5.28.

  9. #9
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.612
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Die Fonts für TCPDF sind speziell kompiliert, es sind keine TrueType-Font oder ähnliches.
    Du findest den Font unter vendor/tecnick.com/tcpdf/fonts/freeserif.php

    Im Quellcode sind offenbar die Zeichen alle definiert, hier gibt es ein Array mit Zeichencode und Info-Array.
    Wenn man da mal nach dem Zeichen C5 81 (50561) oder C5 82 (50562) sucht, findet man nichts.
    Also sind diese Zeichen offenbar nicht in dem Font enthalten.

    Es gibt im Internet spezielle Fontkonverter, die einen TrueType-Font für TCPDF umkompilieren.
    Damit könntest Du Dir Dein Arial für TCPDF bereitstellen.

    Ich lese gerade, dass das jetzt auch On-the-Fly gehen soll.
    https://tcpdf.org/docs/fonts/
    https://github.com/tecnickcom/tc-lib-pdf-font

  10. #10
    Contao-Nutzer
    Registriert seit
    24.02.2016.
    Beiträge
    183

    Standard

    Zitat Zitat von do_while Beitrag anzeigen
    Die Fonts für TCPDF sind speziell kompiliert, es sind keine TrueType-Font oder ähnliches.
    Du findest den Font unter vendor/tecnick.com/tcpdf/fonts/freeserif.php

    Im Quellcode sind offenbar die Zeichen alle definiert, hier gibt es ein Array mit Zeichencode und Info-Array.
    Wenn man da mal nach dem Zeichen C5 81 (50561) oder C5 82 (50562) sucht, findet man nichts.
    Also sind diese Zeichen offenbar nicht in dem Font enthalten.

    Es gibt im Internet spezielle Fontkonverter, die einen TrueType-Font für TCPDF umkompilieren.
    Damit könntest Du Dir Dein Arial für TCPDF bereitstellen.

    Ich lese gerade, dass das jetzt auch On-the-Fly gehen soll.
    https://tcpdf.org/docs/fonts/
    https://github.com/tecnickcom/tc-lib-pdf-font
    Wow, nachdem ich Arial umkonvertiert und in der tcpdf config hinterlegt hab, wird das Zeichen angezeigt, vielen Dank!
    Jedoch ist der Fettdruck nun weg. Ich hab die "normale" Arial Font (arial.ttf) hinterlegt, für Fettdruck gibt es ja arialbd.ttf. Wie kann ich da eine "zweite" Schriftart hinterlegen? Hat das was mit dem Unterschied zwischen PDF_FONT_NAME_MAIN und PDF_FONT_NAME_DATA zu tun?

  11. #11
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.612
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Das muss doch bei Freeserif genauso sein, hier gibt es freeserif.* (Normal), freeserifb.* (Bold), freeserifbi.* (Bold, Italic) und freeserifi.* (Italic).
    Habe keine Ahnung, aber wahrscheinlich musst Du nur b, i, bi am Fontnamen anhängen.

  12. #12
    Contao-Nutzer
    Registriert seit
    24.02.2016.
    Beiträge
    183

    Standard

    Zitat Zitat von do_while Beitrag anzeigen
    Das muss doch bei Freeserif genauso sein, hier gibt es freeserif.* (Normal), freeserifb.* (Bold), freeserifbi.* (Bold, Italic) und freeserifi.* (Italic).
    Habe keine Ahnung, aber wahrscheinlich musst Du nur b, i, bi am Fontnamen anhängen.
    Hat hervorragend geklappt, vielen herzlichen Dank!

  13. #13
    Contao-Nutzer
    Registriert seit
    24.02.2016.
    Beiträge
    183

    Standard

    Falls noch wer über diesen Post stolpert: Die Font ist ausschlaggebend für die Größe des generierten PDFs. Eine einzelne A4 Seite ohne Bilder hatte mit Arial bereits 800kb. Je mehr Zeichen von der Schriftart unterstützt werden, desto schneller steigt die Größe des Dokumentes an. Ich habe mich mittlerweile für Liberation Sans als Mittelmaß entschieden, da sehr viele Zeichen unterstützt werden und trotzdem die Größe auf knapp 200kb reduziert werden konnte. Die Original-Dokumente, die Helvetica verwenden, sind ca zwischen 50kb und 80kb. Da die Dokumente zumeist in E-Mails angehängt werden, sollte meiner Meinung nach darauf geachtet werden, dass die Dateigröße so klein wie möglich ausfällt.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •