【问题标题】:Zend Framework PDF generation unicode issueZend Framework PDF 生成 unicode 问题
【发布时间】:2010-10-10 16:02:30
【问题描述】:

我在使用 Zend Framework 的 PDF 时遇到问题

当我创建 PDF 文件时,我需要使用 UTF-8 作为编码。 这是我用来生成简单 pdf 文件的代码。 我总是显示这个错误。 它没有在 pdf 文件中看到“Faktúra”,而是给了我“Faktú” 它没有在 pdf 文件中看到“Dodávateľ:”,而是给了我“Dodáva”

$pdf = new Zend_Pdf();    
$pdf->pages[] = ($page1 = $pdf->newPage('A4'));    
$font = Zend_Pdf_Font::fontWithPath('C:\WINDOWS\Fonts\TIMES.TTF');    
$page1->setFont($font, 20);    
$page1->drawText('Faktúra', 40, 803, 'UTF-8');    
$page1->drawText('Dodaváteľ:', $width_left, $height, 'UTF-8');

所以我尝试从 Windows 目录加载字体

$font = Zend_Pdf_Font::fontWithPath('C:\WINDOWS\Fonts\TIMES.TTF');

但它给了我错误:

致命错误:未捕获的异常 带有消息的“Zend_Pdf_Exception” '数据不足,无法读取 2 个字节'

这真的让我发疯了,我相信你们中的一些人会对我有一些提示:) 解决错误将是最好的解决方案...

提前非常感谢

【问题讨论】:

    标签: php zend-framework pdf unicode utf-8


    【解决方案1】:

    您是否将 php 源文件保存为 UTF-8?

    【讨论】:

    • 是的,源是UTF-8 我在徘徊也许PDF文件本身也应该保存为UTF-8,但是Zend Framework不支持这种保存。我以这种方式保存 pdf 文件 $pdf->save('faktury/'.$invoice.'.pdf');
    • 我认为您不需要将 pdf 保存为 UTF-8 .. pdf 是一种二进制格式 - 我很确定它会在内部处理这些内容。也许你需要安装并启用 iconv 扩展(只是一个疯狂的猜测)
    • iconv 已正确安装...我不知道在哪里进一步寻找解决方案.. 任何线索?
    • 您使用的是哪个版本?尝试从 svn/trunk 获取最新的。显然他们最近做了一些改变:zendframework.com/issues/browse/ZF-5121
    【解决方案2】:

    尝试使用 utf8_decode()

    例如:

    $pdf = new Zend_Pdf();    
    $pdf->pages[] = ($page1 = $pdf->newPage('A4'));    
    $font = Zend_Pdf_Font::fontWithPath('C:\WINDOWS\Fonts\TIMES.TTF');    
    $page1->setFont($font, 20);    
    $page1->drawText(utf8_decode('Faktúra'), 40, 803, 'UTF-8');    
    $page1->drawText(utf8_decode('Dodaváteľ:'), $width_left, $height, 'UTF-8');
    

    【讨论】:

      【解决方案3】:

      Zend pdf 功能还不是很复杂。在http://www.starmind.com 上,我们使用基于fpdf 的tcpdf。两者都可以免费使用。

      【讨论】:

        猜你喜欢
        • 2010-11-22
        • 2010-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多