2008-10-06 7 views
5
generieren

Ich habe ein "kleines" Problem mit Zend Framework Zend_Pdf-Klasse. Multibyte-Zeichen werden von generierten PDF-Dateien entfernt. Z.B. Wenn ich aąbcčdeę schreibe, wird es mit litauischen Buchstaben beraubt.Wie PDF-Dateien _with_ utf-8 Multibyte-Zeichen mit Zend Framework

Ich bin mir nicht sicher, ob es vor allem Zend_Pdf Problem oder PHP im Allgemeinen ist.

Quelltext ist in utf-8 codiert, sowie die PHP-Quelldatei, die den Job erledigt.

Vielen Dank im Voraus für Ihre Hilfe;)

P. S. Ich laufe Zend Framework v. 1.6 und ich benutze FONT_TIMES_BOLD Schriftart. FONT_TIMES_ROMAN funktioniert

Antwort

10

Zend_Pdf unterstützt UTF-8 in Version 1.5 des Zend Framework. Die Standard-PDF-Schriftarten unterstützen jedoch nur den Zeichensatz Latin1. Dies bedeutet, dass Sie Zend_Pdf_Font::FONT_TIMES_BOLD oder eine andere "eingebaute" Schriftart nicht verwenden können. Um Sonderzeichen zu verwenden, müssen Sie eine andere TTF-Schriftart laden, die Zeichen aus anderen Zeichensätzen enthält.

Ich benutze Mac OS X, also habe ich den folgenden Code ausprobiert und es erzeugt ein PDF-Dokument mit den richtigen Zeichen.

$pdfDoc = new Zend_Pdf(); 
$pdfPage = $pdfDoc->newPage(Zend_Pdf_Page::SIZE_LETTER); 

// load TTF font from Mac system library 
$font = Zend_Pdf_Font::fontWithPath('/Library/Fonts/Times New Roman Bold.ttf'); 
$pdfPage->setFont($font, 36); 

$unicodeString = 'aąbcčdeę'; 
$pdfPage->drawText($unicodeString, 72, 720, 'UTF-8'); 

$pdfDoc->pages[] = $pdfPage; 
$pdfDoc->save('utf8.pdf'); 

Siehe auch dieser Fehler-Log: http://framework.zend.com/issues/browse/ZF-3649

1

Ich glaube Zend_Pdf hat UTF-8-Unterstützung in 1.5 bekommen - Welche Version von Zend Framework läufst du?

Auch - mit welcher Schriftart möchten Sie rendern? Hast du alternative Schriftarten ausprobiert?

0

ZF v. 1.6, TIMES_BOLD (wie ich das ist die einzige Möglichkeit, zu verstehen Text fett zu machen?)

1

Haben Sie sich vergewissern, dass Sie die Zeichenkodierung wie dieses Beispiel aus dem Handbuch setzen?

// Draw the string on the page 
$pdfPage->drawText($unicodeString, 72, 720, 'UTF-8'); 

Wenn Sie stecken in einer fett Schriftart zu verwenden, versuchen Sie vielleicht eine der anderen fett Schriftarten?