PHP:TCPDFでのPDF出力で外国語を表記したい

Sponsored Link

PDF出力で使用する「TCPDF」

PHPで「PDF」ファイルを出力する際に使用するクラスとして「TCPDF」があります。

HTMLで記述した内容をそのままPDFとして作成・出力できて、記述方法もとても簡単です。

ただ、英語のみの出力PDFであればフォントはあまり気にならないのですが、英語と日本語など混在している場合に、若干気になるというか・・・

Sponsored Link

日本語を出力する場合の設定

フォントを指定するメソッドは「SetFont

日本語を使用する場合にはいくつかパターンがあるようですが、実際には「小塚ゴシックPro M(kozgopromedium)」などを使用する形になるようです。

組み込まれている以外のフォントを指定する方法もあるようですが。。。

$pdf->SetFont("kozgopromedium", "", 8);

上記の指定をした後に出力される文字列は「小塚ゴシックPro M」で出力される形となりますが、その場合、英語に関してもこのフォントで出力される形となります。

結果、こんな感じ。

アルファベットのフォントがイマイチ・・・(個人的感想)

文字によってフォントを変えたい場合には、CSSの「style」タグで指定すれば解消できます。

Sponsored Link

メインとするフォントを何にするか

前述の「SetFont」はメインとするフォントをセットします。

今回は「SetFont」には英語用フォントを指定し、英語以外はStyleタグでフォント指定する形とします。英語圏のライブラリなので、英語以外のフォントはデフォルトでは充実していないと思うので。

$pdf->SetFont("helvetica", "", 8);

そして、各文字列箇所にstyleをセットします。

Hello! English Sentence..
<span style="font-family:kozgopromedium;">日本語:あいうえお</span>

style指定していない箇所は「SetFont」で指定した「Helvetica」

style指定した個所は、指定したフォント「kozgopromedium」で出力されます。

Sponsored Link

中国語・タイ語を出力したい

英語と日本語混在ではなく、中国語やタイ語が混在する場合は。。。

<span style="font-family:kozgopromedium;">中国語:你好 / 簡体字:关心 / 繁体字:關心</span>
<span style="font-family:freeserif; font-size:10px;">สวัสดี</span>

中国語に関しては、日本語と同じフォント「小塚ゴシックPro M(kozgopromedium)」の指定で問題なく出力されるようです。簡体字・繁体字どちらも。

 ⇒ 繁体字については問題なさそうですが、簡体字については正しく出力されなさそう。

というとで、修正。。。

<span style="font-family:droidsansfallback;">

簡体字中国語に関しては「Droid Sans Fallback」を指定することで表示可能なようです。
tcpdf\fonts配下に「droidsansfallback」ファイルが格納されていますね。
そして、ピンイン・声調も特に問題なさそう。

タイ語に関しては「FreeSerif」のみがデフォルトでは出力可能なようです。

Example 008 : external UTF-8 Unicode text file

/tcpdf.org/examples/example_008/

タイトルとURLをコピーしました