【wkhtmltodf】使用例(php4にて)
問題
php4環境でwkhtmltopdfを使いたい。
答え
php4だとproc_open()は使用できないので、popen()を使ってみた。入力か出力ができるので、どちらか都合のよい方をファイルにしないで処理できる。
以下はHTMLを渡すのに標準入力を使って、PDFはファイルとして生成させた例。
<?php
//元になるHTML
$html = '<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>pdf</title>
<style>
table {border-collapse:collapse;}
td, th {border:1px solid #000;}
</style>
</head>
<body>
<div class="page">
<h1>PDF出力サンプル</h1>
<table>
<tr><th>あ</th><th>い</th><th>う</th><th>え</th><th>お</th></tr>
<tr><th>か</th><th>き</th><th>く</th><th>け</th><th>こ</th></tr>
<tr><th>さ</th><th>し</th><th>す</th><th>せ</th><th>そ</th></tr>
<tr><th>た</th><th>ち</th><th>つ</th><th>て</th><th>と</th></tr>
<tr><th>な</th><th>に</th><th>ぬ</th><th>ね</th><th>の</th></tr>
</table>
<p>日時を出してみるよ ' . date('Y年m月d日 H:i:s') . '</p>
<p>日本語がかっこ悪かったら、たぶんフォントがないのが原因だと思うので、持って来てくださいな。</p>
<p>フォントがあれば、MS Pゴシックでも、明朝でも、ヒラギノでも、IPAゴシックでもいけるよ。</p>
</div>
</body>
</html>
';
//PDFをファイルとして生成
$filename = date('YmdHis') . '.pdf';
$p = popen('/path/to/wkhtmltopdf - ' . $filename, 'w');
fwrite($p, $html);
pclose($p);
//サーバー側にファイルとして生成されているのをダウンロード
echo '<a href="' . $filename . '">' . $filename . ' が出来ました。</a>';
php5だとproc_open()で入出力が可能で、元のHTMLは標準入力で、生成されたPDFは標準出力で受け渡しして、ファイルにしなくても処理できる。