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

번들은 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)

번들은 DocumentFactory를 싱글톤으로 구성합니다 — 폰트 레지스트리와 이미지 캐시는 영속 워커에서 요청 간에 유지됩니다. FrankenPHP, RoadRunner 및 모든 Symfony Runtime 구현과 호환됩니다.

패키지 구성

클래스설명
TcpdfNextBundle번들 등록 및 서비스 와이어링
PdfFactoryDI 친화적인 PDF 문서 생성 팩토리
PdfResponse보안 헤더가 포함된 HTTP 응답
GeneratePdfMessage비동기 생성을 위한 Messenger 메시지
GeneratePdfMessageHandler비동기 PDF 생성 핸들러

LGPL-3.0-or-later 라이선스로 배포됩니다.