パッケージをインストール
composer require tecnickcom/tcpdf
出力するコード
- Controllerに直接記載するでも、Serviceクラスを作って汎用化するでもOK
<?php
namespace App\Services;
// 上部でパッケージを読み込む
use setasign\Fpdi\TcpdfFpdi;
class FileService
{
exportPdf()
{
// まずは初期設定
$pdf = new TcpdfFpdi();
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->SetAutoPageBreak(false);
$pdf->SetMargins(0, 0, 0);
$pdf->addPage();
// テンプレートを読み込み
$template_path = resource_path('pdf/template.pdf');
$pdf->setSourceFile($template_path);
$page = $pdf->importPage(1);
$pdf->useTemplate($page);
$pdf->setFont('kozgopromedium');
// 文字を出力
$pdf->SetXY(164, 42); // 座標軸で位置を指定
$pdf->Write(0, '出力する文字列です'); // 文字を指定 (第一引数はLineHeight)
// ファイル出力
$this->outputPdf($pdf, 'ダウンロードされるファイル名.pdf');
}
}
補足
- 今回PDFのテンプレートは
resource_path()
で読み込むので下記に配置してる
/resources/pdf/*
文字色を変える場合
$pdf->SetXY(95, 5); // 座標軸で位置を指定
$pdf->SetTextColor(245,245,245); // 文字色をrgbで指定
$pdf->Write(0, '白色の文字です'); // 文字を出力
文字をセンターに配置する場合
$text = '出力する文字列です';
// 文字列の長さを取得
$textWidth = $pdf->GetStringWidth($text);
// 長さから中央の座標軸を取得
$x = ($pageWidth - $textWidth) / 2;
$y = $pageHeight / 2;
// 中央座標を指定して出力
$pdf->Text($x, $y, $text);
// y軸は指定してx軸だけセンタリングしたい場合
$pdf->Text($x, 72, $text);
// x軸は指定してy軸だけセンタリングしたい場合
$pdf->Text(30, $y, $text);
LaravelでPDF出力をする際にtcpdfを用いてあれこれしたときのメモ
素のPHPでも使えるはず