SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【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は標準出力で受け渡しして、ファイルにしなくても処理できる。

関連するメモ

コメント