忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/04/25 20:00 |
PHP1-46:PHPでPDFつづき

前回の続き?

前回とりあえず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
<?php
    
    //初期設定
        //サーバ
        $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


2009/01/19 10:24 | Comments(0) | TrackBack() | PHP

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<PHP1-47:PHPで圧縮解凍 | HOME | PHP1-45:PHPでPDF>>
忍者ブログ[PR]