TOPページ / 徒然なるままに

2008/05/24(土)

PHPでUTF-8、日本語PDF出力

XeTeXでPHP UTF-8 日本語 PDFXeTeXでPHP UTF-8 日本語 PDFXeTeXでPHP UTF-8 日本語 PDF
UTF-8環境のLinuxサーバ上、PHPで日本語Portable Document Format(PDF)出力をする場合。非商用であればPDFlib Liteがあるが、商用利用可能でライセンスフリーなオープンソースものとしてはまだまだ便利な環境が整っていない。Zend Framework 1.5のZend_PdfでもUTF-8日本語一部不完全対応だとか。早々のアップデートを望みたい所です。その辺Java(JSP)の方が整っているようで残念、iTextとか。
ひとまず、以前PHPのこのあたりをなんとかしようと、FPDFTCPDF、いろいろと試した結果たどり着いたのがXeTeX
せっかく環境の構築に成功したのですが、メモをPCのリカバリとともに消失。というわけで、再度思い出しながらメモをとる。
ちなみに、今回PHP経由でxdvipdfmxを利用しPDFに各種セキュリティ設定が可能な事がわかった。
印刷や内容のコピーを許可しないようにしたり、暗号化も可能。ただ、残念なのがPHP経由で好きなパスワードを設定する方法がみつからない。Linuxのコマンドプロンプト上であればxdvipdfmx -Sコマンドで好きなパスワードが設定できるのだが・・・
掲載画像、中央がセキュリティ設定したもので印刷・内容のコピー不可、暗号化したもの。右が設定していないもの。TeXについてはまだまだ理解不足。1ページのPDFでファイルサイズは25KBで超軽量。
以下、設定内容のメモ。
・まずはベース環境構築。Linux、PHP、他必要なものをインストール。
・Texlive(XeTeX)をインストール。
・日本語用フォントとして情報処理推進機構のIPAフォントをLinuxに追加。
・Linux上 $fmtutil --byfmt xelatex で xelatex.fmtを作成。
・作成したxelatex.fmtをPHPプログラム上chdir()関数でワークスペースとして利用する箇所に配置。
・PHPプログラム上でfopen()、fwrite()、fclose()関数を利用しPDF出力用のTexファイル作成。
・出力したTexファイルをsystem()関数を利用してxelatex --no-pdf hoge.texでxdvファイルを作成。
・出力したxdvファイルをsystem()関数を利用してxdvipdfmx hoge.xdvでPDFファイルを作成。
以上。


Blog

CCNA(Cisco Certified Network Associate)取得を目指している取得した取得後有効期限満了したぎりぎり20代30代突入30代30代後半40代突入管理人のブログです。

Recent Entries

Google Maps API

googlemap.jpg
地図 ブログ

 

Twitter

Category

Monthly Archives