Schriftart der PDF Belege (Rechnung, usw.) ändern

also wer eine andere Schriftart / Font (als die Standard Schrift Arial) in den PDF Dokumenten (Rechnung, Lieferschein, Gutschrift, …) verwenden muss oder will, kann dies relativ einfach tun :slight_smile: nach langem Suchen hab ich dann doch herausgefunden wie es geht :sunglasses: wer lesen kann ist klar im Vorteil :smiley: ./engine/Library/Mpdf/README.txt hier mal ein einfaches Beispiel für die Schriftart “Ubuntu” zuerst die Schriftart Dateien aus dem Netz laden und ev. umbenennen, z.B.: ubuntu.ttf (Normal) ubuntub.ttf (Bold) ubuntui.ttf (Italic) ubuntubi.ttf (Bold & Italic) dann auf den Server, in das Verzeichnis: ./engine/Library/Mpdf/ttfonts dann die Datei ./engine/Library/Mpdf/config_fonts.php bearbeiten und das Font-Array hinzufügen, z.B. $this-\>fontdata = array( ... ... ... "ubuntu" =\> array( 'R' =\> "ubuntu.ttf", 'B' =\> "ubuntub.ttf", 'I' =\> "ubuntui.ttf", 'BI' =\> "ubuntubi.ttf", ) ); DAS wars - ab sofort ist es dann möglich via CSS den Body-Style tag die “font-family” mit fallback zu ändern, z.B.: ############### width:100%; font-family: Ubuntu, Verdana, Arial, Helvetica, sans-serif; font-size:12px; ############### Ich hoffe, das ist für jemand da draussen nutzbar, ich habe leider viele Stunden verplempert mit der Suche L.G. aus Wien

1 Like

Hallo Erich, vielen Dank für den Hinweis. Nun bleibt mir aber leider noch eine Frage: [quote=„Erich Fuchs“] DAS wars - ab sofort ist es dann möglich via CSS den Body-Style tag die „font-family“ mit fallback zu ändern, z.B.: ############### width:100%; font-family: Ubuntu, Verdana, Arial, Helvetica, sans-serif; font-size:12px; ############### [/quote] Wo finde ich die CSS für die PDF-Dokumente? Vielen Dank, Almute

[quote=“almute”]Hallo Erich, vielen Dank für den Hinweis. Nun bleibt mir aber leider noch eine Frage: [quote=“Erich Fuchs”] DAS wars - ab sofort ist es dann möglich via CSS den Body-Style tag die “font-family” mit fallback zu ändern, z.B.: ############### width:100%; font-family: Ubuntu, Verdana, Arial, Helvetica, sans-serif; font-size:12px; ############### [/quote] Wo finde ich die CSS für die PDF-Dokumente? Vielen Dank, Almute[/quote] Hallo Du findest das hier: Gruss Cyril

Ich habe das mit FontAwesome probiert, aber die Dokumente werden nur mit Rechtecken ausgegeben.

Selbst wenn auch andere Font-Familien eingebunden sind.

Und wichtig: Man muss unbedingt die Groß-/Kleinschreibung beachten, sonst erkennt die CSS Klasse eine neue Schrift nicht :slight_smile:

Ein Hinweis noch: die ./engine/Library/Mpdf/ config_fonts.php  ist nicht updatesicher.

Beim Update von SW 5.2 -> 5.3 wurde diese überschrieben.

Also auf dem Schirm behalten, dass man die Anpassungen nochmal schnell machen muss (nur in der Datei, andere Einstellungen blieben verschont).

Gibt es eine Lösung die Datei config_fonts.php for Updates zu schützen bzw. zusätzliche Configs anderweitig abzulegen?

