前回の続き?
前回とりあえずPDFの作成はできるようになりましたが、AdobeAcrobatのように自由にレイアウトを作成するにはほど遠いものがあります。
フォーム上などでレイアウトしたとおりのPDFを作成するにはHTMLを解析して座標を計算してどうのこうのと面倒なことを行わねばならないので、正直手に余ります。
しかし世の中は広いもので、そのようなサービスをフリーで提供してくれているところがあります。
HTML2PDF.BIZ
http://www.html2pdf.biz/
ありがたく利用させていただきましょう。
使用方法は見ての通りGET投げるだけなので難しくも何ともありません。
http://www.html2pdf.biz/api.php
html2pdf.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
//初期設定
//サーバ
$html2pdf_server='http://html2pdf.biz/api';
//生成時間用
ini_set('max_execution_time',120);
set_time_limit(120);
//設定
$html2pdf_url='http://example.com/';
$html2pdf_ret='pdf';
$html2pdf_name='hoge.pdf';
$html2pdf_ts=true;
//URL作成
$html2pdf=
$html2pdf_server
.'?url='.urlencode($html2pdf_url)
.'&ret='.(isset($html2pdf_ret)?$html2pdf_ret:'pdf')
.'&ts='.(isset($html2pdf_ts)?'true':'false');
//取得
$pdf=file_get_contents($html2pdf);
if(!$pdf){die();}
//表示
header('Content-Type: application/pdf');
header('Content-Length: '.strlen($pdf));
header('Content-Disposition: inline; filename="'.$html2pdf_name.'"');
header('Cache-Control: private, max-age=0, must-revalidate');
header('Pragma: public');
ini_set('zlib.output_compression','0');
print($pdf);
|
$html2pdf_urlに入れたURLを、$html2pdf_ret形式で取得します。
$html2pdf_ts=trueだとタイムスタンプが入ります。
$html2pdf_nameは出力されたPDFを保存する場合のデフォルト名です。
PDF生成に2,30秒かかるので、念のためタイムアウト時間を2分に設定しています。
以上でHTMLから簡単にPDFの作成ができました。
PDFにHTML2PDF.BIZのロゴが入りますが、これはフリー版なので仕方ありません。
これで自力でではありませんがHTMLをそのままPDF化することに成功しました。
しかし重いせいなのかなんなのか、しょっちゅうfile_get_contentsに失敗してしまうのが難点。
PR
トラックバック
トラックバックURL: