LaravelでPDFを作成する

既存の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のテンプレートに含まれている文字列になります。)

to-create-a-pdf-with-laravel01

 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

1件のコメント

  1. […] laravel tcpdf でググると出てくるのはこっち setasign/fpdi、setasign/fpdf-tcpdf も必要 参考1、参考2 […]

Laravelとか | 日々のできごと へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年4月
 123456
78910111213
14151617181920
21222324252627
282930