seit 5.5.x wurde MPDF auf die neueste Version umgestellt -> eine neue Schriftart muss nun in die /engine/Shopware/Configs/Default.php - für Schriftart Ubuntu z.B.

    'mpdf' => [
        // Passed to \Mpdf\Mpdf::__construct:
        'defaultConfig' => [
            'tempDir' => $this->getCacheDir() . '/mpdf/',
            'fontDir' => $this->DocPath('engine_Library_Mpdf_ttfonts_'),
            'fonttrans' => [
                'helvetica' => 'arial',
                'verdana' => 'arial',
                'times' => 'timesnewroman',
                'courier' => 'couriernew',
                'trebuchet' => 'arial',
                'comic' => 'arial',
                'franklin' => 'arial',
                'albertus' => 'arial',
                'arialuni' => 'arial',
                'zn_hannom_a' => 'arial',
                'ocr-b' => 'ocrb',
                'ocr-b10bt' => 'ocrb',
                'damase' => 'mph2bdamase',
            ],
            'fontdata' => [
                'arial' => [
                    'R' => 'arial.ttf',
                    'B' => 'arialbd.ttf',
                    'I' => 'ariali.ttf',
                    'BI' => 'arialbi.ttf',
                ],
                'couriernew' => [
                    'R' => 'cour.ttf',
                    'B' => 'courbd.ttf',
                    'I' => 'couri.ttf',
                    'BI' => 'courbi.ttf',
                ],
                'georgia' => [
                    'R' => 'georgia.ttf',
                    'B' => 'georgiab.ttf',
                    'I' => 'georgiai.ttf',
                    'BI' => 'georgiaz.ttf',
                ],
                'timesnewroman' => [
                    'R' => 'times.ttf',
                    'B' => 'timesbd.ttf',
                    'I' => 'timesi.ttf',
                    'BI' => 'timesbi.ttf',
                ],
                'verdana' => [
                    'R' => 'verdana.ttf',
                    'B' => 'verdanab.ttf',
                    'I' => 'verdanai.ttf',
                    'BI' => 'verdanaz.ttf',
                ],
                'ubuntu' => [
                    'R' => 'ubuntu.ttf',
                    'B' => 'ubuntub.ttf',
                    'I' => 'ubuntui.ttf',
                    'BI' => 'ubuntuz.ttf',
                ],
            ],
        ],
    ],

 

1 Like

@Erich Fuchs schrieb:

seit 5.5.x wurde MPDF auf die neueste Version umgestellt -> eine neue Schriftart muss nun in die /engine/Shopware/Configs/Default.php - für Schriftart Ubuntu z.B.

‚mpdf‘ => [
// Passed to \Mpdf\Mpdf::_construct:
‚defaultConfig‘ => [
‚tempDir‘ => $this->getCacheDir() . ‚/mpdf/‘,
‚fontDir‘ => $this->DocPath('engine_Library_Mpdf_ttfonts
’),
‚fonttrans‘ => [
‚helvetica‘ => ‚arial‘,
‚verdana‘ => ‚arial‘,
‚times‘ => ‚timesnewroman‘,
‚courier‘ => ‚couriernew‘,
‚trebuchet‘ => ‚arial‘,
‚comic‘ => ‚arial‘,
‚franklin‘ => ‚arial‘,
‚albertus‘ => ‚arial‘,
‚arialuni‘ => ‚arial‘,
‚zn_hannom_a‘ => ‚arial‘,
‚ocr-b‘ => ‚ocrb‘,
‚ocr-b10bt‘ => ‚ocrb‘,
‚damase‘ => ‚mph2bdamase‘,
],
‚fontdata‘ => [
‚arial‘ => [
‚R‘ => ‚arial.ttf‘,
‚B‘ => ‚arialbd.ttf‘,
‚I‘ => ‚ariali.ttf‘,
‚BI‘ => ‚arialbi.ttf‘,
],
‚couriernew‘ => [
‚R‘ => ‚cour.ttf‘,
‚B‘ => ‚courbd.ttf‘,
‚I‘ => ‚couri.ttf‘,
‚BI‘ => ‚courbi.ttf‘,
],
‚georgia‘ => [
‚R‘ => ‚georgia.ttf‘,
‚B‘ => ‚georgiab.ttf‘,
‚I‘ => ‚georgiai.ttf‘,
‚BI‘ => ‚georgiaz.ttf‘,
],
‚timesnewroman‘ => [
‚R‘ => ‚times.ttf‘,
‚B‘ => ‚timesbd.ttf‘,
‚I‘ => ‚timesi.ttf‘,
‚BI‘ => ‚timesbi.ttf‘,
],
‚verdana‘ => [
‚R‘ => ‚verdana.ttf‘,
‚B‘ => ‚verdanab.ttf‘,
‚I‘ => ‚verdanai.ttf‘,
‚BI‘ => ‚verdanaz.ttf‘,
],
‚ubuntu‘ => [
‚R‘ => ‚ubuntu.ttf‘,
‚B‘ => ‚ubuntub.ttf‘,
‚I‘ => ‚ubuntui.ttf‘,
‚BI‘ => ‚ubuntuz.ttf‘,
],
],
],
],

 

Besser in die config.php packen - da die ja auch bei einem Update nicht überschrieben wird. Die default.php liefert ja nur die Default-Werte, die können per config.php erweitert werden. Das ist dann auch Updatesicher :) 

