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 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
Zend Framework 1.5 版本支持 UTF-8。但是,标准 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 在 1.5 中获得了 UTF-8 支持 - 你运行的是哪个版本的 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(据我所知,这是使文本变粗的唯一方法?)