简体   繁体   中英

How to generate pdf files _with_ utf-8 multibyte characters using Zend Framework

I've got a "little" problem with Zend Framework Zend_Pdf class. Multibyte characters are stripped from generated pdf files. Eg when I write aąbcčdeę it becomes abcd with lithuanian letters stripped.

I'm not sure if it's particularly Zend_Pdf problem or php in general.

Source text is encoded in utf-8, as well as the php source file which does the job.

Thank you in advance for your help ;)

PS I run Zend Framework v. 1.6 and I use FONT_TIMES_BOLD font. FONT_TIMES_ROMAN does work

Zend_Pdf supports UTF-8 in version 1.5 of Zend Framework. However, the standard PDF fonts support only the Latin1 character set. This means you can't use Zend_Pdf_Font::FONT_TIMES_BOLD or any other "built-in" font. To use special characters you must load another TTF font that includes characters from other character sets.

I use Mac OS X, so I tried the following code and it produces a PDF document with the correct characters.

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

See also this bug log: http://framework.zend.com/issues/browse/ZF-3649

I believe Zend_Pdf got UTF-8 support in 1.5 - What version of Zend Framework are you running?

Also - what font are you trying to render with? Have you tried alternate fonts?

Have you made sure that you are setting the character encoding as this example from the manual?

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

If you're stuck into having to use a bold font, maybe try one of the other bold fonts?

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

ZF v.1.6,TIMES_BOLD(据我所知,这是使文字变粗的唯一方法吗?)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM