LAMPサーバで手っ取り早くPDFサーバ構築する方法

Linux Webサーバで手っ取り早く
動的な帳票などのPDFを出力する方法を実装できました。

WebサーバでPDF生成するとなるとFPDFやPDFlibが必用になりますが、
サーバ依存で文字化けがあったりとトラブルがやたらと多いです。
実際に自分も文字化けになやまされましたが、
この方法を利用すれば簡単に実装することができました。

利用したもの:wkhtmltopdf
適当なlinux webサーバ
PHP:system関数(外部プログラムをPHP内で実行できる環境)

続きはこちら

PDF変換にはコマンドラインから利用できるwkhtmltopdfを利用します。

$ wkhtmltopdf http://www.google.com output.pdf

こんな感じで利用すると対象のページがPDFで出力できます。

概要

http://localhost/topdf.phpへアクセスするとPDFがダウンロードできる

実装方法

1. wkhtmltopdfをダウンロードと設置

AMDとintelでは実行ファイルが違うようなので注意してダウンロード。
lzma形式(7zip)で圧縮しているので解凍注意。解凍

$ unlzma wkhtmltopdf* //解凍
$ mv /home/laddy/wkhtmltopdf /var/www/html/ //設置

2. PHPスクリプトの準備

topdf.phpを編集

<?php
    //wkhtmltopdfまでのパスを記述、できればフルパスの方がいいかも
    system('/var/www/html/wkhtmltopdf http://www.google.co.jp/ /tmp/output.pdf');

    header('Content-type: application/pdf');
    header('Content-Disposition: attachment; filename="Output.pdf"');
    readfile('/tmp/output.pdf');
?>

3. PDF書き出し方法とダウンロード

http://localhost/topdf.phpへブラウザから普通にアクセスします。
すると、Output.pdfと書かれたPDFがダウンロードできるはずです。

4. 応用方法

今は、Googleのページを取得してPDFにしましたが、
対象のページをPHPで帳票を出力するようなページを対象にすると
ブラウザでみたまま・スクリプトで表示したままの状態で
PDFに変換ができますのでかなり応用がきくのではないかと。

↓こんなURLでアクセスするページ
http://localhost/hoge.php?page=2&category=hobby

特に、wordpressのパーマリンクやcakephpで
特定のURLへアクセスして表示する動的なページの場合に
簡単にPDFが作成できると思います。