1 Like

ja perfekt - gehört in die config.php

1 Like

Hallo und Hilfe :slight_smile:

Nach dem Update auf 5.5.3 ist nun der Ordner /engine/Libary/Mpdf leer, einzig der Unterordner /ttfonts mit den jeweiligen ttf-Dateien existiert noch darin. Da wir früher auch über die config_fonts.php bei mpdf Schriften nachgeladen haben, sind diese nun in der /engine/Shopware/Configs/Default.php nachgeladen - aber: die Schriften werden nicht genommen. Konkret geht es um die Open Sans. Wie kann ich den Fehler weiter eingrenzen und v.a. in welche config.php kann ich das updatesicher schreiben? Hier mal zur Übersicht:

  1. mpdf Config in der Default.php um OpenSans erweitert: 

    ‚mpdf‘ => [
    // Passed to \Mpdf\Mpdf::_construct:
    ‚defaultConfig‘ => [
    ‚tempDir‘ => $this->getCacheDir() . ‚/mpdf/‘,
    ‚fontDir‘ => $this->DocPath('engine_Library_Mpdf_ttfonts
    ’),
    ‚fonttrans‘ => [
    ‚helvetica‘ => ‚arial‘,
    ‚verdana‘ => ‚arial‘,
    ‚times‘ => ‚timesnewroman‘,
    ‚courier‘ => ‚couriernew‘,
    ‚trebuchet‘ => ‚arial‘,
    ‚comic‘ => ‚arial‘,
    ‚franklin‘ => ‚arial‘,
    ‚albertus‘ => ‚arial‘,
    ‚arialuni‘ => ‚arial‘,
    ‚zn_hannom_a‘ => ‚arial‘,
    ‚ocr-b‘ => ‚ocrb‘,
    ‚ocr-b10bt‘ => ‚ocrb‘,
    ‚damase‘ => ‚mph2bdamase‘,
    ],
    ‚fontdata‘ => [
    ‚arial‘ => [
    ‚R‘ => ‚arial.ttf‘,
    ‚B‘ => ‚arialbd.ttf‘,
    ‚I‘ => ‚ariali.ttf‘,
    ‚BI‘ => ‚arialbi.ttf‘,
    ],
    ‚couriernew‘ => [
    ‚R‘ => ‚cour.ttf‘,
    ‚B‘ => ‚courbd.ttf‘,
    ‚I‘ => ‚couri.ttf‘,
    ‚BI‘ => ‚courbi.ttf‘,
    ],
    ‚georgia‘ => [
    ‚R‘ => ‚georgia.ttf‘,
    ‚B‘ => ‚georgiab.ttf‘,
    ‚I‘ => ‚georgiai.ttf‘,
    ‚BI‘ => ‚georgiaz.ttf‘,
    ],
    ‚timesnewroman‘ => [
    ‚R‘ => ‚times.ttf‘,
    ‚B‘ => ‚timesbd.ttf‘,
    ‚I‘ => ‚timesi.ttf‘,
    ‚BI‘ => ‚timesbi.ttf‘,
    ],
    ‚verdana‘ => [
    ‚R‘ => ‚verdana.ttif‘,
    ‚B‘ => ‚verdanab.ttf‘,
    ‚I‘ => ‚verdanai.ttf‘,
    ‚BI‘ => ‚verdanaz.ttf‘,
    ],
    ‚OpenSans‘ => [
    ‚R‘ => ‚OpenSans-Light.ttf‘,
    ‚B‘ => ‚OpenSans-Semibold.ttf‘,
    ‚I‘ => ‚OpenSans-LightItalic.ttf‘,
    ‚BI‘ => ‚OpenSans-Semibolditalic.ttf‘,
    ],
    ],
    ‚format‘ => ‚A4‘,
    ],
    ],

 

  1. Die ttf-Dateien liegen in /engine/Libary/Mpdf/ttfonts - Alle Rechte unverändert, passen.

  2. Im CSS für den Dokumentenbody steht seit Jahr und Tag:  font-family: ‚OpenSans‘, sans-serif;

und wenn ich das PDF rendern lasse, bekomme ich ein PDF mit Arial :frowning: Es gab bei mpdf mal so ein Setting, dass es nur mit Core-Fonts arbeitet, das konnte ich aber nirgends finden. Wer kann helfen?

 

 

@sommunikation Hat bei mir aber auf 5.5.3 nach deiner Anleitung funktioniert nachdem ich den Cache geleert habe!

@Moritz Naczenski schrieb:

