さくらVPSにwkhtmltopdfをインストール

さくらのVPS(CentOS6)にwkhtmltopdfをインストールしてみました。
wkhtmltopdfとはHTMLを元にPDFファイルを作成することができるツールのことです。
私の使用しているVPS環境はもう3~4年くらい運用してることもありIPAフォントのインストールやlibXrender,libXextなどのインストールは既にされていた模様。。
参考:CentOS7 に wkhtmltopdf をインストールする – Qiita


RPMの場所は公式のDownloadsページで確認しました。Windows用もあるようでした。
wkhtmltopdf

# CentOS6用のrpmパッケージを取得してインストール
wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox-0.12.5-1.centos6.x86_64.rpm
rpm -ivh wkhtmltox-0.12.5-1.centos6.x86_64.rpm

# 依存性の欠如を改善
yum install xorg-x11-fonts-75dpi

# 改めてインストール
rpm -ivh wkhtmltox-0.12.5-1.centos6.x86_64.rpm

# 動作確認
wkhtmltopdf http://yahoo.co.jp test_wkhtmltopdf_yahoo.pdf

動作確認のためにヤフーのトップページをPDFにしてみました。

pdfビューワで開くとリンクや文字が選択できるようになっています。表示崩れも特にないしかなりすごい。
wkhtmltopdfが対象のページを見に行ったときのユーザーエージェントが設定されていないことが原因なのかブラウザで閲覧したときと違う表示になっているかと思います(画像内の黄色枠のところとか)。これは–custom-headerオプションでユーザーエージェントを指定することで、ブラウザで閲覧しているときと同じようなレイアウトにできました。

# FireFoxのユーザーエージェントを設定してみる
wkhtmltopdf --custom-header "User-Agent" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0" --custom-header-propagation http://yahoo.co.jp test_wkhtmltopdf_yahoo2.pdf


wkhtmltopdfを使用して入力したURLを元にHTMLをPDF化するツールを作ってみました。
https://etc.imo-tikuwa.com/wkhtmltopdf-test/
オプションとして以下のような指定をしています。

# 印刷用のスタイルシートがあれば読み込む
--print-media-type

# ヘッダー右に日付を追加
--header-right [date]

# フッター中央にページ番号を追加
--footer-center [page]/[topage]

# フォームで選択したページサイズ
--page-size

# ブラウザのユーザーエージェント
--custom-header \"User-Agent\" \"[ユーザーエージェント]\"
--custom-header-propagation

リンク切れが心配な情報をローカルにアーカイブしておくのに便利そうです。
JavaのPOIやPHPのライブラリで帳票出力する機能開発は何かと大変なことが多い気がするので、こういったツールを使用してみるのも良いのではと思いました。

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