Martin Müller: Zeichenkodierung in PDF Dokument, das durch FPDF erzeugt wurde

Beitrag lesen

Hallo alle beisammen.
Ich stehe derzeit vor einem Rätsel, dass sich mir nicht ganz erklärlich ist. Und zwar teste ich wie man mit FPDF (www.fpdf.de) über PHP PDF Dateien generiert. Es läuft bisher, nur die Zeichenkodierung nimmt mich irgendwie auf die Schippe.

Also habe ich bisschen rumgesurft, gegoogelt und einiges gefunden, was ich schon wusste wie z.B. http://forum.de.selfhtml.org/archiv/2007/2/t147115/

Natürlich kannte ich mb_detect_encoding schon und wenn ich es auf die Methoden der FPDF anwende, z.B.:

...  
$pdf->Write(10, mb_detect_encoding('Viele liebe Grüße aus NRW'));  
...

Dann erhalte ich als Ergebnis: UTF-8. Schreibe ich aber hingegen:

...  
$pdf->Write(10, 'Viele liebe Grüße aus NRW');  
...

bekomme ich als Ergebnis Viele liebe Grüße aus NRW. Das zu der Nachricht. Vernachlässige ich es einfach mal, die PDF Datei im Browser auszugeben, und schreibe nur mittels echo 'Viele liebe Grüße aus NRW'; in die PHP Datei, in der das PDF generiert wird, wird es wiederrum richtig angezeigt. Also in der PHP Datei ist alles UTF-8, aber sobald ein PDF durch diese PHP Datei generiert wird, ist es kein UTF-8 mehr.

Um das PDF Dokument zu erzeugen, schicke ich aber folgende Header:

header('Content-type: application/pdf; charset=utf-8');  
header('Content-disposition: inline; filename="'. $filename .'"');  
header('Cache-control: private, max-age=0, must-revalidate');  
header('Pragma: public');

$filename wird vorher durch time() ersetzt.

Also auch UTF-8. In meiner Verzweiflung habe ich schon UTF-8 groß geschrieben und sogar bei content-type verschiedene groß und kleinschreibungen probiert, weil es mir einfach nicht klar wird, warum das nicht funktioniert. Im Apache habe ich auch AddDefaultCharset UTF-8 stehen.

Nun könnte ich via utf8_decode das ganze richtig stellen, aber dann funktionieren so Sachen wie das Euro Zeichen nicht mehr, das zu einem Fragezeichen wird.

In meiner Blindheit übersehe ich etwas oder ich weiß es wirklich nicht. Weiß jemand Rat um mir die Augen zu öffen?

Vielen Dank!