Zend_PDF пишем кириллицей?

Solid

Drosera anglica
Zend_PDF пишем кириллицей?

Не могу заставить Zend_PDF писать кириллицей.
Латиница и специфичные символы для языков: эстонский, чешский и немецкий -- работают. А кириллица отказывается даже появляться.

Файл сохранён в формате UTF-8:

PHP:
$pdf = new Zend_Pdf();

$style = new Zend_Pdf_Style();
$style->setFillColor(new Zend_Pdf_Color_Rgb(0, 0, 0.9));
$style->setLineColor(new Zend_Pdf_Color_GrayScale(0.2));
$style->setLineWidth(3);
$style->setLineDashingPattern(array(3, 2, 3, 4), 1.6);
$style->setFont(Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA_BOLD), 32);

$pdf->pages[] = ($page1 = $pdf->newPage('A4'));

$page1->drawText("Русский язык. test", 200, 20, 'UTF-8');
В чём может быть "загвоздка"?
 

FractalizeR

Новичок
Может быть, в этом?

PHP:
$page1->drawText("Русский язык. test", 200, 20, 'Windows-1251');
Или у вас PHP скрипт сохранен в UTF-8?
 

Solid

Drosera anglica
FractalizeR
Вверху же написано "Файл сохранён в формате UTF-8:".
 

Dl

Новичок
Re: Zend_PDF пишем кириллицей?

Zend/Pdf/Resource/Font.php строка 516, там по умолчанию стоит cp1252, если поменять, то шрифт по крайней мере выводится :)

PHP:
public function encodeString($string, $charEncoding)
{
    /* The $charEncoding paramater will go away once the remainder of the
     * layout code is completed. At that point, all strings will be handled
     * internally as UTF-16BE-encoded...
     */
    return iconv($charEncoding, 'CP1252//IGNORE', $string);
}
 

FractalizeR

Новичок
Нет, я не прав. Дело в этом:

Zend_Page->drawText:
<...>
PHP:
$textObj = new Zend_Pdf_Element_String($this->_font->encodeString($text, $charEncoding));
Zend_Font->encodeString:
PHP:
   /**
     * Convert string from local encoding to Windows ANSI encoding.
     *
     * NOTE: This method may disappear in a future revision of the framework
     * once the font subsetting and Unicode support code is complete. At that
     * point, there may be multiple ways of encoding strings depending on
     * intended usage. You should treat this method as framework internal
     * use only.
     *
     * @param string $string
     * @param string $charEncoding Character encoding of source text.
     * @return string
     */
    public function encodeString($string, $charEncoding)
    {
        /* The $charEncoding paramater will go away once the remainder of the
         * layout code is completed. At that point, all strings will be handled
         * internally as UTF-16BE-encoded...
         */
        return iconv($charEncoding, 'CP1252//IGNORE', $string);
    }
Поддержка Unicode в текущей версии Framework еще не дописана пока.


Сорри за дубликат. Пока пост писал, вы уже ответили :)
 

Solid

Drosera anglica
Dl
Да, действительно... но от кривых символов мне не легче :(

Неужели с помощью Zend_PDF невозможно писать русскоязычные PDF'ки?

-~{}~ 22.01.08 12:27:

Признаю, бился долго и добился. Сработало только если подключить TrueType фонт самому, eg:
PHP:
Zend_Pdf_Font::fontWithPath('c:/Georgia.TTF');
 
Сверху