2008-10-06 14 views
5

Mam "mały" problem z klasą Zend Framework Zend_Pdf. Znaki wielobajtowe są usuwane z wygenerowanych plików pdf. Na przykład. kiedy piszę aąbcčdeę, staje się abcd z obnażonymi literami litewskimi.Jak generować pliki pdf _with_ utf-8 znaków wielobajtowych za pomocą Zend Framework

Nie jestem pewien, czy jest to szczególnie problem Zend_Pdf lub php w ogóle.

Tekst źródłowy jest zakodowany w utf-8, a także źródłowy plik php, który wykonuje zadanie.

Z góry dziękujemy za pomoc;)

P.S. Używam Zend Framework v. 1.6 i używam czcionki FONT_TIMES_BOLD. FONT_TIMES_ROMAN działa

Odpowiedz

10

Zend_Pdf obsługuje UTF-8 w wersji 1.5 Zend Framework. Jednak standardowe czcionki PDF obsługują tylko zestaw znaków Latin1. Oznacza to, że nie można używać Zend_Pdf_Font::FONT_TIMES_BOLD ani żadnej innej "wbudowanej" czcionki. Aby użyć znaków specjalnych, musisz załadować inną czcionkę TTF, która zawiera znaki z innych zestawów znaków.

Używam Mac OS X, więc wypróbowałem poniższy kod i wygenerowałem dokument PDF z poprawnymi znakami.

$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'); 

Zobacz również tego dziennika błędów: http://framework.zend.com/issues/browse/ZF-3649

1

Wierzę, że Zend_Pdf otrzymał wsparcie dla UTF-8 w wersji 1.5 - Jaką wersję Zend Framework używasz?

Również - z jaką czcionką próbujesz renderować? Czy próbowałeś alternatywnych czcionek?

0

ZF v. 1.6, TIMES_BOLD (jak rozumiem to jedyny sposób, aby tekst pogrubiony?)

1

Czy masz już pewność, że ustawiasz kodowanie znaków w tym przykładzie z podręcznika?

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

Jeśli utkniesz w konieczności używania bold czcionki, może spróbować jednego z innych śmiałych czcionek?

Zend_Pdf_Font::FONT_COURIER_BOLD 
Zend_Pdf_Font::FONT_TIMES_BOLD 
Zend_Pdf_Font::FONT_HELVETICA_BOLD