SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【PDFLib】環境依存文字の出力

問題

PDFLibでPDFを作ってますが、機種依存文字が「□」になります。

出せないんですか?

pdflib ㈱ かっこかぶ 髙 はしごだか 郞 異体字 ② 丸数字 etc.

答え

エンコードに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

関連するメモ

コメント