NextPDF Artisan 통합
한눈에 보기
섹션 제목: “한눈에 보기”nextpdf/artisan은 프레임워크 플러그인이 아니라 라이브러리입니다. 통합하려면 먼저 설치한 뒤 ChromeRendererConfig를 NextPDF 문서에 연결하고 writeHtmlChrome()를 호출합니다. 이 페이지는 나머지 Artisan 문서로 안내하는 길잡이 역할을 합니다.
composer require nextpdf/artisan전체 요구 사항 매트릭스와 외부 Chrome 종속성은 다음에서 확인하세요: /integrations/artisan/install/.
부팅 및 디스커버리
섹션 제목: “부팅 및 디스커버리”Artisan은 서비스 프로바이더, 번들, 프레임워크 자동 디스커버리 매니페스트를 제공하지 않습니다. 직접 사용하는 일반 PSR-4 라이브러리(NextPDF\Artisan\, NextPDF\Parser\)입니다. 따라서 “디스커버리”할 대상이 없습니다. 진입점은 writeHtmlChrome() 메서드이며, 브리지 클래스가 자동 로드 가능해지면 nextpdf/core가 이를 Document에 노출합니다. 디스커버리 및 부트스트랩 모델은 다음에서 확인하세요: /integrations/artisan/boot-and-discovery/.
컨테이너 바인딩
섹션 제목: “컨테이너 바인딩”공개할 컨테이너 통합은 없습니다. DI 컨테이너가 없는 환경에서는 EInvoiceServiceFactory가 정적 팩토리 메서드(makeEmbedder, makeValidator, makeDefaultProfile, makeSchematronRunner)를 제공합니다. 이러한 메서드는 Premium e-invoice 컨트랙트 구현을 반환하며, Premium 등급이 설치되지 않은 경우 null을 반환합니다. 이는 프레임워크 래퍼 패키지의 null 반환 동작을 그대로 반영하므로, 컨테이너가 없는 코드에서도 일관된 인터페이스를 사용할 수 있습니다. 자세한 내용과 근거는 다음에서 확인하세요: /integrations/artisan/boot-and-discovery/.
공개 API 진입점
섹션 제목: “공개 API 진입점”| 진입점 | 위치 | 문서 위치 |
|---|---|---|
Document::writeHtmlChrome()(코어 메서드) | nextpdf/core | 퀵스타트 /integrations/artisan/quickstart/ |
Document::setChromeRendererConfig()(코어 메서드) | nextpdf/core | 퀵스타트 /integrations/artisan/quickstart/ |
ChromeHtmlRenderer::render() | nextpdf/artisan | 프로덕션 사용 /integrations/artisan/production-usage/ |
ChromeRendererConfig / ::fromArray() | nextpdf/artisan | 구성 /integrations/artisan/configuration/ |
EInvoiceServiceFactory::make*() | nextpdf/artisan | 부팅 및 디스커버리 /integrations/artisan/boot-and-discovery/ |
위 표에 있는 writeHtmlChrome()의 시그니처는 (string $html, ?float $width = null, ?float $height = null): static이며, nextpdf/coresrc/Core/Concerns/HasTextOutput.php를 기준으로 검증되었습니다.
스모크 테스트
섹션 제목: “스모크 테스트”<?php
declare(strict_types=1);
use NextPDF\Artisan\ChromeHtmlRenderer;use NextPDF\Artisan\ChromeRendererConfig;
require __DIR__ . '/vendor/autoload.php';
$renderer = new ChromeHtmlRenderer(new ChromeRendererConfig());assert($renderer->getHtmlSecurityPolicy()->getName() === 'default');echo "ARTISAN_WIRED\n";이는 Chrome을 실행하지 않고도 자동 로딩과 nextpdf/core 컨트랙트 바인딩을 확인할 수 있음을 보여 줍니다(동작은 tests/Unit/Artisan/ChromeHtmlRendererTest.php::usesDefaultHtmlSecurityPolicyWhenNoneInjected에서 단언합니다). 실제 Chrome을 사용하는 엔드 투 엔드 렌더링 스모크 테스트는 다음에서 확인하세요: /integrations/artisan/chrome-renderer-setup/.
다음 단계
섹션 제목: “다음 단계”- 첫 문서 렌더링: /integrations/artisan/quickstart/
- 모든 구성 옵션: /integrations/artisan/configuration/
- Chrome / 컨테이너 프로비저닝: /integrations/artisan/chrome-renderer-setup/
- 전송 및 격리 모델: /integrations/artisan/security-and-operations/
- 프로덕션 연결 및 배치 워커: /integrations/artisan/production-usage/
- 실패 진단: /integrations/artisan/troubleshooting/
- 패키지 부팅 방식: /integrations/artisan/boot-and-discovery/
상업적 맥락
섹션 제목: “상업적 맥락”이 브리지는 완전히 작동하는 오픈 소스입니다. Premium 등급은 렌더링된 PDF에 e-invoice 임베딩(Pro)과 검증(Enterprise)을 추가합니다. 해당 등급이 없는 경우 EInvoiceServiceFactory는 null을 반환하는 방식으로 격하되므로, 통합 코드를 한 번만 작성해 Premium 유무와 관계없이 실행할 수 있습니다.
참고 항목
섹션 제목: “참고 항목”- 개요 /integrations/artisan/overview/
- 설치 /integrations/artisan/install/
- 부팅 및 디스커버리 /integrations/artisan/boot-and-discovery/
- 퀵스타트 /integrations/artisan/quickstart/