• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Umlaute bei der Nutzung der FPDF - Bibliothek

Ich benutze die FPDF Klasse um aus PHP - Heraus PDF-Formulare zu erstellen. Umlaute werden dabei nicht korrekt ausgegeben. Es schien zu funktionieren, wenn ich den auszugebenden Text in die Funktion utf8_decode() packe. Nun ist es aber erstaunlicherweise so, dass dies bei manchen Texten zum erwünschten Erfolg führt, bei anderen Nicht. Siehe da, der Code
Code:
 $this->SetXY(10, 100);
 $this->SetFont('Arial', 'B', 11);
 $this->Cell(180, 5, utf8_decode("für den Personenkreis der Menschen mit wesentlicher geistiger"), 0, 2, 'C', 0);
 $this->Cell(180, 5, utf8_decode("und / oder körperlicher Behinderung"), 0, 2, 'C', 0);
 $this->Cell(180, 5, utf8_decode("zur Erstellung eines Gesamtplanes gemäß § 58 SGB XII für"), 0, 2, 'C', 0);

Verursacht folgende Ausgabe:

für den Personenkreis der Menschen mit wesentlicher geistiger
und / oder ko?rperlicher Behinderung
zur Erstellung eines Gesamtplanes gema?ß § 58 SGB XII fu?r

Erstaunlicherweise wird weiter unten im Formular sowohl das "ß" als auch das "ä" korrekt ausgegeben. Aber eben nicht überall. Ich kann mir gerade nicht erklären warum es an einer Stelle klappt und an anderer nicht?...
 
Nun habe ich auf folgende Forumsdiskussion
http://fpdf.de/forum/viewtopic.php?t=901
hin statt utf8_decode folgendes verwendet:

Code:
 private function conv_chars($conv) {
        // Herzlichen Dank an ppclover vom FPDF Forum
        $conv = str_replace("Ä", chr(196), $conv);
        $conv = str_replace("ä", chr(228), $conv);
        $conv = str_replace("Ö", chr(214), $conv);
        $conv = str_replace("ö", chr(246), $conv);
        $conv = str_replace("Ü", chr(220), $conv);
        $conv = str_replace("ü", chr(252), $conv);
        $conv = str_replace("ß", chr(223), $conv);
        $conv = str_replace("'", chr(39), $conv);
        $conv = str_replace("´", chr(180), $conv);
        $conv = str_replace("`", chr(96), $conv);
    return $conv;
    }
und dann eben z.B.

Code:
$this->Cell(80, 4, $this->conv_chars("Anschrift des Leistungsträgers:"), 0, 2, 'L', 1);

... aber leider mit dem gleichen Ergebnis wie zuvor.
 
Und was sagt ihr dazu:

für den Personenkreis der Menschen mit wesentlicher geistiger
und / oder körperlicher Behinderung
und / oder ko?rperlicher Behinderung
zur Erstellung eines Gesamtplanes gema?ß § 58 SGB XII fu?r

:)
Die Lösung ist folgende: die Zeilen, welche Umlaute korrekt darstellen, habe ich per Hand getippt. Die anderen habe ich aus der PDF-Vorlage des Dokuments, welches ich in meiner PHPO-Anwendung nachbilde, per COPY / PASTE ins Skript eingefügt.

Und hier werden eben scheinbar nicht nur die puren Zeichen, sondern evtl. auch unsichtbare Hintergrundinformationen kopiert, die dazu führen, dass utf8_decode nicht funzt (da FPDF ISO 8859-1 statt utf-8 erwartet).

Für alle die mal mit dem gleichen Problem zu kämpfen haben.
 
Oben