NextPDF Symfony 통합
한눈에 보기
섹션 제목: “한눈에 보기”패키지 nextpdf/symfony를 설치하고, Flex가 번들을 등록하도록 하거나 직접 등록한 다음, config/packages/nextpdf.yaml을 추가하고, PdfFactory를 주입합니다. 이 페이지는 연결 작업의 인덱스 역할을 합니다. 각 단계는 더 자세한 페이지로 연결됩니다.
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.json의 extra.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.document → PdfDocumentInterface → Document | 비공유, 공개 — 해결할 때마다 새로 생성됨 |
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를 통해 결과를 반환합니다.
<?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/ 을 참고하십시오.
번들 스모크 테스트
섹션 제목: “번들 스모크 테스트”애플리케이션 코드를 작성하지 않아도 연결 상태를 확인할 수 있습니다.
php bin/console debug:container nextpdfphp bin/console debug:config nextpdfphp bin/console lint:containerdebug:container nextpdf는 PdfFactory, nextpdf.document 별칭과 레지스트리를 나열해야 합니다. lint:container는 모든 서비스 인수가 해결되는지 검증합니다. 생성을 테스트하려면 위의 컨트롤러를 추가한 다음 /hello.pdf를 요청하십시오.
공개 API 진입점
섹션 제목: “공개 API 진입점”다음은 애플리케이션 코드에서 지원되는 공개 심볼입니다.
| 심볼 | 용도 |
|---|---|
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-11 | psr_11_container#1.1.2.p4 | 컨테이너 has()/get() 식별자 계약 | |
| PSR-4 | psr_4_autoload#x1.x2.p5 | 자동 로더 네임스페이스 매핑 |
참고 항목
섹션 제목: “참고 항목”- /integrations/symfony/install/ — 요구 사항과 등록.
- /integrations/symfony/boot-and-discovery/ — 검색, 부팅, 컴파일러 패스.
- /integrations/symfony/configuration/ — 전체 스키마 및 서비스 표.
- /integrations/symfony/quickstart/ — 실행 가능한 컨트롤러와 비동기 예제.
- /integrations/symfony/production-usage/ — 워커 안전성과 스트리밍.