概要
既存PDFを修正するっていう案件が来て、phpからpdfを操作するライブラリを調べてましたが、 TCPDF
+ FPDI
がいいかなという結論になったので、早速使ってみました。
調べるといろいろ記事があったので楽勝かなと思ったんですが、古い情報が多くて結構手こずりました。
以下、手順を備忘録的に残しておきます。
手順
(1) composerインストール
TCPDFもFPDIもpackagistにありますので、落としてきまます。
fpdiからtcpdfを使用するための fpdi-tcpdf
なるものも一緒に落とします。
(2) 実装コード
$pdf = new FPDI();
$pdf->setSourceFile("test.pdf");
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->addPage();
$importPage = $pdf->importPage(1);
$pdf->useTemplate($importPage, 0, 0);
$pdf->SetFont("kozminproregular", "", 12);
$pdf->Text(50, 100, "ポケモンゲットだぜ!!");
$pdf->Output("/tmp/output.pdf", "F");
実装コードの説明
$pdf->setSourceFile("test.pdf");
編集したいpdfファイルを指定してます。
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
pdfのheader部分、fotter部分を表示しないように指定しています。
特に $pdf->setPrintHeader(false);
に関しては、これを指定していないと、outputで出力したpdfの上の方に横線が入ってしまっていました。
特別な理由がない限りfalseで指定してしまっていいと思います。
$importPage = $pdf->importPage(1);
$pdf->addPage();
$pdf->useTemplate($importPage, 0, 0);
PDFテンプレートの指定ページを設定しています。
-
$pdf->importPage(1);
で読み込んだpdfの1ページ目の情報を取得します。 -
$pdf->addPage();
で新ページを作成します。 -
$pdf->useTemplate($importPage, 0, 0);
で読み込んだpdfの情報をテンプレートに指定します。
$pdf->SetFont("kozminproregular", "", 12);
フォントを設定します。
kozminproregularはtcpdfがサポートしている日本語フォントのようです。
$pdf->Text(50, 100, "ポケモンゲットだぜ!!");
x=50, y=100のところに、"ポケモンゲットだぜ!!という文字を書き込みます。
$pdf->Output("/tmp/output.pdf", "F");
指定パスに、pdfを出力します。第二引数の F
はローカルファイルとして出力するモードの指定になります。
最後に
今回 TCPDF
+ FPDI
で実行しましたが、「こっちのライブラリのほうがいいよ」みたいな情報お待ちしております。