콘텐츠로 이동

Artisan API 레퍼런스

Artisan 패키지(nextpdf/artisan)는 서로 연결된 두 API 그룹을 제공합니다. 하나는 HTML 조각을 Chrome으로 생성한 PDF로 변환하는 Chrome 렌더링 API 표면 — ChromeRendererConfig, ChromeHtmlRenderer, ChromeSecurityPolicy, ChromeRenderResult, ViewportCalculator, BrowserPool — 이고, 다른 하나는 범위가 좁은 parser/importer 표면 — PdfReader, PageImporter, ImportedFormXObject 및 보조 tokenizer/xref 클래스 — 로, 렌더링된 출력을 텍스트 선택이 가능한 Form XObject로 NextPDF 문서에 다시 임베드합니다.

여기서 시작하세요. HTML에서 PDF만 얻으려는 경우 이 패키지를 직접 다룰 일은 거의 없습니다. ChromeRendererConfig를 NextPDF Document에 연결한 다음 writeHtmlChrome()를 호출하세요(빠른 시작 참조). 아래 클래스들은 렌더러를 워커에 임베드하거나 파서 진단을 수행할 때만 사용하세요. 일반 작업의 첫 번째 예제가 이 단일 호출 경로를 보여줍니다.

아래 세 가지 흐름은 최상위 호출부터 명시적인 렌더링 및 가져오기 파이프라인까지 거의 모든 실제 사용 사례를 다룹니다. 모든 샘플은 nextpdf-Artisan/src와 패키지의 README.md / ci/tests/를 기준으로 검증됩니다.

HTML 조각을 텍스트 선택이 가능한 PDF로 렌더링합니다. 단 하나의 표준 호출입니다.

<?php
declare(strict_types=1);
use NextPDF\Core\Document;
use NextPDF\Artisan\ChromeRendererConfig;
require __DIR__ . '/vendor/autoload.php';
$config = new ChromeRendererConfig(chromeBinaryPath: '/usr/bin/chromium');
$doc = Document::createStandalone();
$doc->setChromeRendererConfig($config);
$doc->addPage();
$doc->writeHtmlChrome('<div style="display:flex;gap:20px"><h2>Revenue</h2><p>$124,500</p></div>');
$doc->save('/tmp/report.pdf');

동작 방식: Chrome이 조각의 레이아웃을 잡고, 브리지가 0번 페이지를 Form XObject로 임베드하여 텍스트가 선택 가능한 상태로 유지됩니다. writeHtmlChrome(string $html, ?float $width = null, ?float $height = null): static$heightnull일 때 높이를 자동으로 맞춥니다.

렌더러를 직접 실행하고 페이지도 직접 가져옵니다. 워커와 사용자 지정 배치를 위한, writeHtmlChrome() 이면의 명시적 파이프라인입니다.

<?php
declare(strict_types=1);
use NextPDF\Artisan\ChromeHtmlRenderer;
use NextPDF\Artisan\ChromeRendererConfig;
use NextPDF\Artisan\ImportedFormXObject;
use NextPDF\Artisan\PageImporter;
use NextPDF\Parser\PdfReader;
$renderer = new ChromeHtmlRenderer(new ChromeRendererConfig(renderTimeout: 30));
try {
$result = $renderer->render($html, widthPt: 595.28);
$reader = new PdfReader($result->getPdfData());
$reader->parse();
$form = (new PageImporter())->import($reader);
} finally {
$renderer->close();
}

동작 방식: Chrome이 PDF 바이트로 렌더링하고, 이를 파싱한 뒤, 0번 페이지를 배치 가능한 ImportedFormXObject로 가져옵니다. Chrome 프로세스를 해제하려면 항상 렌더러에서 close()를 호출하세요.

