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은 $height가 null일 때 높이를 자동으로 맞춥니다.
렌더러를 직접 실행하고 페이지도 직접 가져옵니다. 워커와 사용자 지정 배치를 위한, 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는 비어 있지 않은 문자열일 때만 적용됩니다.
Chrome 렌더러
섹션 제목: “Chrome 렌더러”이 타입들은 렌더링을 시작하고 실행합니다. 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를 사용합니다. | ChromeHtmlRenderer | Chrome 설정 오류는 첫 렌더링 시 발생합니다. | 렌더러는 close()가 호출될 때까지 브라우저 풀을 소유합니다. |
ChromeHtmlRenderer::render(string $html, float $widthPt, float $heightPt = 0) | html: 입력 조각; widthPt: 용지 너비; heightPt: 목표 높이 또는 자동입니다. | 콘텐츠 높이는 heightPt <= 0일 때 자동으로 계산됩니다. | ChromeRenderResult | ChromeRenderException; HTML 크기 검증 실패. | CDP 를 통해 하위 리소스 네트워크 요청을 차단합니다. |
ChromeHtmlRenderer::getHtmlSecurityPolicy() | 없음. | 구성된 파싱 계층 정책을 반환합니다. | HtmlSecurityPolicyInterface | 예상되는 예외 없음. | Chrome의 전송 계층 제어를 보완합니다. |
ChromeHtmlRenderer::close() | 없음. | 브라우저 풀을 닫고 비웁니다. | void | 기반 라이브러리에서 브라우저 종료 오류가 표면화될 수 있습니다. | 워커 종료 시 호출합니다. |
HTML 보안 정책
섹션 제목: “HTML 보안 정책”렌더링 전에 외부 HTML을 직접 검증하고 래핑하려면, ChromeHtmlRenderer::render()(이미 이를 호출함)를 거치는 대신 이들을 사용하세요.
| 심볼 | 매개변수 | 기본 동작 | 반환값 | 예외 또는 실패 조건 | 참고 |
|---|---|---|---|---|---|
ChromeSecurityPolicy::validate(string $html, int $maxSize) | HTML 입력과 최대 바이트 크기입니다. | 크기와 허용되지 않는 구문이 검증을 통과한 경우에만 입력을 허용합니다. | void | ChromeRenderException 또는 검증 예외입니다. | 외부 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 | 예상되는 예외 없음. | 임베드할 때 PdfReader 및 PageImporter와 함께 사용하세요. |
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 | 예상되는 예외 없음. | 자동 높이 계산에 사용됩니다. |
가져오기 및 파서 API
섹션 제목: “가져오기 및 파서 API”이것이 핵심 가져오기 경로입니다. PdfReader로 Chrome PDF 바이트를 파싱한 다음, 임베드 가능한 페이지를 얻기 위해 리더를 PageImporter::import()에 전달합니다. 나머지 PdfReader 메서드는 진단을 지원합니다.
| 심볼 | 매개변수 | 기본 동작 | 반환값 | 예외 또는 실패 조건 | 참고 |
|---|---|---|---|---|---|
new PdfReader(string $data) | data: 완전한 PDF 바이트입니다. | 파서는 parse()가 호출되기 전까지 실행되지 않습니다. | PdfReader | 예상되는 예외 없음. | Chrome이 생성한 PDF를 위해 설계되었습니다. |
PdfReader::parse() | 없음. | xref 체인과 트레일러를 파싱합니다. | void | PdfParseException — 잘못된 PDF 구조인 경우. | object/page 접근 전에 반드시 호출해야 합니다. |
PdfReader::getObject(int $objNum) | 객체 번호입니다. | 파싱된 객체를 번호로 확인합니다. | PdfObject | PdfParseException — 객체가 누락되었거나 형식이 잘못된 경우. | 이 메서드는 parse() 이후에 사용하세요. |
PdfReader::getTrailer() | 없음. | 파싱된 트레일러 딕셔너리를 반환합니다. | array | PdfParseException — 트레일러 데이터를 사용할 수 없는 경우. | 진단 및 리비전 분석에 사용됩니다. |
PdfReader::getObjectNumbers() | 없음. | 파싱된 객체 번호를 반환합니다. | array | 파싱 이후 예상되는 예외 없음. | 임포터 진단에 유용합니다. |
PdfReader::getPage(int $pageIndex) | pageIndex: 0부터 시작하는 페이지 인덱스입니다. | 암시적 파싱은 수행하지 않습니다. | PdfObject | PdfParseException — 누락되었거나 범위를 벗어난 경우. | 임포터는 기본적으로 0번 페이지를 사용합니다. |
PdfReader::getPageContentStream(PdfObject $page) | page: 파싱된 페이지 객체입니다. | 콘텐츠 스트림을 확인합니다. | string | PdfParseException — 잘못된 스트림인 경우. | 빈 스트림은 임포터 실패를 유발합니다. |
PdfReader::getPageResources(PdfObject $page) | page: 파싱된 페이지 객체입니다. | 페이지 리소스를 확인합니다. | array | PdfParseException — 잘못된 리소스인 경우. | 리소스 딕셔너리는 폼 객체와 함께 임베드됩니다. |
PdfReader::getPageMediaBox(PdfObject $page) | page: 파싱된 페이지 객체입니다. | 없는 경우 A4와 유사한 크기로 대체합니다. | array | 파서 실패. | PDF 공간 좌표를 반환합니다. |
PdfReader::resolveRef(mixed $value) | 파싱된 값입니다. | 해당하는 경우 객체 참조를 재귀적으로 확인합니다. | mixed | PdfParseException — 잘못된 참조인 경우. | 임포터 워크플로를 위해 노출된 내부 스타일 헬퍼입니다. |
PdfReader::collectPageResources(PdfObject $page) | page: 파싱된 페이지 객체입니다. | 페이지 리소스 참조를 순회합니다. | array | 파서 실패. | 가져온 페이지와 함께 종속 객체를 임베드하는 데 사용됩니다. |
PdfReader::getRevisionCount() | 없음. | 파싱된 증분 리비전 수를 셉니다. | int | 파싱 이후 예상되는 예외 없음. | 서명되었거나 증분 업데이트된 PDF에 유용합니다. |
PdfReader::getRevisionXRef(int $index) | 0부터 시작하는 리비전 인덱스입니다. | 하나의 리비전 xref 테이블을 반환합니다. | RevisionXRefTable | PdfParseException — 잘못된 인덱스인 경우. | 저수준 리비전 진단에 사용하세요. |
PdfReader::getRevisions() | 없음. | 파싱된 모든 리비전 xref 테이블을 반환합니다. | array | 파싱 이후 예상되는 예외 없음. | 읽기 전용 파서 상태 뷰입니다. |
PageImporter::import(PdfReader $reader, int $pageIndex = 0) | 파싱된 리더와 0부터 시작하는 페이지 인덱스입니다. | 생략하면 첫 번째 페이지를 가져옵니다. | ImportedFormXObject | PdfParseException — 페이지를 추출할 수 없는 경우. | 콘텐츠 스트림, 미디어 박스, 리소스 및 참조된 객체를 수집합니다. |
파서 지원 객체
섹션 제목: “파서 지원 객체”이들은 파서가 반환하거나 내부적으로 사용하는 값 객체 및 헬퍼입니다. 가져온 객체, 리소스, 스트림 또는 리비전 테이블을 검사할 때 사용하세요.
| 심볼 | 매개변수 | 기본 동작 | 반환값 | 예외 또는 실패 조건 | 참고 |
|---|---|---|---|---|---|
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() | 없음. | 가능한 경우 원래 딕셔너리 바이트를 반환합니다. | `string | null` | 예상되는 예외 없음. |
PdfObject::getRawStreamData() | 없음. | 가능한 경우 디코딩되지 않은 스트림 바이트를 반환합니다. | `string | null` | 예상되는 예외 없음. |
PdfObject::getDictionary() | 없음. | 파싱된 딕셔너리 항목을 반환합니다. | array | 예상되는 예외 없음. | 읽기 전용 파서 뷰입니다. |
PdfObject::get(string $key) | 딕셔너리 키입니다. | 키가 없는 경우 null을 반환합니다. | mixed | 예상되는 예외 없음. | 호출자가 원시 딕셔너리를 직접 파싱하지 않도록 합니다. |
PdfObject::getRef(string $key) | 딕셔너리 키입니다. | 값이 참조인 경우 객체 참조 튜플을 반환합니다. | `array | null` | 예상되는 예외 없음. |
PdfObject::getArray(string $key) | 딕셔너리 키입니다. | 배열 값을 반환하거나, 사용할 수 없는 경우 빈 배열을 반환합니다. | array | 예상되는 예외 없음. | 배열 값을 갖는 딕셔너리 항목을 위한 편의 래퍼입니다. |
PdfObject::hasStream() | 없음. | 스트림 바이트가 존재하는지 확인합니다. | bool | 예상되는 예외 없음. | 딕셔너리 전용 객체를 구분합니다. |
PdfObject::getType() | 없음. | 딕셔너리에서 /Type을(를) 읽습니다. | `string | null` | 예상되는 예외 없음. |
PdfObject::getSubtype() | 없음. | 딕셔너리에서 /Subtype을(를) 읽습니다. | `string | null` | 예상되는 예외 없음. |
RevisionExtractor::extractRevision(string $pdfData, PdfReader $reader, int $revision) | PDF 바이트, 파싱된 리더, 0부터 시작하는 리비전 인덱스입니다. | 하나의 증분 리비전을 추출합니다. | string | PdfParseException — 잘못된 경계인 경우. | 파서 테스트 및 진단에 사용됩니다. |
RevisionExtractor::getRevisionBoundaries(string $pdfData, PdfReader $reader) | PDF 바이트와 파싱된 리더입니다. | 증분 리비전의 바이트 범위를 찾습니다. | array | PdfParseException — 형식이 잘못된 xref 구조인 경우. | 서명되었거나 증분 업데이트된 PDF 를 분석하는 데 도움이 됩니다. |
| `StreamDecoder::decode(string $data, string | array $filter)` | 스트림 바이트와 하나 이상의 PDF 필터입니다. | 필터를 순서대로 적용합니다. | string | PdfParseException — 지원되지 않거나 잘못된 필터인 경우. |
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 메타데이터를 반영합니다. |
저수준 토크나이저 및 xref API
섹션 제목: “저수준 토크나이저 및 xref API”이들은 심층 파서 진단이나 픽스처 축소를 위해서만 사용하세요. PdfReader 기저의 렉서와 상호 참조 메커니즘을 노출하며, 일반적인 가져오기에는 필요하지 않습니다.
| 심볼 | 매개변수 | 기본 동작 | 반환값 | 예외 또는 실패 조건 | 참고 |
|---|---|---|---|---|---|
new PdfTokenizer(string $data, int $offset = 0) | PDF 바이트와 선택적 초기 오프셋입니다. | 오프셋 0에서 시작합니다. | PdfTokenizer | 예상되는 예외 없음. | 저수준 어휘 파서입니다. |
PdfTokenizer::getOffset() | 없음. | 현재 바이트 오프셋을 반환합니다. | int | 예상되는 예외 없음. | 파서 오류를 위한 진단 헬퍼입니다. |
PdfTokenizer::setOffset(int $offset) | 바이트 오프셋입니다. | 토크나이저 커서를 이동합니다. | void | PdfParseException — 잘못된 오프셋인 경우. | 주의해서 사용하세요. 호출자가 파서 상태를 소유합니다. |
PdfTokenizer::isEof() | 없음. | 커서가 끝에 도달했는지 확인합니다. | bool | 예상되는 예외 없음. | 저수준 파서 루프 헬퍼입니다. |
PdfTokenizer::skipWhitespace() | 없음. | PDF 공백과 주석을 건너뜁니다. | void | 예상되는 예외 없음. | 토큰 읽기 전에 사용됩니다. |
PdfTokenizer::readToken() | 없음. | 다음 스칼라 토큰을 읽습니다. | `string | int | float |
PdfTokenizer::readName() | 없음. | PDF 이름 객체를 읽습니다. | string | PdfParseException — 형식이 잘못된 이름인 경우. | 이름 이스케이프를 디코딩합니다. |
PdfTokenizer::readLiteralString() | 없음. | 리터럴 문자열을 읽습니다. | string | PdfParseException — 형식이 잘못된 문자열인 경우. | 중첩된 괄호와 이스케이프를 처리합니다. |
PdfTokenizer::readHexString() | 없음. | 16진수 문자열을 읽습니다. | string | PdfParseException — 형식이 잘못된 16진수인 경우. | 홀수 길이의 16진수를 파서 규칙에 따라 패딩합니다. |
PdfTokenizer::readNumber() | 없음. | 정수 또는 부동소수점을 읽습니다. | `int | float` | PdfParseException — 잘못된 숫자인 경우. |
PdfTokenizer::readKeyword() | 없음. | PDF 키워드를 읽습니다. | string | PdfParseException — 잘못된 키워드인 경우. | 키워드 파싱을 한곳에 집중하여 유지합니다. |
PdfTokenizer::readDictionary() | 없음. | PDF 딕셔너리를 읽습니다. | array | PdfParseException — 형식이 잘못된 딕셔너리인 경우. | 객체, 스트림 및 트레일러에 사용됩니다. |
PdfTokenizer::readArray() | 없음. | PDF 배열을 읽습니다. | array | PdfParseException — 형식이 잘못된 배열인 경우. | 재귀 파서 헬퍼입니다. |
PdfTokenizer::readValue() | 없음. | 지원되는 모든 PDF 값을 읽습니다. | mixed | PdfParseException — 형식이 잘못된 값인 경우. | 일반적인 파서 프리미티브입니다. |
PdfTokenizer::readStreamData(int $length) | 스트림 길이입니다. | 요청된 스트림 바이트를 정확히 읽습니다. | string | PdfParseException — 잘못된 스트림 경계인 경우. | 딕셔너리 스트림 길이를 확인한 이후에 사용됩니다. |
PdfTokenizer::peek(int $length = 1) | 바이트 수입니다. | 커서를 전진시키지 않고 미리 읽습니다. | string | 예상되는 예외 없음. | 파서 분기에 유용합니다. |
PdfTokenizer::searchBackward(string $pattern, int $startFrom = 0) | 패턴과 선택적 시작 오프셋입니다. | 끝에서부터 또는 지정된 오프셋에서부터 역방향으로 검색합니다. | `int | false` | 예상되는 예외 없음. |
PdfTokenizer::readLine() | 없음. | 현재 오프셋에서 한 줄을 읽습니다. | string | 예상되는 예외 없음. | 저수준 스캐너 헬퍼입니다. |
CrossRefParser::parseXRefTable(string $data, int $offset) | PDF 바이트와 xref 테이블 오프셋입니다. | 고전적인 xref 테이블 항목을 파싱합니다. | array | PdfParseException — 형식이 잘못된 xref 데이터인 경우. | 저수준 파서 API입니다. |
CrossRefParser::parseXRefStream(string $data, int $offset) | PDF 바이트와 xref 스트림 오프셋입니다. | xref 스트림 항목을 파싱합니다. | array | PdfParseException — 형식이 잘못된 스트림 데이터인 경우. | 최신 PDF xref 스트림을 지원합니다. |
선택적 팩토리 및 브라우저 풀
섹션 제목: “선택적 팩토리 및 브라우저 풀”EInvoiceServiceFactory는 선택적 Premium 전자 송장 계약을 지연 방식으로 확인합니다(없는 경우 null을 반환). BrowserPool은 렌더러가 소유하는 Chrome 수명 주기 헬퍼로, 장시간 실행되는 워커에서만 직접 관리하게 됩니다.
| 심볼 | 매개변수 | 기본 동작 | 반환값 | 예외 또는 실패 조건 | 참고 |
|---|---|---|---|---|---|
EInvoiceServiceFactory::makeEmbedder() | 없음. | Premium Pro 전자 송장 지원이 설치되어 있지 않으면 null을 반환합니다. | `EmbedderInterface | null` | 선택적 패키지 생성 오류. |
EInvoiceServiceFactory::makeValidator() | 없음. | Premium Enterprise 검증 지원이 설치되어 있지 않으면 null을 반환합니다. | `ValidatorInterface | null` | 선택적 패키지 생성 오류. |
EInvoiceServiceFactory::makeDefaultProfile() | 없음. | 가능한 경우 기본 전자 송장 프로필을 반환합니다. | `ProfileInterface | null` | 선택적 패키지 오류. |
EInvoiceServiceFactory::makeSchematronRunner() | 없음. | Premium Enterprise Schematron 지원이 설치되어 있지 않으면 null을 반환합니다. | `SchematronRunnerInterface | null` | 선택적 패키지 생성 오류. |
new BrowserPool(ChromeRendererConfig $config, ?LoggerInterface $logger = null) | 렌더러 구성과 선택적 로거입니다. | 브라우저는 첫 getBrowser() 호출 시 지연 방식으로 시작됩니다. | BrowserPool | 브라우저 시작 전까지 예상되는 예외 없음. | 렌더러가 소유하는 수명 주기 헬퍼입니다. |
BrowserPool::getBrowser() | 없음. | 현재 Chrome 브라우저 인스턴스를 시작하거나 반환합니다. | Browser | 브라우저 시작 오류입니다. | 렌더러가 소유하는 수명 주기 헬퍼입니다. |
BrowserPool::incrementRenderCount() | 없음. | 렌더 카운터를 증가시키고, 풀 정책이 요구할 때 교체합니다. | void | 브라우저 수명 주기 오류입니다. | 장시간 실행되는 워커에서 사용됩니다. |
BrowserPool::close() | 없음. | 관리되는 브라우저 인스턴스를 닫습니다. | void | 브라우저 종료 오류입니다. | 워커 종료 시 호출합니다. |
개발 참고 사항
섹션 제목: “개발 참고 사항”- 렌더러는 신뢰할 수 없는 HTML을 위한 브라우저 샌드박스가 아닙니다. 렌더링하기 전에 크기, 리소스 정책 및 호출자 권한을 검증하세요.
- 파서 API는 의도적으로 좁은 범위로 설계되었습니다. 이들은 Chrome 출력 가져오기를 위한 것이며, 일반적인 PDF 복구를 위한 것이 아닙니다.
- 장수명 워커에서는 렌더러를 명시적으로 닫으세요.