Intereting Posts
Как использовать токен обновления, чтобы получить авторизацию в фоновом режиме и получить токен доступа? как загрузить более одного изображения на сервер (база данных mysql), используя php и android Поиск строк и строк возврата PHP Ошибка MySQL: «Количество столбцов не соответствует количеству значений в строке 1» – помощь для начинающих Простой вопрос ajax onclick Когда работает $ (document) .ready ()? Ежедневный автоматический пост в стене пользователей Facebook Код написан в Hack быстрее, чем код, написанный на PHP на HHVM? Безопасность PHP / MySQL – с чего начать? Как я могу запустить PHP-скрипт в определенном интервале (например, один раз в день)? Использование Imagick в Symfony2? Цена форматирования как запятая Получение названия и описания мета Использовать функцию иногда () в классе запросов Laravel 5 Используйте дефис (-) вместо косой черты (/) или подчеркивания (_) в маршрутах

Как генерировать PDF-файлы _with_ utf-8 многобайтовых символов с использованием Zend Framework

У меня есть небольшая проблема с 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 (как я понимаю, единственный способ сделать текст полужирным?)