忍者ブログ
[PR]
×

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



2024/11/23 10:42 |
PHP1-45:PHPでPDF

PDFを作成するには本来AdobeAcrobatというソフトが必要です。
イラストを駆使したような美しいデザインのPDFを作成するには購入したほうがいいでしょうが、簡単な内容のPDFならPHPで作成することもできます。

PHPには元々PDFlibを利用したPDF関数があり、またPear::File_PDFパッケージもありますが、何故かFPDFというライブラリがよく使われています。

現時点で最新のFPDF Japanese version 1.6を使用してみます。
使用法は簡単で、ダウンロードしたFPDFフォルダを何処かに突っ込んでfpdf.phpをreuireするだけです。
include_pathの設定も必要ありません。

pdf.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
35
36
37
38
39
40
41
42
43
44
<?php
    
    //FPDF
        require_once('fpdf.php');
        $pdf= new FPDF();
    
    //所有者、タイトル等
        $pdf->SetAuthor('Author');
        $pdf->SetTitle('Title');
    
    //表示モード
        $pdf->SetDisplayMode('real','default');
    
    //全体の設定
        $pdf->SetFont('times','',20);
        $pdf->SetTextColor(255,100,100);
        $pdf->SetDrawColor(100,255,100);
        $pdf->SetFillColor(100,100,255);
        $pdf->SetFontSize(10);
    
    //ページ作成
        $pdf->AddPage('P');
    
    //テキスト表示
        $pdf->SetXY(10,50);
        $pdf->Write(5,'text');
    
    //画像を表示
        $pdf->Image('a2.jpg',10,20,33,0,'jpg','http://example.com/');
    
    //リンクを作成
        $pdf->Rect(30, 30, 30, 30, 'DF');
        $pdf->Link(30, 30, 30, 30, 'http://lexample.com/');
    
    //
        $pdf->SetTextColor(50,60,255);
        $pdf->SetFontSize(20);
        $pdf->SetXY(50,20);
        $pdf->Cell(100,10,'sample1','LRT',1,'C',0);
        $pdf->SetX(50);
        $pdf->Cell(100,10,'sample2',1,1,'',0);
 
    //表示の実行
        $pdf->Output();

後はこのように、要素を一つずつ順番に書き出していくだけです。
他にも多様なメソッド、引数がありますが、そこらへんは日本語ヘルプも存在するのでそれを見るとよいでしょう。
現時点では1.52用しかありませんが、内容は概ね同じなので大丈夫です。

FPDFには大きな問題点が二つほど存在します。
ひとつは、FPDFは素の状態では日本語に対応していないことです。
FPDF::WriteやCellに日本語を突っ込むと文字化けしてしまいます。
日本語対応のMBFPDFを使用してみましょう。

FPDFのサイトトップから「What languages can I use?」を選択、mbfpdfをダウンロードします。
FPDFと同じフォルダに置いたらmbfpdf.phpをrequireするだけです。
日本語フォントを使用できる以外はfpdf.phpとほぼ同じです。
サンプルとしてexja.phpが入っているので見てみるとよいでしょう。

mbpdf.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
<?php
    
    //MBFPDF
        require_once('mbfpdf.php');
        $pdf= new MBFPDF();
    
    //フォントの追加
        $pdf->AddMBFont(MINCHO ,'SJIS');
        $pdf->SetFont(MINCHO,'',20);
        
    //全体の設定
        $pdf->SetTextColor(255,100,100);
        $pdf->SetFontSize(20);
    
    //ページ作成
        $pdf->AddPage('P');
    
    //テキスト表示
        $text=mb_convert_encoding('あいうえお','SJIS','UTF-8');
        $pdf->SetXY(50,10);
        $pdf->Write(10,$text);
    
    //表示の実行
        $pdf->Output();


ひとつだけ準備が必要で、MBFPDF::AddMBFontで使用するフォントを通知する必要があります。
使用できるフォントはmbfpdf.phpの頭に書いてありますが、現在はMS明朝とMSゴシックの5種類だけのようです。
また、$pdfに渡すフォントはSJISである必要があります。
EUC-JPは一部問題があり、UTF-8には対応していません。

無事にPDFファイルが作成されました。めでたし。


さてもう一つの問題点ですが、なんといっても面倒臭いこと。
座標を毎度毎度指定しないといけないので、テキスト部分だけを差し替えるような内容なら簡単にできますが、レイアウト自体を変更するようなアプリを書くには大掛かりな仕掛けが必要になります。
YUIなりFCKeditorなりでレイアウト作成させてHTTPRequestから座標計算して各メソッド割り振ってうひゃあ面倒い。
PR


2009/01/16 10:51 | Comments(0) | TrackBack() | PHP

トラックバック

トラックバックURL:

コメント

コメントを投稿する






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



<<PHP1-46:PHPでPDFつづき | HOME | PHP1-44:PHPでFTPつづき>>
忍者ブログ[PR]