サーバー上でPDFをHTMLに変換する

pdf画像

ブラウザでPDFを開くととっても重いんですよ。まぁ、かっこいい人たちはAdobe Readerなんて使わずに Foxit Reader とか軽いの使ってるのかも知れないんだけど。

ともかく、http://finance.firstlife.jp/を自分で使ってて、重いAcrobat Readerを何度も開くのは嫌になってきたので、サーバー上で変換かけれないのか、ってとこを調べてみました。

さて、何が使えるかな。Xpdfあたりかな、なんて思ってたら知らない間にForkして、Popplerってのが出来てるらしい。で、その中にpdftohtmlってコマンドがあって、それで実現できそう。

今回インストールしたサーバーのOSはFreeBSD、サクラインターネットなんだけどね。SSHとか解放してくれてるのが有り難いです。自前のサーバーとかroot権限があるところなら、パッケージでインストールするのがお勧め。poppler と poppler-data。poppler-dataのパッケージを入れないと日本語が扱えないので注意してね。

さて、早速インストール。以下が手順。

今回は$HOME/local 以下にインストールすることにしたので、まずディレクトリ作成。

$ mkdir $HOME/local

※$HOME ってのは、SSHでログインして $ echo $HOME ってやると判ると思うけど /home/[アカウント名] の事ね。

http://poppler.freedesktop.org/ から必要なファイルをダウンロード。

$ wget http://poppler.freedesktop.org/poppler-0.8.2.tar.gz
$ wget http://poppler.freedesktop.org/poppler-data-0.2.0.tar.gz

popplerをコンパイルしてインストール。

$ tar -xvzf poppler-0.8.2.tar.gz
$ cd poppler-0.8.2
$ ./configure –prefix=$HOME/local
$ make
$ make install
$ cd ../

データのインストール(これがないと日本語が処理できないよ)

$ tar -xvzf poppler-data-0.2.0.tar.gz
$ cd poppler-data-0.2.0
$ make install datadir=$HOME/local/share

コマンドラインだとこんな感じで example.pdf から example.html HTMLが出力できます。

$ $HOME/local/bin/pdftohtml -noframes -enc UTF-8 example.pdf

主なオプション:
-enc 出力HTMLの文字コードの指定
-noframes デフォルトだとフレームを使ったHTMLが出力されるが、それをせずに1つのHTMLに纏める。
-c 画像で無理矢理テーブルなどを表示する

便利といえば便利なんだけど・・・いまいち綺麗じゃないなぁ。googleとかのPDFのHTML変換は独自エンジンなのかな

ちなみに、htmltotext なんてコマンドもはいってて、こちらはPDFをテキストに変換できます。