Skip to content

Symfony パッケージ

TCPDF-Next Symfony
Symfony · LGPL-3.0

Symfony パッケージは、TCPDF-Next のファーストクラス Symfony 7 統合を提供します — DI コンテナバインディング、PdfFactory サービス、Messenger ベースの非同期生成、OWASP セキュリティヘッダー付き HTTP レスポンスヘルパーを含みます。

インストール

bash
composer require yeeefang/tcpdf-next-symfony

要件: Symfony ^7.0、PHP ^8.5

Bundle は Symfony Flex により自動設定されます。手動で登録する場合:

php
// config/bundles.php
return [
    // ...
    Yeeefang\TcpdfNext\Symfony\TcpdfNextBundle::class => ['all' => true],
];

設定

yaml
# config/packages/tcpdf_next.yaml
tcpdf_next:
    fonts_directory: '%kernel.project_dir%/resources/fonts'
    default_page_size: A4
    default_orientation: portrait
    auto_page_break: true
    margin_bottom: 25.0

PdfFactory サービス

サービスやコントローラにファクトリを注入します:

php
use Yeeefang\TcpdfNext\Symfony\PdfFactory;

class InvoiceController extends AbstractController
{
    public function __construct(
        private readonly PdfFactory $pdfFactory,
    ) {}

    #[Route('/invoice/{id}/pdf')]
    public function download(Invoice $invoice): Response
    {
        $pdf = $this->pdfFactory->create()
            ->setTitle("Invoice #{$invoice->number}")
            ->addPage()
            ->setFont('Helvetica', '', 12)
            ->cell(0, 10, "Invoice #{$invoice->number}");

        return $this->pdfFactory->response($pdf, "invoice-{$invoice->number}.pdf");
    }
}

HTTP レスポンス

PdfResponse クラスは OWASP 推奨のセキュリティヘッダー付きで PDF を返します:

php
use Yeeefang\TcpdfNext\Symfony\Http\PdfResponse;

// インライン表示(ブラウザプレビュー)
return PdfResponse::inline($pdf, 'report.pdf');

// 強制ダウンロード
return PdfResponse::download($pdf, 'report.pdf');

Messenger 統合

PDF 生成を Messenger ワーカーにディスパッチします:

php
use Yeeefang\TcpdfNext\Symfony\Messenger\GeneratePdfMessage;

$this->bus->dispatch(new GeneratePdfMessage(
    template: 'invoice',
    data: ['invoice_id' => $invoice->id],
    outputPath: "/tmp/invoice-{$invoice->id}.pdf",
));

ワーカーセーフ(FrankenPHP / RoadRunner)

Bundle は DocumentFactory をシングルトンとして設定します — フォントレジストリと画像キャッシュは永続ワーカーのリクエスト間で保持されます。FrankenPHP、RoadRunner、およびすべての Symfony Runtime 実装で動作します。

パッケージ内容

クラス説明
TcpdfNextBundleBundle の登録とサービスワイヤリング
PdfFactoryDI 対応の PDF ドキュメント作成ファクトリ
PdfResponseセキュリティヘッダー付き HTTP レスポンス
GeneratePdfMessage非同期生成用の Messenger メッセージ
GeneratePdfMessageHandler非同期 PDF 生成のハンドラー

LGPL-3.0-or-later ライセンスの下で公開されています。