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

Share on Facebook
このエントリーをはてなブックマークに追加
はてなブックマーク - htmlファイルからPDFの作成 [CentOS]
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です