하드코딩된 생성자 인수 대신 config/*.php 또는 번들 매개변수를 사용하려면, 프레임워크 스타일 배열에서 구성을 빌드합니다.

<?php
declare(strict_types=1);
use NextPDF\Artisan\ChromeRendererConfig;
$config = ChromeRendererConfig::fromArray([
'chrome_binary' => '/usr/bin/chromium',
'render_timeout' => 45,
'max_html_size' => 2_000_000,
'no_sandbox' => false,
]);

동작 방식: snake_case 구성 배열을 생성자에 매핑합니다. 설정되지 않은 키는 기본값으로 대체되며, chrome_binary는 비어 있지 않은 문자열일 때만 적용됩니다.

이 타입들은 렌더링을 시작하고 실행합니다. ChromeRendererConfig를 빌드해 ChromeHtmlRenderer에 전달한 다음, render()를 호출하여 ChromeRenderResult를 얻습니다.

심볼매개변수기본 동작반환값예외 또는 실패 조건참고
new ChromeRendererConfig(?string $chromeBinaryPath = null, int $renderTimeout = 30, string $defaultCss = '', int $maxHtmlSize = 5000000, bool $noSandbox = false)바이너리 경로, 타임아웃, CSS, HTML 크기 제한, 샌드박스 플래그입니다.바이너리 경로가 null일 때 Chrome을 자동으로 감지합니다. 샌드박스는 비활성화하지 않는 한 활성 상태로 유지됩니다.ChromeRendererConfig예상되는 예외 없음.런타임에서 필요한 경우에만 noSandbox를 설정하세요.
ChromeRendererConfig::fromArray(array $config)chrome_binary, render_timeout, default_css, max_html_size, no_sandbox입니다.누락된 값은 생성자 기본값을 사용합니다.ChromeRendererConfig타입이 일치하지 않으면 선택적 키에 대해 기본값으로 대체됩니다.프레임워크 스타일 구성 배열에 대응됩니다.
new ChromeHtmlRenderer(ChromeRendererConfig $config, ?LoggerInterface $logger = null, ?HtmlSecurityPolicyInterface $htmlSecurityPolicy = null)구성, 선택적 로거, 선택적 파싱 계층 HTML 정책입니다.정책이 제공되지 않으면 DefaultHtmlSecurityPolicy를 사용합니다.ChromeHtmlRendererChrome 설정 오류는 첫 렌더링 시 발생합니다.렌더러는 close()가 호출될 때까지 브라우저 풀을 소유합니다.
ChromeHtmlRenderer::render(string $html, float $widthPt, float $heightPt = 0)html: 입력 조각; widthPt: 용지 너비; heightPt: 목표 높이 또는 자동입니다.콘텐츠 높이는 heightPt <= 0일 때 자동으로 계산됩니다.ChromeRenderResultChromeRenderException; HTML 크기 검증 실패.CDP 를 통해 하위 리소스 네트워크 요청을 차단합니다.
ChromeHtmlRenderer::getHtmlSecurityPolicy()없음.구성된 파싱 계층 정책을 반환합니다.HtmlSecurityPolicyInterface예상되는 예외 없음.Chrome의 전송 계층 제어를 보완합니다.
ChromeHtmlRenderer::close()없음.브라우저 풀을 닫고 비웁니다.void기반 라이브러리에서 브라우저 종료 오류가 표면화될 수 있습니다.워커 종료 시 호출합니다.

렌더링 전에 외부 HTML을 직접 검증하고 래핑하려면, ChromeHtmlRenderer::render()(이미 이를 호출함)를 거치는 대신 이들을 사용하세요.

심볼매개변수기본 동작반환값예외 또는 실패 조건참고
ChromeSecurityPolicy::validate(string $html, int $maxSize)HTML 입력과 최대 바이트 크기입니다.크기와 허용되지 않는 구문이 검증을 통과한 경우에만 입력을 허용합니다.voidChromeRenderException 또는 검증 예외입니다.외부 HTML을 받아들일 때 브라우저 렌더링 전에 실행하세요.
ChromeSecurityPolicy::wrapHtml(string $html, int $viewportWidth, string $defaultCss = '')HTML 조각, 뷰포트 너비, 선택적 기본 CSS입니다.조각을 감싸는 완전한 렌더링 문서를 생성합니다.string검증 또는 문자열 구성 오류입니다.렌더러 전용 CSS를 애플리케이션 HTML과 분리하여 유지합니다.

렌더링 출력(ChromeRenderResult)을 읽고, 뷰포트 크기를 정하거나 높이를 계산할 때 PDF 포인트와 Chrome CSS 픽셀 간 변환에 이들을 사용하세요.

심볼매개변수기본 동작반환값예외 또는 실패 조건참고
new ChromeRenderResult(string $pdfData, float $widthPt, float $heightPt, float $contentHeightCssPx)원시 PDF 바이트, 너비, 높이, 측정된 콘텐츠 높이입니다.타입이 지정된 생성자 속성 이외의 검증은 없습니다.ChromeRenderResult예상되는 예외 없음.일반적으로 ChromeHtmlRenderer::render()에서 반환됩니다.
ChromeRenderResult::getPdfData()없음.Chrome이 생성한 원시 PDF 바이트를 반환합니다.string예상되는 예외 없음.임베드할 때 PdfReaderPageImporter와 함께 사용하세요.
ChromeRenderResult::getWidthPt()없음.요청된 너비를 포인트 단위로 반환합니다.float예상되는 예외 없음.가져온 폼 객체의 크기를 정하는 데 사용됩니다.
ChromeRenderResult::getHeightPt()없음.계산되거나 요청된 높이를 포인트 단위로 반환합니다.float예상되는 예외 없음.자동 높이에는 인쇄 레이아웃 버퍼가 포함됩니다.
ViewportCalculator::pointsToCssPx(float $pt)pt: PDF 포인트입니다.72 PDF 포인트당 96 CSS px 기준으로 변환합니다.int예상되는 예외 없음.Chrome 뷰포트 너비에 맞게 반올림됩니다.
ViewportCalculator::cssPxToPoints(float $px)px: CSS 픽셀입니다.96 CSS px당 72 PDF 포인트 기준으로 변환합니다.float예상되는 예외 없음.자동 높이 계산에 사용됩니다.

이것이 핵심 가져오기 경로입니다. PdfReader로 Chrome PDF 바이트를 파싱한 다음, 임베드 가능한 페이지를 얻기 위해 리더를 PageImporter::import()에 전달합니다. 나머지 PdfReader 메서드는 진단을 지원합니다.

심볼매개변수기본 동작반환값예외 또는 실패 조건참고
new PdfReader(string $data)data: 완전한 PDF 바이트입니다.파서는 parse()가 호출되기 전까지 실행되지 않습니다.PdfReader예상되는 예외 없음.Chrome이 생성한 PDF를 위해 설계되었습니다.
PdfReader::parse()없음.xref 체인과 트레일러를 파싱합니다.voidPdfParseException — 잘못된 PDF 구조인 경우.object/page 접근 전에 반드시 호출해야 합니다.
PdfReader::getObject(int $objNum)객체 번호입니다.파싱된 객체를 번호로 확인합니다.PdfObjectPdfParseException — 객체가 누락되었거나 형식이 잘못된 경우.이 메서드는 parse() 이후에 사용하세요.
PdfReader::getTrailer()없음.파싱된 트레일러 딕셔너리를 반환합니다.arrayPdfParseException — 트레일러 데이터를 사용할 수 없는 경우.진단 및 리비전 분석에 사용됩니다.
PdfReader::getObjectNumbers()없음.파싱된 객체 번호를 반환합니다.array파싱 이후 예상되는 예외 없음.임포터 진단에 유용합니다.
PdfReader::getPage(int $pageIndex)pageIndex: 0부터 시작하는 페이지 인덱스입니다.암시적 파싱은 수행하지 않습니다.PdfObjectPdfParseException — 누락되었거나 범위를 벗어난 경우.임포터는 기본적으로 0번 페이지를 사용합니다.
PdfReader::getPageContentStream(PdfObject $page)page: 파싱된 페이지 객체입니다.콘텐츠 스트림을 확인합니다.stringPdfParseException — 잘못된 스트림인 경우.빈 스트림은 임포터 실패를 유발합니다.
PdfReader::getPageResources(PdfObject $page)page: 파싱된 페이지 객체입니다.페이지 리소스를 확인합니다.arrayPdfParseException — 잘못된 리소스인 경우.리소스 딕셔너리는 폼 객체와 함께 임베드됩니다.
PdfReader::getPageMediaBox(PdfObject $page)page: 파싱된 페이지 객체입니다.없는 경우 A4와 유사한 크기로 대체합니다.array파서 실패.PDF 공간 좌표를 반환합니다.
PdfReader::resolveRef(mixed $value)파싱된 값입니다.해당하는 경우 객체 참조를 재귀적으로 확인합니다.mixedPdfParseException — 잘못된 참조인 경우.임포터 워크플로를 위해 노출된 내부 스타일 헬퍼입니다.
PdfReader::collectPageResources(PdfObject $page)page: 파싱된 페이지 객체입니다.페이지 리소스 참조를 순회합니다.array파서 실패.가져온 페이지와 함께 종속 객체를 임베드하는 데 사용됩니다.
PdfReader::getRevisionCount()없음.파싱된 증분 리비전 수를 셉니다.int파싱 이후 예상되는 예외 없음.서명되었거나 증분 업데이트된 PDF에 유용합니다.
PdfReader::getRevisionXRef(int $index)0부터 시작하는 리비전 인덱스입니다.하나의 리비전 xref 테이블을 반환합니다.RevisionXRefTablePdfParseException — 잘못된 인덱스인 경우.저수준 리비전 진단에 사용하세요.
PdfReader::getRevisions()없음.파싱된 모든 리비전 xref 테이블을 반환합니다.array파싱 이후 예상되는 예외 없음.읽기 전용 파서 상태 뷰입니다.
PageImporter::import(PdfReader $reader, int $pageIndex = 0)파싱된 리더와 0부터 시작하는 페이지 인덱스입니다.생략하면 첫 번째 페이지를 가져옵니다.ImportedFormXObjectPdfParseException — 페이지를 추출할 수 없는 경우.콘텐츠 스트림, 미디어 박스, 리소스 및 참조된 객체를 수집합니다.

이들은 파서가 반환하거나 내부적으로 사용하는 값 객체 및 헬퍼입니다. 가져온 객체, 리소스, 스트림 또는 리비전 테이블을 검사할 때 사용하세요.

심볼매개변수기본 동작반환값예외 또는 실패 조건참고
new ImportedFormXObject(string $contentStream, array $mediaBox, array $embeddedObjects, array $resourcesDict)디코딩된 콘텐츠 스트림, 미디어 박스, 임베드된 객체, 리소스 딕셔너리입니다.자체 완결형으로 가져온 폼 페이로드를 저장합니다.ImportedFormXObject예상되는 예외 없음.일반적으로 PageImporter::import()에서 반환됩니다.
ImportedFormXObject::getWidth()없음.가져온 폼 너비를 포인트 단위로 반환합니다.float예상되는 예외 없음.Chrome 출력을 페이지에 배치할 때 사용하세요.
ImportedFormXObject::getHeight()없음.가져온 폼 높이를 포인트 단위로 반환합니다.float예상되는 예외 없음.자동 높이 렌더 결과는 이 값을 통해 전파됩니다.
ImportedFormXObject::getEmbeddedObjects()없음.가져온 폼에 필요한 객체를 반환합니다.array예상되는 예외 없음.라이터 코드는 리소스를 보존하기 위해 이 객체들을 사용합니다.
ImportedFormXObject::getResourcesDict()없음.가져온 리소스 딕셔너리를 반환합니다.array예상되는 예외 없음.폼 XObject를 빌드할 때 사용됩니다.
ImportedFormXObject::getMediaBox()없음.가져온 미디어 박스를 반환합니다.array예상되는 예외 없음.배치 진단에 사용하세요.
ImportedFormXObject::getContentStream()없음.가져온 페이지 콘텐츠 스트림을 반환합니다.string예상되는 예외 없음.writer/import 통합을 위한 것입니다.
new PdfObject(int $objectNumber, int $generation, array $dictionary, ?string $rawStreamData = null, ?string $decodedStreamData = null, ?string $rawDictionaryBytes = null)객체 번호, 세대, 파싱된 딕셔너리, 선택적 스트림 바이트, 선택적 디코딩된 스트림, 선택적 원시 딕셔너리 바이트입니다.파싱된 객체 상태를 저장합니다.PdfObject예상되는 예외 없음.파서 내부에서 생성됩니다.
PdfObject::getRawDictionaryBytes()없음.가능한 경우 원래 딕셔너리 바이트를 반환합니다.`stringnull`예상되는 예외 없음.
PdfObject::getRawStreamData()없음.가능한 경우 디코딩되지 않은 스트림 바이트를 반환합니다.`stringnull`예상되는 예외 없음.
PdfObject::getDictionary()없음.파싱된 딕셔너리 항목을 반환합니다.array예상되는 예외 없음.읽기 전용 파서 뷰입니다.
PdfObject::get(string $key)딕셔너리 키입니다.키가 없는 경우 null을 반환합니다.mixed예상되는 예외 없음.호출자가 원시 딕셔너리를 직접 파싱하지 않도록 합니다.
PdfObject::getRef(string $key)딕셔너리 키입니다.값이 참조인 경우 객체 참조 튜플을 반환합니다.`arraynull`예상되는 예외 없음.
PdfObject::getArray(string $key)딕셔너리 키입니다.배열 값을 반환하거나, 사용할 수 없는 경우 빈 배열을 반환합니다.array예상되는 예외 없음.배열 값을 갖는 딕셔너리 항목을 위한 편의 래퍼입니다.
PdfObject::hasStream()없음.스트림 바이트가 존재하는지 확인합니다.bool예상되는 예외 없음.딕셔너리 전용 객체를 구분합니다.
PdfObject::getType()없음.딕셔너리에서 /Type을(를) 읽습니다.`stringnull`예상되는 예외 없음.
PdfObject::getSubtype()없음.딕셔너리에서 /Subtype을(를) 읽습니다.`stringnull`예상되는 예외 없음.
RevisionExtractor::extractRevision(string $pdfData, PdfReader $reader, int $revision)PDF 바이트, 파싱된 리더, 0부터 시작하는 리비전 인덱스입니다.하나의 증분 리비전을 추출합니다.stringPdfParseException — 잘못된 경계인 경우.파서 테스트 및 진단에 사용됩니다.
RevisionExtractor::getRevisionBoundaries(string $pdfData, PdfReader $reader)PDF 바이트와 파싱된 리더입니다.증분 리비전의 바이트 범위를 찾습니다.arrayPdfParseException — 형식이 잘못된 xref 구조인 경우.서명되었거나 증분 업데이트된 PDF 를 분석하는 데 도움이 됩니다.
`StreamDecoder::decode(string $data, stringarray $filter)`스트림 바이트와 하나 이상의 PDF 필터입니다.필터를 순서대로 적용합니다.stringPdfParseException — 지원되지 않거나 잘못된 필터인 경우.
new ResourceCollector(PdfReader $reader)파싱된 리더입니다.비어 있는 수집 객체 집합으로 시작합니다.ResourceCollector예상되는 예외 없음.리소스 수집은 PdfReader::collectPageResources()에서 사용됩니다.
ResourceCollector::traverse(mixed $value, int $depth = 0)파싱된 값과 재귀 깊이입니다.내부 깊이 제한까지 리소스 참조를 순회합니다.void잘못된 참조에 대한 파서 실패.페이지 가져오기 리소스 클로저를 위한 내부 헬퍼입니다.
ResourceCollector::getCollected()없음.수집된 리소스 객체를 반환합니다.array예상되는 예외 없음.이 메서드는 traverse() 이후에 호출하세요.
new RevisionXRefTable(int $index, int $xrefOffset, array $xrefEntries, array $trailer, ?int $prevOffset)리비전 인덱스, xref 오프셋, xref 항목, 트레일러, 선택적 이전 오프셋입니다.하나의 증분 리비전에 대한 불변 스냅샷입니다.RevisionXRefTable예상되는 예외 없음.파서 내부에서 생성됩니다.
RevisionXRefTable::getObjectNumbers()없음.리비전 테이블에서 활성 상태인 객체 번호를 반환합니다.array예상되는 예외 없음.저수준 리비전 진단 API입니다.
RevisionXRefTable::getActiveObjectCount()없음.활성 객체 수를 셉니다.int예상되는 예외 없음.파서 어서션에 유용합니다.
RevisionXRefTable::hasRootUpdate()없음.리비전이 문서 루트를 업데이트하는지 여부를 보고합니다.bool예상되는 예외 없음.증분 업데이트 분석에 유용합니다.
RevisionXRefTable::getSize()없음.xref 테이블 크기 값을 반환합니다.int예상되는 예외 없음.파싱된 PDF xref 메타데이터를 반영합니다.

이들은 심층 파서 진단이나 픽스처 축소를 위해서만 사용하세요. PdfReader 기저의 렉서와 상호 참조 메커니즘을 노출하며, 일반적인 가져오기에는 필요하지 않습니다.

심볼매개변수기본 동작반환값예외 또는 실패 조건참고
new PdfTokenizer(string $data, int $offset = 0)PDF 바이트와 선택적 초기 오프셋입니다.오프셋 0에서 시작합니다.PdfTokenizer예상되는 예외 없음.저수준 어휘 파서입니다.
PdfTokenizer::getOffset()없음.현재 바이트 오프셋을 반환합니다.int예상되는 예외 없음.파서 오류를 위한 진단 헬퍼입니다.
PdfTokenizer::setOffset(int $offset)바이트 오프셋입니다.토크나이저 커서를 이동합니다.voidPdfParseException — 잘못된 오프셋인 경우.주의해서 사용하세요. 호출자가 파서 상태를 소유합니다.
PdfTokenizer::isEof()없음.커서가 끝에 도달했는지 확인합니다.bool예상되는 예외 없음.저수준 파서 루프 헬퍼입니다.
PdfTokenizer::skipWhitespace()없음.PDF 공백과 주석을 건너뜁니다.void예상되는 예외 없음.토큰 읽기 전에 사용됩니다.
PdfTokenizer::readToken()없음.다음 스칼라 토큰을 읽습니다.`stringintfloat
PdfTokenizer::readName()없음.PDF 이름 객체를 읽습니다.stringPdfParseException — 형식이 잘못된 이름인 경우.이름 이스케이프를 디코딩합니다.
PdfTokenizer::readLiteralString()없음.리터럴 문자열을 읽습니다.stringPdfParseException — 형식이 잘못된 문자열인 경우.중첩된 괄호와 이스케이프를 처리합니다.
PdfTokenizer::readHexString()없음.16진수 문자열을 읽습니다.stringPdfParseException — 형식이 잘못된 16진수인 경우.홀수 길이의 16진수를 파서 규칙에 따라 패딩합니다.
PdfTokenizer::readNumber()없음.정수 또는 부동소수점을 읽습니다.`intfloat`PdfParseException — 잘못된 숫자인 경우.
PdfTokenizer::readKeyword()없음.PDF 키워드를 읽습니다.stringPdfParseException — 잘못된 키워드인 경우.키워드 파싱을 한곳에 집중하여 유지합니다.
PdfTokenizer::readDictionary()없음.PDF 딕셔너리를 읽습니다.arrayPdfParseException — 형식이 잘못된 딕셔너리인 경우.객체, 스트림 및 트레일러에 사용됩니다.
PdfTokenizer::readArray()없음.PDF 배열을 읽습니다.arrayPdfParseException — 형식이 잘못된 배열인 경우.재귀 파서 헬퍼입니다.
PdfTokenizer::readValue()없음.지원되는 모든 PDF 값을 읽습니다.mixedPdfParseException — 형식이 잘못된 값인 경우.일반적인 파서 프리미티브입니다.
PdfTokenizer::readStreamData(int $length)스트림 길이입니다.요청된 스트림 바이트를 정확히 읽습니다.stringPdfParseException — 잘못된 스트림 경계인 경우.딕셔너리 스트림 길이를 확인한 이후에 사용됩니다.
PdfTokenizer::peek(int $length = 1)바이트 수입니다.커서를 전진시키지 않고 미리 읽습니다.string예상되는 예외 없음.파서 분기에 유용합니다.
PdfTokenizer::searchBackward(string $pattern, int $startFrom = 0)패턴과 선택적 시작 오프셋입니다.끝에서부터 또는 지정된 오프셋에서부터 역방향으로 검색합니다.`intfalse`예상되는 예외 없음.
PdfTokenizer::readLine()없음.현재 오프셋에서 한 줄을 읽습니다.string예상되는 예외 없음.저수준 스캐너 헬퍼입니다.
CrossRefParser::parseXRefTable(string $data, int $offset)PDF 바이트와 xref 테이블 오프셋입니다.고전적인 xref 테이블 항목을 파싱합니다.arrayPdfParseException — 형식이 잘못된 xref 데이터인 경우.저수준 파서 API입니다.
CrossRefParser::parseXRefStream(string $data, int $offset)PDF 바이트와 xref 스트림 오프셋입니다.xref 스트림 항목을 파싱합니다.arrayPdfParseException — 형식이 잘못된 스트림 데이터인 경우.최신 PDF xref 스트림을 지원합니다.

EInvoiceServiceFactory는 선택적 Premium 전자 송장 계약을 지연 방식으로 확인합니다(없는 경우 null을 반환). BrowserPool은 렌더러가 소유하는 Chrome 수명 주기 헬퍼로, 장시간 실행되는 워커에서만 직접 관리하게 됩니다.

심볼매개변수기본 동작반환값예외 또는 실패 조건참고
EInvoiceServiceFactory::makeEmbedder()없음.Premium Pro 전자 송장 지원이 설치되어 있지 않으면 null을 반환합니다.`EmbedderInterfacenull`선택적 패키지 생성 오류.
EInvoiceServiceFactory::makeValidator()없음.Premium Enterprise 검증 지원이 설치되어 있지 않으면 null을 반환합니다.`ValidatorInterfacenull`선택적 패키지 생성 오류.
EInvoiceServiceFactory::makeDefaultProfile()없음.가능한 경우 기본 전자 송장 프로필을 반환합니다.`ProfileInterfacenull`선택적 패키지 오류.
EInvoiceServiceFactory::makeSchematronRunner()없음.Premium Enterprise Schematron 지원이 설치되어 있지 않으면 null을 반환합니다.`SchematronRunnerInterfacenull`선택적 패키지 생성 오류.
new BrowserPool(ChromeRendererConfig $config, ?LoggerInterface $logger = null)렌더러 구성과 선택적 로거입니다.브라우저는 첫 getBrowser() 호출 시 지연 방식으로 시작됩니다.BrowserPool브라우저 시작 전까지 예상되는 예외 없음.렌더러가 소유하는 수명 주기 헬퍼입니다.
BrowserPool::getBrowser()없음.현재 Chrome 브라우저 인스턴스를 시작하거나 반환합니다.Browser브라우저 시작 오류입니다.렌더러가 소유하는 수명 주기 헬퍼입니다.
BrowserPool::incrementRenderCount()없음.렌더 카운터를 증가시키고, 풀 정책이 요구할 때 교체합니다.void브라우저 수명 주기 오류입니다.장시간 실행되는 워커에서 사용됩니다.
BrowserPool::close()없음.관리되는 브라우저 인스턴스를 닫습니다.void브라우저 종료 오류입니다.워커 종료 시 호출합니다.
  • 렌더러는 신뢰할 수 없는 HTML을 위한 브라우저 샌드박스가 아닙니다. 렌더링하기 전에 크기, 리소스 정책 및 호출자 권한을 검증하세요.
  • 파서 API는 의도적으로 좁은 범위로 설계되었습니다. 이들은 Chrome 출력 가져오기를 위한 것이며, 일반적인 PDF 복구를 위한 것이 아닙니다.
  • 장수명 워커에서는 렌더러를 명시적으로 닫으세요.