Asiatische Zeichen in PDF-Dokumenten fehlerhaft

Hallo,

ich baue gerade einen Shop auf Chinesisch; d.h. die Storefront als auch Artikel etc. sind auf Chinesisch. Das läuft soweit alles, auch in E-Mails ist alles ok; Probleme machen aber PDFs. Hier werden chinesische Schriftzeichen nur als Quadrate angezeigt.

Grundsätzlich werden bei mir chinesische Zeichen in PDFs korrekt angezeigt (wenn ich bspw. selbst ein PDF aus Word erstelle oder irgendwo runterlade).

Ich habe testweise auch japanische Zeichen getestet, auch diese werden in den Shopware-PDFs falsch dargestellt. Russische Zeichen dagegen sind korrekt.

Das Dokumenten-Template ist als UTF8 gespeichert, ebenso ist die Zeichencodierung im Template auf UTF8 eingestellt.

Weiß jemand, ob sich das noch irgendwie beheben lässt?

Ja, vor diesem Problem stand ich auch einmal. Allerdings bin ich mir nicht mehr sicher, was genau alles ich getan habe. Shopware nutzt Mpdf. Wie man bei Mpdf chinesische Zeichen anzeigen lassen kann, findet man z.B. hier: php - mpdf not supporting arabic and chinese fonts - Stack Overflow

Die Datei liegt bei Shopware hier: shopware/config.php at 5.3 · shopware/shopware · GitHub

Dort müsstest du die entsprechenden Einstellungen vornehmen. Korrigiert mich wenn ich falsch liege, aber soweit ich weiß, geht das nicht via Plugin, daher muss man diese Datei leider direkt bearbeiten.

Viele Grüße

1 Like

Vielen Dank, habe es damit hinbekommen. Falls noch jemand Probleme hat, hier mein Weg:

  1. Lösung von stackoverflow in der mPDF engine/Library/Mpdf/ config.php ändern:
  • $this->autoScriptToLang = true; /* Standard = false
  • $this->autoLangToFont = true; /* Standard = false
  • $this ->allow_charset_conversion = false; /* Standard = true; im Kommentar darunter erwähnt
  1. Wie im mPDF-Manual auf Seite 19 beschrieben, die Schriftarten Sun-ExtA und -ExtB hier herunterladen und in seine Shopware-Installation hochladen (/engine/Library/Mpdf/ttfonts).
  2. Wie auf Github beschrieben, die neuen Fonts im fontdata-Array einbinden (Punkt 2):
"sun-exta" => array(
     'R' => "Sun-ExtA.ttf",
  ),
  "sun-extb" => array(
     'R' => "Sun-ExtB.ttf",
  )

Alleine die Lösung von stackoverflow hat bei mir nichts bewirkt. Ob man nun alle 3 Punkte anfassen muss oder nur den 2. oder 3. oder 2. und 3. habe ich nicht getestet.

1 Like

Guten Abend,

Das Problem mit den Schriftzeichen auf Rechnungen ist wieder da. Ich hatte es bereits vor Jahren gelöst, aber nach einem Update besteht es wieder.

Drittlandsrechnung spuckt mir derzeit keine japanischen Schriftzeichen aus. Im Backend werden sie allerdings dargestellt. Gerne würde ich auch alle andern Sprachen dargestellt bekommen, da wir im kleinen Stil international verkaufen.

Leider habe ich Euren Weg nicht ganz verstanden. 

  1. Ich habe Sun-ExtA und -ExtB in den ttfonts Ordner kopiert.

  2. engine/Library/Mpdf/ config.php   existiert nicht mehr in 5.5.10. Muss der Code in /config.php rein, da default.php beim Update überschrieben wird?

$this->autoScriptToLang = true; /* Standard = false
$this->autoLangToFont = true; /* Standard = false
$this ->allow_charset_conversion = false; /* Standard = true;

und wo kommt das hier hin?
“sun-exta” => array(
     ‘R’ => “Sun-ExtA.ttf”,
  ),
  “sun-extb” => array(
     ‘R’ => “Sun-ExtB.ttf”,
  )

 

Wie genau soll die config.php aussehen?

Das ist meine config.php:

<?php return array (
  'db' =\>   array (     'host' =\> 'localhost',     'port' =\> 'xxxx',     'username' =\> 'xxxxxx',     'password' =\> 'xxxxxx',     'dbname' =\> 'xxxx',   ), ); Wäre genial wenn mir jemand das einfügt. Danke im Vorraus

Du brauchst eigentlich nur noch die Schriften in den Ordner kopieren und dann die config.php anpassen: +

  array (

    'host' => 'database',

    'port' => '3306',

    'username' => 'root',

    'password' => 'root',

    'dbname' => 'latest',

  ),

    'mpdf' => [

        'defaultConfig' => [

            'autoScriptToLang' => true,

            'autoLangToFont' => true,

            'allow_charset_conversion' => true,

            'fontdata' => [

                'sun-exta' => [

                    'R' => 'Sun-ExtA.ttf',

                    ],

                'sun-extb' => [

                    'R' => 'Sun-ExtB.tff',

                    ],

                ],

        ],

    ]

);

 

1 Like

Danke Moritz für die super schnelle Hilfe!! Thumb-Up