5

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 は動作します

4

4 に答える 4

10

Zend_PdfZendFrameworkのバージョン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

于 2008-10-27T17:33:14.223 に答える
1

Zend_Pdf は 1.5 で UTF-8 をサポートしたと思います - どのバージョンの Zend Framework を実行していますか?

また、どのフォントでレンダリングしようとしていますか? 別のフォントを試しましたか?

于 2008-10-06T11:37:50.570 に答える
1

マニュアルのこの例のように文字エンコーディングを設定していることを確認しましたか?

// 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
于 2008-10-09T01:56:48.980 に答える
0

ZF v. 1.6、TIMES_BOLD (これがテキストを太字にする唯一の方法だと理解していますか?)

于 2008-10-07T07:03:23.463 に答える