Как сгенерировать PDF-файлы с помощью многобайтовых символов utf-8 с помощью Zend Framework - PullRequest
5 голосов
/ 06 октября 2008

У меня "маленькая" проблема с классом Zend Framework Zend_Pdf. Многобайтовые символы извлекаются из сгенерированных файлов PDF. Например. когда я пишу aąbcčdeę, он становится abcd с разорванными литовскими буквами.

Я не уверен, является ли это проблемой Zend_Pdf или php в целом.

Исходный текст кодируется в utf-8, а также исходный файл php, который выполняет работу.

Заранее спасибо за помощь;)

P.S. Я запускаю Zend Framework v. 1.6 и использую шрифт FONT_TIMES_BOLD. FONT_TIMES_ROMAN работает

Ответы [ 4 ]

10 голосов
/ 27 октября 2008

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

1 голос
/ 09 октября 2008

Вы удостоверились, что устанавливаете кодировку символов как этот пример из руководства?

// 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
1 голос
/ 06 октября 2008

Я считаю, что Zend_Pdf получил поддержку UTF-8 в версии 1.5 - Какую версию Zend Framework вы используете?

Также - каким шрифтом вы пытаетесь рендерить? Вы пробовали альтернативные шрифты?

0 голосов
/ 07 октября 2008

ZF v. 1.6, TIMES_BOLD (насколько я понимаю, это единственный способ сделать текст жирным?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...