LoginSignup
31
38

More than 5 years have passed since last update.

TCPDF + FPDIで既存PDFに日本語文章を追加

Last updated at Posted at 2016-07-24

概要

既存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テンプレートの指定ページを設定しています。

  1. $pdf->importPage(1); で読み込んだpdfの1ページ目の情報を取得します。
  2. $pdf->addPage(); で新ページを作成します。
  3. $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 で実行しましたが、「こっちのライブラリのほうがいいよ」みたいな情報お待ちしております。

31
38
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
38