Erich FuchsErich Fuchs MitgliedKommentare: 10 Danke erhalten: 14 Mitglied seit: Oktober 2014 bearbeitet Februar 2015
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 :)

nach langem Suchen hab ich dann doch herausgefunden wie es geht :sunglasses:

wer lesen kann ist klar im Vorteil :D
./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

Kommentare

  • almutealmute MitgliedKommentare: 71 Danke erhalten: 2 Mitglied seit: Mai 2012
    Hallo Erich,

    vielen Dank für den Hinweis.
    Nun bleibt mir aber leider noch eine Frage:
    Erich Fuchs schrieb:
    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;
    
    ###############
    Wo finde ich die CSS für die PDF-Dokumente?

    Vielen Dank, Almute
  • tradebytradeby MitgliedKommentare: 181 Danke erhalten: 6 Mitglied seit: Dezember 2014
    almute schrieb:
    Hallo Erich,

    vielen Dank für den Hinweis.
    Nun bleibt mir aber leider noch eine Frage:
    Erich Fuchs schrieb:
    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;
    
    ###############
    Wo finde ich die CSS für die PDF-Dokumente?

    Vielen Dank, Almute
    Hallo

    Du findest das hier:
    20876480rd.jpg

    Gruss
    Cyril
  • AndrewAndrew MitgliedKommentare: 129 Danke erhalten: 1 Mitglied seit: Oktober 2015

    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 :-)

  • AndrewAndrew MitgliedKommentare: 129 Danke erhalten: 1 Mitglied seit: Oktober 2015

    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).

  • brixlentbrixlent MitgliedKommentare: 9 Danke erhalten: 0 Mitglied seit: September 2016

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

  • Erich FuchsErich Fuchs MitgliedKommentare: 10 Danke erhalten: 14 Mitglied seit: Oktober 2014

    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',
                    ],
                ],
            ],
        ],
    

     

    Danke von 1Andrew
  • Moritz NaczenskiMoritz Naczenski AdministratorKommentare: 6309 Danke erhalten: 1874 Mitglied seit: September 2013

    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 :) 

    Danke von 1Andrew
  • Erich FuchsErich Fuchs MitgliedKommentare: 10 Danke erhalten: 14 Mitglied seit: Oktober 2014

    ja perfekt - gehört in die config.php

  • sommunikationsommunikation MitgliedKommentare: 32 Danke erhalten: 2 Mitglied seit: September 2012

    Hallo und Hilfe :)

    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',
            ],
        ],

     

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

    3. 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 :( Es gab bei mpdf mal so ein Setting, dass es nur mit Core-Fonts arbeitet, das konnte ich aber nirgends finden. Wer kann helfen?

     

  • ChaosChaos MitgliedKommentare: 44 Danke erhalten: 0 Mitglied seit: Juli 2011

     

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

  • HilleHille MitgliedKommentare: 84 Danke erhalten: 4 Mitglied seit: November 2015

    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

  • Erich FuchsErich Fuchs MitgliedKommentare: 10 Danke erhalten: 14 Mitglied seit: Oktober 2014
    <?php return [ 
    
      'db' => [
        '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',
                    ],
                ],
            ],
      ],
    
    ];

    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

  • vanwittlaervanwittlaer MitgliedKommentare: 323 Danke erhalten: 77 Mitglied seit: September 2015

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

    <?php return [
    
        ...
    
        'mpdf' => [
            '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.

    Danke von 1Moritz Naczenski
Anmelden oder Registrieren, um zu kommentieren.