htmlファイルからPDFの作成 [CentOS]
htmlファイルからPDFを作成する方法はいろいろあるが、無料で実現できて、cssを駆使したページでもかなりきれいに表示させる方法としては、mozilla2ps + XULRunner + ps2pdfがベストだと思います。
この方法だとXが必要になりますが、ここでは仮想フレームバッファを使用することで回避しています。
必要な作業は
- XULRunnerのインストール
- mozilla2psのインストール
- Xvfb(仮想フレームバッファ)の自動起動設定
- (ps2pdfでpdfに変換)
です。
XULRunnerのインストール
XULRunner 1.8.0.4 Release Notes - MDCからダウンロードします。
wget http://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/1.8.0.4/linux-i686/en-US/xulrunner-1.8.0.4.en-US.linux-i686.tar.gz tar xvzf xulrunner-1.8.0.4.en-US.linux-i686.tar.gz su mkdir -p /opt/xulrunner/1.8.0.4/ mv xulrunner /opt/xulrunner/1.8.0.4/ cd /opt/xulrunner/1.8.0.4/xulrunner/ ./xulrunner --register-global
mozilla2psのインストール
Michele Baldessari - Homepageよりダウンロードします。
wget http://michele.pupazzo.org/mozilla2ps/download/mozilla2ps-0.6.xulapp /opt/xulrunner/1.8.0.4/xulrunner/xulrunner --install-app mozilla2ps-0.4.xulapp /tmp
これで/tmpディレクトリにインストールされる。/tmpはインストールしたいディレクトリを指定します。
指定しなかった場合は、/usr/lib/foo bar inc./にインストールされます。
Xvfbの自動起動設定
XULRunnerを実行するにはXが起動している必要があります。ただ、今回サーバでXは起動したくないので、Xvfb(仮想フレームバッファ)を利用します。
/usr/X11R6/bin/Xvfb :1 -screen 0 1024x768x8 &
のようにすることで起動は可能なのですが、xvfb-runというのを使用すれば、コマンドの実行中だけ自動的に起動させておくことができます。ただし、これのCentOS用のが見つからなかったのですが、xvfb-run.shというのをたまたま見つけたのでこれを使用します。
wget http://svn.exactcode.de/t2/trunk/package/xorg/xorg-server/xvfb-run.sh
これで
xvfb-run.sh /opt/xulrunner/1.8.0.4/xulrunner/xulrunner /tmp/mozilla2ps/application.ini http://www.yahoo.co.jp /tmp/foo.ps
とすることで、/tmp/foo.psというポストスクリプトファイルが出来上がります。
もし、ローカルにあるファイルを変換する場合は
xvfb-run.sh /opt/xulrunner/1.8.0.4/xulrunner/xulrunner /tmp/mozilla2ps/application.ini file:///tmp/temp.html /tmp/foo.ps
のようにします。
これを元にPDFを作成します。
ps2pdfでpdfに変換
ps2pdfはデフォルトで入っていることが多いです。
ps2pdf /tmp/foo.ps /tmp/foo.pdf
これでpdfが作成できます。
あるいは、ImageMagickのconvertを使用しても作成できます。
convert /tmp/foo.ps /tmp/foo.pdf
以上の流れをシェルスクリプト等にしておけば、htmlから自動でpdfが作成できるようになります。
参考サイト
Xvfb - 仮想フレームバッファ - MOYO Laboratory
タグpdf ps2pdf xulrunner xvfb 便利なアプリケーション


