ZendPdf - setTextField西里尔字符编码

时间:2014-12-15 08:26:40

标签: php encoding pdf-generation

我已应用此解决方案:

How to fill PDF form in php

彼得·德内夫(Peter Denev)现在我一直在努力填写文本的编码。

基本上,我从Post参数中读取文本,文本是西里尔文。无论我试图改变什么(我试图通过复制一些函数并将它应用于setTextField等来改变ZendFramework的Pdf.php中的编码)。这是我的代码:

$pdf = Zend_Pdf::load('reklam.pdf');
$pdf->setTextField("Text1", "Тест Инпут");
$pdf->setTextField("Text2", "Тест Инпут");
$pdf->setTextField("Text3", "Тест Инпут");
$pdf->save('outputfile.pdf');

outputfile中的文本不是人。

这是修改过的Pdf.php:http://pastebin.com/q7YqNcb9

怎么办?请帮忙。

提前致谢。

1 个答案:

答案 0 :(得分:1)

  1. 确保您的字体包含所需的字符。显然,只有Acrobat表单字段属性中设置的字体设置才会被考虑用于表单字段,这意味着它与您在Zend中设置的字体无关。
  2. 如果是:这对我有帮助:

    public function setTextField($name, $value)
    {
    if (!isset($this->_formFields[$name])) {
        throw new Zend_Pdf_Exception(
            "Field '$name' does not exist or is not a textfield"
        );
    }
    
    /** @var Zend_Pdf_Element $field */
    $field = $this->_formFields[$name];
    $field->add(
        new Zend_Pdf_Element_Name('V'), 
    // you must set $font to one of the Zend_Pdf_Resource_Font objects
        new Zend_Pdf_Element_String($font->encodeString($value, 'UTF-8'))
    );
    $field->touch();
    }