Top > PHP > PDFを作成する

#contents

*PDFを作成する [#i08afd54]

**各種ライブラリ [#j044ccac]
:FPDF|PDFを作成するライブラリ。古い。
:TCPDF|PDFを作成するライブラリ。FPDFより新しい。現在ではこちらの方が主流。HTMLをPDF化させることもできる。日本語TrueTypeフォントも簡単に使える。
:FPDI|既存のPDFを読み込むためのライブラリ。FPDFまたはTCPDFと組み合わせて、読み込んだPDFにテキストを追加したりできる。
:FPDF_TPL|FDPIを利用するために必ず必要。FPDIと同じ開発元。PDFの仕様で定められたテンプレート機能を利用できる。

**TCPDF+FPDIが一番いい(2012-04-06) [#ofbcd9f8]
テンプレートPDFを読み込み、その上に日本語を書き込むサンプル。
#html{{
<a href="/pp/download/tcpdf-set.zip">tcpdf-set.zip</a>
}}

TCPDF、FPDI、IPAフォントがセットで入っているので、解凍してindex.phpにアクセスすればすぐに動作確認できます。
**TCPDFで日本語ファイル名のPDFをダウンロードさせる [#ae85a272]
参考:日本語のファイル名でダウンロードさせる
http://fgin.seesaa.net/article/30073826.html

上記ページを参考にした、ブラウザに応じてファイル名をエスケープする関数。
しかしこれをつかっても、TCPDFのOutputの中でbasename()が使われており、basename()は日本語を正しく扱えないため、問題が生じる。
TCPDFのOutputをオーバーライドするなり、ソースをコピーして別のメソッドを作るなりして、basename()をなくす必要がある。
#pre{{
function escapeFilename($filename) {
    $user_agent = $_SERVER['HTTP_USER_AGENT'];

    if (strpos($user_agent, 'MSIE') !== false) {
        // 生SJIS
        $ret = mb_convert_encoding($filename, 'CP932', 'UTF-8');
    }
    elseif (strpos($user_agent, 'Firefox') !== false) {
        // base64
        $ret = '=?UTF-8?B?' . base64_encode($filename) . '?=';
    }
    elseif (strpos($user_agent, 'Chrome') !== false) {
        // base64
        $ret = '=?UTF-8?B?' . base64_encode($filename) . '?=';
    }
    elseif (strpos($user_agent, 'Safari') !== false) {
        // 生UTF-8
        $ret = $filename;
    }
    elseif (strpos($user_agent, 'Opera') !== false) {
        // 生UTF-8
        $ret = $filename;
    }
    else {
        $ret = urlencode($filename);
    }

    return $ret;
}

}}
**FPDF + FPDI + MBFPDF + Rotationsセット [#yd027580]
[[PDF作成ライブラリ (FPDF + FPDI + MBFPDF + Rotations) « Rapid Express:http://www.rapidexp.com/2009/01/fpdf/]]
これは秀逸な記事なのだが、

-サンプルのソースコードにタイポがある
-テンプレートとなるnenga.pdfが必要
-ライブラリを1個ずつインストールするのが面倒

なので、ライブラリとサンプルをまとめてzipにしておいた。
#html{{
<a href="/pp/download/pdf-set.zip">pdf-set.zip</a>
}}
これを展開するだけで、sample.phpにアクセスして実行できるはず(PHP 5.1.6で動作確認)
**html2ps/html2pdf [#y30353f1]
http://www.tufat.com/s_html2ps_html2pdf.htm

**html2pdf [#ya052704]
上のやつよりこっちのほうがよさそう。
UTF-8テキストを表示するexampleも含まれている。しかしフォントをなんとかしないと日本語を表示することはできなかった。
内部でTCPDFを使っている。
http://html2pdf.fr/en/default

TCPDFだけでもHTMLをPDF化することはできるので、あえてHTML→PDFライブラリを探す必要はないと思う。
- d -- [[d]] &new{2015-10-13 (火) 18:12:26};

    Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes