콘텐츠로 이동

NextPDF Symfony 통합

패키지 nextpdf/symfony를 설치하고, Flex가 번들을 등록하도록 하거나 직접 등록한 다음, config/packages/nextpdf.yaml을 추가하고, PdfFactory를 주입합니다. 이 페이지는 연결 작업의 인덱스 역할을 합니다. 각 단계는 더 자세한 페이지로 연결됩니다.

Terminal window
composer require nextpdf/symfony

이 번들은 nextpdf/core^3.0 || ^5.2, symfony/*^7.2, psr/log^3.0이 필요합니다. 클래스는 PSR-4 접두사 NextPDF\Symfony\ 아래에서 자동 로드되며, src/Symfony/에 매핑됩니다. PSR-4 자동 로더는 네임스페이스 접두사를 해당 기본 디렉터리에서 확인합니다(PSR-4 §2). 전체 요구 사항과 선택적 패키지는 /integrations/symfony/install/ 을 참고하십시오.

Symfony Flex에서는 번들 composer.jsonextra.symfony.bundles 항목이 모든 환경에 대해 NextPDF\Symfony\NextPdfBundle을 등록합니다. Flex가 없으면 config/bundles.php에 직접 추가하십시오.

return [
NextPDF\Symfony\NextPdfBundle::class => ['all' => true],
];

전체 부팅 시퀀스와 컴파일러 패스 동작은 /integrations/symfony/boot-and-discovery/ 을 참고하십시오.

번들의 config/services.php 파일은 다음 서비스를 등록합니다.

서비스 / 별칭수명 주기
NextPDF\Symfony\Service\PdfFactory공유됨, 공개 — 이 서비스를 주입하십시오
nextpdf.documentPdfDocumentInterfaceDocument비공유, 공개 — 해결할 때마다 새로 생성됨
NextPDF\Contracts\FontRegistryInterface공유됨, 워밍업 후 잠김
NextPDF\Graphics\ImageRegistry공유됨, kernel.reset
NextPDF\Contracts\DocumentFactoryInterface공유됨
NextPDF\Symfony\Http\PdfResponse공개, 무상태 헬퍼

문서 바인딩은 의도적으로 비공유로 설정되어 있습니다. PSR-11은 컨테이너가 하나의 ID에 대해 연속된 get() 호출에서 서로 다른 값을 반환하도록 허용합니다. 새 문서는 장기 실행 워커에서 요청 간 상태가 공유되지 않도록 합니다(PSR-11 §1.1.2). 조건부 EInvoice 바인딩을 포함한 전체 서비스 및 별칭 표는 /integrations/symfony/configuration/ 을 참고하십시오.

구성 별칭은 nextpdf입니다. config/packages/nextpdf.yaml을 생성합니다. Flex 레시피가 게시되면 기본 사본을 대신 생성합니다. 모든 키에는 기본값이 있으므로 최소 파일은 다음과 같습니다.

nextpdf: ~

전체 구성 트리는 /integrations/symfony/configuration/ 에 문서화되어 있습니다.

먼저 PdfFactory를 주입한 다음, PdfResponse를 통해 결과를 반환합니다.

src/Controller/PdfController.php
<?php
declare(strict_types=1);
namespace App\Controller;
use NextPDF\Symfony\Http\PdfResponse;
use NextPDF\Symfony\Service\PdfFactory;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
final class PdfController
{
#[Route('/hello.pdf', name: 'hello_pdf')]
public function hello(PdfFactory $pdf): Response
{
$doc = $pdf->create();
$doc->addPage();
$doc->cell(0, 10, 'Hello from NextPDF on Symfony.');
return PdfResponse::inline($doc, 'hello.pdf');
}
}

엔드 투 엔드 컨트롤러와 Messenger 비동기 경로는 /integrations/symfony/quickstart/ 을 참고하십시오.

애플리케이션 코드를 작성하지 않아도 연결 상태를 확인할 수 있습니다.

Terminal window
php bin/console debug:container nextpdf
php bin/console debug:config nextpdf
php bin/console lint:container

debug:container nextpdfPdfFactory, nextpdf.document 별칭과 레지스트리를 나열해야 합니다. lint:container는 모든 서비스 인수가 해결되는지 검증합니다. 생성을 테스트하려면 위의 컨트롤러를 추가한 다음 /hello.pdf를 요청하십시오.

다음은 애플리케이션 코드에서 지원되는 공개 심볼입니다.

심볼용도
NextPDF\Symfony\Service\PdfFactory::create()새로 생성되고 사전 구성된 Document
NextPDF\Symfony\Http\PdfResponse::inline() / download()보안 헤더가 포함된 버퍼링된 응답
NextPDF\Symfony\Http\PdfResponse::streamInline() / streamDownload()청크 단위로 스트리밍되는 응답
NextPDF\Symfony\Message\GeneratePdfMessage비동기 생성 DTO(검증됨)
NextPDF\Symfony\Message\PdfBuilderInterface핸들러가 확인하는 빌더 계약

각 행은 이 페이지에서 제시하는 규범적 주장입니다. 각 주장은 게이트된 SDO 코퍼스의 전체 64자리 16진수 reference_id에 고정됩니다. 출처(코퍼스 매니페스트, 검색 전송)는 _sidecars/rag-citations.yaml에 있습니다.

사양조항reference_id 참조 ID주장
PSR-11psr_11_container#1.1.2.p4컨테이너 has()/get() 식별자 계약
PSR-4psr_4_autoload#x1.x2.p5자동 로더 네임스페이스 매핑
  • /integrations/symfony/install/ — 요구 사항과 등록.
  • /integrations/symfony/boot-and-discovery/ — 검색, 부팅, 컴파일러 패스.
  • /integrations/symfony/configuration/ — 전체 스키마 및 서비스 표.
  • /integrations/symfony/quickstart/ — 실행 가능한 컨트롤러와 비동기 예제.
  • /integrations/symfony/production-usage/ — 워커 안전성과 스트리밍.