pdflibでブロックを使って日本語を使ったら文字化けが発生あせる


文字コードの問題らしい。

結構ハマったので解決方法をメモひらめき電球


PDFlib HOWTO - FAQ

以下引用です。



テキストフローで日本語を利用するには?

・標準CJKフォント(HeiseiKakuGo-W5やHeiseiMin-W3等)の場合は「UniJIS-UCS2-H」

・カスタムフォント(TrueTypeフォントやOpenTypeフォント)の場合は「unicode」

$text = "あ\nいう\nえおか\nきくけこ\nさしすせそ\nたちつてとなにぬねのはひふへほ";

PDF_fill_textblock($p, $page, "testblock", mb_convert_encoding($text, "UTF-8", "EUC-JP"), 
  "fontname {HeiseiKakuGo-W5} pdiwarning true encoding UniJIS-UCS2-H textformat utf8");


機種依存文字の表示方法

$font = PDF_load_font($p, "KozGoPro-Medium", "90ms-RKSJ-H", "");
PDF_setfont($p, $font, 24.0);
PDF_set_text_pos($p, 50, 700);

$str = "あ①髙お"; $str = mb_convert_encoding($str, 'Shift-JIS', 'EUC-JP'); PDF_show($p, $str);

最近仕事でPDFにする仕組みを作っていて今まで


フリーのやつを使っていたのだが今回はpdflibを使う


ことになりました。


これは簡単だし便利です。なによりブロックが使える。


っで使っていて困ったことをメモひらめき電球


単位がポイント。


座標とか指定するときってミリで指定したいじゃないですか。


単位がポイントなんでよねあせる


計算が大変です。

そこでミリからポイントに変換する関数を作って対応。

//ミリからポイントに変換
function mmTopt($mm) {
	$pt = round($mm * 72 / 25.4);
	
	return $pt;
}