PHP 쿡북
이 페이지는 PHP 네이티브 NextPDF 레시피의 인덱스입니다. 코어 PHP API에 직접 작성된 작업 중심의 실행 가능한 페이지를 모았습니다. nextpdf 코어 저장소는 docs/public/cookbook/php/ 아래에서 각 레시피를 관리하고 검증합니다. 각 레시피는 examples/*.php 스크립트와 tests/Cookbook/Php/ 하니스 테스트로 뒷받침됩니다. 그런 다음 애그리게이터가 각 페이지를 이 사이트로 가져오면서 소스 출처 정보를 함께 전달합니다.
이 페이지는 인덱스이므로 어떤 레시피에 대해서도 동작에 관한 주장을 하지 않습니다. 각 행은 레시피의 의도, 사용하는 코어 모듈, 그리고 선언된 재현성 프로파일을 기록합니다. 프로파일과 적합성 주장은 여기가 아니라 레시피 페이지 자체에 있으며, 해당 페이지의 프런트매터와 저장소 내 테스트에서 가져옵니다. 통합(프레임워크 / 렌더러 / 서비스) 쿡북은 통합 쿡북을 참고하십시오. 모든 실행 가능한 레시피가 따르는 계약은 레시피 규약을 참고하십시오.
레시피 슬러그 구성 방식
섹션 제목: “레시피 슬러그 구성 방식”모든 레시피는 코어 저장소의 docs/public/cookbook/php/ 아래에 작성되며, 애그리게이터가 이 사이트에 게시합니다. 슬러그는 단일 세그먼트라는 하나의 규약을 따릅니다:
/cookbook/php/<recipe>/<recipe>는 레시피의 의도를 케밥 케이스로 명명합니다(예를 들어 모듈 이름 html이 아니라 render-html-to-pdf). 소문자이며, 하이픈으로 구분되고, 버전 번호가 없으며, 하나의 후행 슬래시로 끝납니다.
재현성 프로파일, 한 줄 요약
섹션 제목: “재현성 프로파일, 한 줄 요약”각 레시피는 실제로 충족할 수 있는 가장 엄격한 프로파일을 선언합니다:
- bitwise — 실행마다 바이트 단위로 동일함(순수하게 결정적인 콘텐츠, 모든 엔트로피가 고정됨).
- structural — 변동 요소를 정규화한 후 동일함(트레일러
/ID, creation/modification 날짜, 폰트 서브셋 접두사 — 실무상 거의 모든 다중 객체 PDF). - semantic — 구조적 AST와 메타데이터 동등성만 보장(서명되었거나 타임스탬프가 찍힌 출력, 또는 본질적으로 바이트 단위로 안정적이지 않은 출력).
프로파일은 각 레시피 페이지가 자체 하니스 테스트로 입증하는 속성입니다. 이 인덱스는 페이지가 선언하는 값만 보고합니다.
문서를 구성하고, 페이지를 나누고, 스타일을 적용합니다.
| 레시피 | 하는 일 | 모듈 | 프로파일 |
|---|---|---|---|
render-html-to-pdf | HTML 문서를 PDF로 렌더링합니다 | Html | structural |
style-with-css | HTML 렌더에 CSS를 적용합니다 | Html | structural |
html-table-layout | HTML 테이블을 배치합니다 | Html | structural |
paginate-long-html | 긴 HTML 문서의 페이지를 나눕니다 | Html | structural |
paginate-large-html-tables | 큰 HTML 테이블을 여러 페이지에 걸쳐 나눕니다 | Html | structural |
render-rtl-arabic-html | 오른쪽에서 왼쪽으로 쓰는 아랍어 HTML을 렌더링합니다 | Html | structural |
compose-text-and-fonts | 타이포그래피 제어와 함께 텍스트를 구성합니다 | Typography | structural |
embed-and-subset-fonts | 폰트를 임베드하고 서브셋합니다 | Font | structural |
cjk-vertical-writing | CJK 텍스트를 세로쓰기 모드로 설정합니다 | Typography | structural |
multi-page-document | 여러 페이지로 구성된 문서를 만듭니다 | Document | structural |
headers-and-footers | 반복되는 머리글과 바닥글을 추가합니다 | Layout | structural |
그래픽과 콘텐츠
섹션 제목: “그래픽과 콘텐츠”벡터, 이미지, 레이어와 좌표 공간을 다룹니다.
| 레시피 | 하는 일 | 모듈 | 프로파일 |
|---|---|---|---|
draw-vector-graphics | 벡터 그래픽을 그립니다 | Graphics | structural |
gradients-and-transparency | 그라디언트와 투명도를 적용합니다 | Graphics | structural |
embed-images | 래스터 이미지를 임베드합니다 | Content | structural |
add-watermarks-and-backgrounds | 페이지에 텍스트 및 이미지 워터마크 또는 배경을 추가합니다 | Content | structural |
cmyk-spot-color-and-icc-profiles | 인쇄 준비가 된 CMYK와 별색을 생성합니다 | Color | structural |
embed-file-attachments | 파일을 임베드하고 PDF 포트폴리오를 만듭니다 | Content | structural |
optional-content-layers | 선택적 콘텐츠(레이어)를 사용합니다 | Graphics | structural |
transform-coordinate-space | 좌표 공간을 변환합니다 | Graphics | structural |
내비게이션과 폼
섹션 제목: “내비게이션과 폼”북마크, 링크, 주석과 AcroForm 필드를 다룹니다.
| 레시피 | 하는 일 | 모듈 | 프로파일 |
|---|---|---|---|
bookmarks-and-toc | 북마크와 목차를 만듭니다 | Navigation | structural |
generate-dynamic-table-of-contents | 동적 목차를 생성합니다 | Navigation | structural |
links-and-annotations | 링크와 주석을 추가합니다 | Navigation | structural |
generate-barcodes | 바코드를 생성합니다 | Barcode | bitwise |
gs1-composite-barcodes | GS1 Composite 바코드(CC-C 캐리어)를 생성합니다 | Barcode | structural |
fill-pdf-form | AcroForm을 채웁니다 | Form | structural |
flatten-form-fields | 폼 필드를 평탄화합니다 | Form | structural |
form-field-validation-and-flatten-with-state | 폼 필드를 검증하고 상태와 함께 평탄화합니다 | Form | structural |
문서 정보
섹션 제목: “문서 정보”메타데이터와 뷰어 동작을 설정합니다.
| 레시피 | 하는 일 | 모듈 | 프로파일 |
|---|---|---|---|
set-document-metadata | 문서 메타데이터를 설정합니다 | Metadata | structural |
set-viewer-preferences | 뷰어 환경설정을 설정합니다 | Document | structural |
문서 작업
섹션 제목: “문서 작업”기존 문서를 조립하고, 분할하고, 최적화합니다.
| 레시피 | 하는 일 | 모듈 | 프로파일 |
|---|---|---|---|
merge-external-pdfs | 외부 PDF를 병합하거나 페이지를 추가합니다 | Document | structural |
split-and-extract-pages | PDF를 분할하고 페이지 범위를 추출합니다 | Document | structural |
optimize-pdf-file-size | 압축과 서브셋으로 PDF 파일 크기를 줄입니다 | Document | structural |
보안, 서명, 그리고 적합성
섹션 제목: “보안, 서명, 그리고 적합성”암호화, 서명, 접근성, 그리고 프로파일 출력입니다. 이 레시피들은 레시피 페이지에서 지원≠적합성 및 존재≠유효성 경계를 명시합니다.
| 레시피 | 하는 일 | 모듈 | 프로파일 |
|---|---|---|---|
encrypt-aes256 | AES-256으로 암호화하고 권한 플래그를 설정합니다 | 보안 | structural |
encrypt-with-permissions | 권한 플래그와 함께 암호화합니다 | 보안 | structural |
sign-pades-b-b | PAdES 서명을 적용합니다(B-B 및 B-T) | 보안 | semantic |
inspect-existing-signature | 기존 서명을 검사합니다 | 검사 | semantic |
tagged-pdf-ua2 | PDF/UA-2를 위한 태그된 구조를 내보냅니다 | 접근성 | semantic |
accessible-pdfua2-from-html | HTML에서 접근 가능한 PDF/UA-2 저작을 위한 태그된 구조를 내보냅니다 | 접근성 | semantic |
pdf-a-4-output | PDF/A-4 출력을 생성합니다 | 적합성 | semantic |
pdfa4-conformance-gate | PDF/A-4 출력을 생성하고 외부 검증기로 게이트합니다 | 적합성 | semantic |
validate-conformance | 적합성 프로파일에 대해 검증합니다 | Compliance | semantic |
검사와 추출
섹션 제목: “검사와 추출”PDF에서 콘텐츠와 구조를 다시 읽어냅니다.
| 레시피 | 하는 일 | 모듈 | 프로파일 |
|---|---|---|---|
extract-text-content | 텍스트 콘텐츠를 추출합니다 | Text | semantic |
multilingual-copy-paste-extraction | CJK와 아랍어 PDF의 복사·붙여넣기를 정확하게 만듭니다 | Text | structural |
parse-and-inspect-pdf | PDF 를 파싱하고 검사합니다 | 검사 | semantic |
inspect-layout-boxes | 레이아웃 박스를 검사합니다 | 검사 | semantic |
횡단 관심사
섹션 제목: “횡단 관심사”여러 모듈에 걸친 패턴입니다.
| 레시피 | 하는 일 | 걸치는 범위 | 프로파일 |
|---|---|---|---|
worker-safe-batch-rendering | 장기 실행 워커에서 안전하게 렌더링합니다(공유 레지스트리, 제한된 메모리) | Core · Performance · Support | semantic |
streaming-and-memory | 스트리밍과 메모리 사용량을 프로파일링합니다 | Performance | bitwise |
exception-aware-error-handling | NextPDF 예외 계층 구조로 오류를 처리합니다 | Exception · Contracts | structural |
custom-error-recovery-patterns | 사용자 정의 오류 복구 및 재시도 전략을 구현합니다 | Exception | semantic |
observe-with-opentelemetry | OpenTelemetry로 렌더링을 관찰합니다 | Observability · Telemetry · Event | semantic |
위의 모든 레시피는 코어 저장소에서 이를 뒷받침하는 examples/*.php 스크립트와 tests/Cookbook/Php/ 하니스 테스트와 함께 게시됩니다. 새 레시피가 업스트림에서 작성되면, 그 예제와 테스트가 배치되는 즉시 여기에 나타납니다.