Besser in die config.php packen - da die ja auch bei einem Update nicht überschrieben wird. Die default.php liefert ja nur die Default-Werte, die können per config.php erweitert werden. Das ist dann auch Updatesicher :) 

Wie genau müsste die config.php mit dem oben genannten Beispiel (Ubuntu Font) aussehen? Per Default.php bekomme ich das Einbinden der zusätlichen Schriftart hin, aber nicht per config.php

 [
    'username' => 'username',
    'password' => 'password',
    'host' => 'localhost',
    'port' => '3306',
    'dbname' => 'databasename',
  ],

  'mpdf' => [
        // Passed to \Mpdf\Mpdf::__construct:
        'defaultConfig' => [
            'tempDir' => $this->getCacheDir() . '/mpdf/',
            'fontDir' => $this->DocPath('engine_Library_Mpdf_ttfonts_'),
            'fonttrans' => [
                'helvetica' => 'arial',
                'verdana' => 'arial',
                'times' => 'timesnewroman',
                'courier' => 'couriernew',
                'trebuchet' => 'arial',
                'comic' => 'arial',
                'franklin' => 'arial',
                'albertus' => 'arial',
                'arialuni' => 'arial',
                'zn_hannom_a' => 'arial',
                'ocr-b' => 'ocrb',
                'ocr-b10bt' => 'ocrb',
                'damase' => 'mph2bdamase',
            ],
            'fontdata' => [
                'arial' => [
                    'R' => 'arial.ttf',
                    'B' => 'arialbd.ttf',
                    'I' => 'ariali.ttf',
                    'BI' => 'arialbi.ttf',
                ],
                'couriernew' => [
                    'R' => 'cour.ttf',
                    'B' => 'courbd.ttf',
                    'I' => 'couri.ttf',
                    'BI' => 'courbi.ttf',
                ],
                'georgia' => [
                    'R' => 'georgia.ttf',
                    'B' => 'georgiab.ttf',
                    'I' => 'georgiai.ttf',
                    'BI' => 'georgiaz.ttf',
                ],
                'timesnewroman' => [
                    'R' => 'times.ttf',
                    'B' => 'timesbd.ttf',
                    'I' => 'timesi.ttf',
                    'BI' => 'timesbi.ttf',
                ],
                'verdana' => [
                    'R' => 'verdana.ttf',
                    'B' => 'verdanab.ttf',
                    'I' => 'verdanai.ttf',
                    'BI' => 'verdanaz.ttf',
                ],
                'ubuntu' => [
                    'R' => 'ubuntu.ttf',
                    'B' => 'ubuntub.ttf',
                    'I' => 'ubuntui.ttf',
                    'BI' => 'ubuntuz.ttf',
                ],
            ],
        ],
  ],

];

@Hille schrieb:

@Moritz Naczenski schrieb:

Besser in die config.php packen - da die ja auch bei einem Update nicht überschrieben wird. Die default.php liefert ja nur die Default-Werte, die können per config.php erweitert werden. Das ist dann auch Updatesicher :) 

Wie genau müsste die config.php mit dem oben genannten Beispiel (Ubuntu Font) aussehen? Per Default.php bekomme ich das Einbinden der zusätlichen Schriftart hin, aber nicht per config.php

2 Likes

Für alle, die bis hierhin gelesen haben :slight_smile: noch ein einfaches Beispiel für die Anpassung der config.php:
 

 [
        'defaultConfig' => [
            'fontDir' => [
                // the default font dir - leave this for use of standard fonts such as Arial etc.
                $this->DocPath('engine_Library_Mpdf_ttfonts_'),
                // your custom font dir
                $this->DocPath('themes_Frontend_Hvtp_documents__public_src_ttfonts'),
            ],
            // define the relation between font name in CSS, e.g. 'opensans' and the associated TTF files
            'fontdata' => [
                'opensans' => [
                    'R' => 'OpenSans-Regular.ttf',
                    'B' => 'OpenSans-Bold.ttf',
                    'I' => 'OpenSans-Italic.ttf',
                    'BI' => 'OpenSans-BoldItalic.ttf',
                ],
                'fontawesome' => [
                    'R' => 'fontawesome.ttf',
                ]
            ],
        ],
    ],

...

];

Ich würde empfehlen, die TTF-Dateien für die Fonts in ein Unterverzeichnis im Custom-Theme zu legen, wie in diesem Beispiel. Damit kannst Du alle in der default.php schon eingestellten Fonts weiterbenutzen, es werden lediglich die aus der config.php zusätzlich definiert.

1 Like