【PDFLib】環境依存文字の出力
問題
PDFLibでPDFを作ってますが、機種依存文字が「□」になります。
出せないんですか?
答え
エンコードにEUCを指定していると、環境依存文字が化ける。
はしごたか「髙」などの文字は、CP932に含まれており、この文字セットはPDFLibでは90ms-RKSJ-Hというエンコードを指定することで扱うことができる。
以下、PDFLib5環境で確認。
文字化けする例
//ソースはEUC $pdf = pdf_new(); pdf_open_file($pdf, 'euc.pdf'); PDF_begin_page($pdf, 595, 842); $font = PDF_load_font($pdf, "HeiseiKakuGo-W5", "EUC-H", ""); pdf_setfont($pdf, $font, 100); PDF_show_xy($pdf, "髙郞②㈱あ", 40, 600); pdf_end_page($pdf); pdf_close($pdf); pdf_delete($pdf); //→ 「□□□□あ」しか出ない。
文字化けしない例
//ソースはShift_JIS $pdf = pdf_new(); pdf_open_file($pdf, 'sjis.pdf'); PDF_begin_page($pdf, 595, 842); $font = PDF_load_font($pdf, "HeiseiKakuGo-W5", "90msp-RKSJ-H", ""); pdf_setfont( $pdf, $font, 100); PDF_show_xy($pdf, "髙郞②㈱あ", 40, 600); pdf_end_page($pdf); pdf_close($pdf); pdf_delete($pdf); //→ 「髙郞②㈱あ」が出る。
メモ
コアフォントを使用する場合、指定できるフォント名とエンコードは以下の通り。
フォント名、エンコード、プログラム側で使用する文字コードの組み合わせに注意。
日本語フォント
HeiseiKakuGo-W5 HeiseiMin-W3 KozMinPro-Regular-Acro KozGoPro-Medium-Acro KozGoPro-Medium KozMinProVI-Regular
エンコード
83pv-RKSJ-H 90ms-RKSJ-H 90ms-RKSJ-V 90msp-RKSJ-H 90msp-RKSJ-V 90pv-RKSJ-H Add-RKSJ-H Add-RKSJ-V EUC-H EUC-V Ext-RKSJ-H Ext-RKSJ-V H V UniJIS-UCS2-H UniJIS-UCS2-V UniJIS-UCS2-HW-H UniJIS-UCS2-HW-V UniJIS-UTF16-H UniJIS-UTF16-V
英字フォント
Courier Courier-Bold Courier-Oblique Courier-BoldOblique Helvetica Helvetica-Bold Helvetica-Oblique Helvetica-BoldOblique Times-Roman Times-Bold Times-Italic Times-BoldItalic Symbol ZapfDingbats
コメント