【PHP】TCPDF 4.5.xxx+FPDIで既存PDFの読み込みと編集

TCPDF 4.5 + FPDI 1.2.1で既存PDFを編集しようとしてみたけど、バージョンの関係で動かず。どうしたものかと思ったらfpdi.phpを修正するパッチがありました。ここから。

FPDIのバージョンアップで対応すると思いますが、取り急ぎの場合はこれで解決。
<2009/03/22 追記>
最新のFPDI 1.3でパッチを当てなくても正常に動作することを確認。

日本語が含まれたPDFを読み込んでも正常に表示。独自にフォントを追加した場合はファイルサイズが大きくなるけど、フォントを埋め込んでいるのでこれはしょうがない。

TCPDFの標準日本語フォントを使った場合はファイルサイズは大きくならなかった。
・・・ということは、日本語OS以外で開いた場合は文字化けしそう。・・・ま、いっか。

TCPDFのマニュアルは下記サイトが分かりやすい。

TCPDFに関するリファレンス

 

<インストール方法>

TCPDFをダウンロードしてきて、TCPDFというフォルダに保存。

FPDIのダウンロードサイトからFPDIとFPDF_TPLをそれぞれダウンロードしてきてFPDIとフォルダに保存。もちろんパッチを適用しとく。FPDF_TPLはFPDIフォルダに置く。

次は2つのコンポーネントを読み込むPHPファイルを作成。

set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/FPDI');
require('TCPDF/config/lang/jpn.php');
require('TCPDF/tcpdf.php');
require('FPDI/fpdi.php'); 

class exPDF extends FPDI
{
}

これをexPDF.phpの名前で保存したとすると、動作確認は次のような感じ。

require_once('exPDF.php');

$objPdf =& new exPDF();
$objPdf->AddPage();
$objPdf->setSourceFile('template.pdf');
$iIndex = $objPdf->importPage(1);
$objPdf->useTemplate($iIndex);

$objPdf->SetFont("kozgopromedium", "", 9);
$objPdf->MultiCell(0, 0, "テスト", 1, 'R', 0, 1, 100, 10);

$objPdf->Output('newpdf.pdf', 'F');

TCPDF/config/lang/jpn.phpはeng.phpをコピーして作る。ファイルの文字コードはUTF-8で保存。

$l = Array();

// PAGE META DESCRIPTORS -----------------

$l['a_meta_charset'] = "UTF-8";
$l['a_meta_dir'] = "jpn";
$l['a_meta_language'] = "ja";

// TRANSLATIONS ---------------------------
$l['w_page'] = "ページ";

<関連記事>