У меня есть небольшая проблема с Zend Framework Zend_Pdf. Многобайтные символы удаляются из созданных PDF-файлов. Например, когда я пишу aąbcčdeę, он становится abcd с литовскими буквами, лишенными.
Я не уверен, что это особенно проблема Zend_Pdf или php в целом.
Исходный текст закодирован в utf-8, а также исходный файл php, который выполняет задание.
Заранее спасибо за вашу помощь 😉
PS Я запускаю Zend Framework v. 1.6, и я использую FONT_TIMES_BOLD шрифт. FONT_TIMES_ROMAN работает
Zend_Pdf
поддерживает UTF-8 в версии 1.5 Zend Framework. Однако стандартные PDF-шрифты поддерживают только набор символов Latin1. Это означает, что вы не можете использовать Zend_Pdf_Font::FONT_TIMES_BOLD
или любой другой «встроенный» шрифт. Чтобы использовать специальные символы, вы должны загрузить еще один шрифт TTF, который включает символы из других наборов символов.
Я использую Mac OS X, поэтому я попробовал следующий код, и он создает PDF-документ с правильными символами.
$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');
См. Также этот журнал ошибок: http://framework.zend.com/issues/browse/ZF-3649
Я считаю, что Zend_Pdf получил поддержку UTF-8 в 1.5 – Какую версию Zend Framework вы используете?
Также – какой шрифт вы пытаетесь сделать? Вы пробовали альтернативные шрифты?
Вы убедились, что вы устанавливаете кодировку символов в качестве примера из руководства?
// Draw the string on the page $pdfPage->drawText($unicodeString, 72, 720, 'UTF-8');
Если вы застряли в использовании жирного шрифта, можете попробовать один из других смелых шрифтов?
Zend_Pdf_Font::FONT_COURIER_BOLD Zend_Pdf_Font::FONT_TIMES_BOLD Zend_Pdf_Font::FONT_HELVETICA_BOLD
ZF v. 1.6, TIMES_BOLD (как я понимаю, единственный способ сделать текст полужирным?)