既存のPDFをテンプレートとして、Laravelで文字列を追加して出力してみます。
サンプルコード
composer.jsonにTCPDFとFPDIを追加します。
composer.json
// 変更前 "require": { "php": ">=5.5.9", "laravel/framework": "5.2.*" }, // 変更後 "require": { "php": ">=5.5.9", "laravel/framework": "5.2.*", "tecnickcom/tcpdf": "6.2.*", "setasign/fpdi-tcpdf": "1.6.1" },
tecnick.com/tcpdfは破棄されているようなので、tecnickcom/tcpdfを使うようにしてください。
setasign/fpdiは今回TCPDFを使用するので、setasign/fpdi-tcpdfとしています。
コマンドプロンプトで作業ディレクトリまで移動して、下記コマンドを実行します。
composer update
app\Http\routes.php
Route::get('/pdf', 'PdfController@getIndex');
app\Http\Controllers\PdfController.php
<?php namespace App\Http\Controllers; use FPDI; class PdfController extends Controller { public function getIndex() { $receipt = new FPDI(); // PDFの余白(上左右)を設定 $receipt->SetMargins(0, 0, 0); // ヘッダー・フッターの出力を無効化 $receipt->setPrintHeader(false); $receipt->setPrintFooter(false); // ページを追加 $receipt->AddPage(); // テンプレートを読み込み $receipt->setSourceFile(public_path() . '/data/base.pdf'); // 読み込んだPDFの1ページ目のインデックスを取得 $tplIdx = $receipt->importPage(1); // 読み込んだPDFの1ページ目をテンプレートとして使用 $receipt->useTemplate($tplIdx, null, null, null, null, true); // 書き込む文字列のフォントを指定 $receipt->SetFont('', '', 20); // 書き込む位置 $receipt->SetXY(13, 30); // 文字列を書き込む $receipt->Write(0, 'add string test!!'); // PDFを出力 $receipt->Output('sample.pdf', 'I'); } }
ベースになるPDFは、 \public\data\base.pdf に格納しています。
/pdfにアクセスすると、以下のように表示されました。
(This is an sample PDF printed with pdfMake.という文字列はPDFのテンプレートに含まれている文字列になります。)
【参考サイト】
- PHP – [PHP] ララベルでTCPDFを使うには?(6870)|teratail
- Laravel5.1でbladeテンプレートを用いてPDFを作る – Qiita
- PHPでPDF帳票を出力する方法(TCPDF + FPDI) – Qiita
- [PHP]既存テンプレート用PDFに書き込みをする。TCPDF + FPDI PHP| システム開発ブログ(システム開発のアイロベックス|東京都新宿区の業務システム開発会社)
コメントが承認されるまで時間がかかります。