문서 생명주기
Document 클래스는 TCPDF-Next의 중앙 파사드입니다. final이며 PdfDocumentInterface를 구현하고, 12개의 조합 가능한 트레이트를 통해 모든 기능을 제공합니다.
문서 생성
php
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create();생성자는 private입니다 — 항상 정적 create() 팩토리를 사용하십시오. 이는 다음을 초기화합니다:
- 기본 페이지 크기: A4 (210 × 297 mm)
- 기본 여백: 10mm 대칭
- 기본 폰트 크기: 12pt
- 기본 색상: 검정 텍스트, 흰색 채우기, 검정 선
- 기본 선 두께: 0.2mm (0.57pt)
메타데이터 (HasMetadata)
php
$pdf = Document::create()
->setTitle('Invoice #001')
->setAuthor('Yeeefang')
->setSubject('Monthly Invoice')
->setKeywords('invoice, payment, 2026')
->setCreator('TCPDF-Next')
->setLanguage('en');모든 메타데이터 메서드는 체이닝을 위해 static을 반환합니다. 메타데이터는 XMP(PDF 2.0) 및 Info 딕셔너리 항목으로 기록됩니다.
뷰어 환경설정
PDF 뷰어가 문서를 표시하는 방식을 제어합니다:
php
$pdf->setDisplayMode('fullpage', 'SinglePage')
->setViewerPreferences([
'HideToolbar' => true,
'HideMenubar' => true,
'FitWindow' => true,
]);문서 상수
| 상수 | 값 | 설명 |
|---|---|---|
MAX_PAGES | 10,000 | 문서당 최대 페이지 수 |
내부 아키텍처
Document는 하위 엔진에 대한 참조를 보유하며, 대부분은 지연 초기화됩니다:
Document
├── DocumentData # 메타데이터, 폰트, 이미지, 페이지
├── PdfWriter # PDF 직렬화
├── FontManager # 폰트 로딩 및 서브셋
├── FontMetrics # 문자열 너비 계산
├── DrawingEngine # 도형/그라데이션 렌더링
├── TransformEngine # CTM 변환
├── TextRenderer # 텍스트 상태 관리
├── HeaderFooter # 머리글/바닥글 렌더링
├── ColumnLayout # 다단 레이아웃
├── BookmarkManager # PDF 북마크
├── LinkManager # 내부/외부 링크
├── TocBuilder # 목차
├── AnnotationManager # 텍스트 주석
├── PageManager # 페이지 조작
├── FormFieldManager? # AcroForm 필드 (지연)
├── LayerManager? # OCG 레이어 (지연)
├── TemplateManager? # 페이지 템플릿 (지연)
├── TransactionManager? # 저장점/롤백 (지연)
├── BookletLayout? # 소책자 조판 (지연)
├── FileAttachment? # 임베디드 파일 (지연)
├── JavaScriptManager? # 문서 JavaScript (지연)
├── SvgParser? # SVG 렌더링 (지연)
├── EpsParser? # EPS 렌더링 (지연)
├── StructureTree? # 태그된 PDF (지연)
├── SpotColorManager? # 별색 (지연)
├── ImageLoader? # 이미지 로딩 (지연)
├── BiDiResolver? # 양방향 텍스트 (지연)
├── Aes256Encryptor? # AES 암호화 (지연)
├── PadesOrchestrator? # 디지털 서명 (지연)
└── ChromeRenderer? # Chrome CDP (지연, Artisan)하위 엔진 접근
고급 사용 사례의 경우 내부 엔진에 접근할 수 있습니다:
php
$fontManager = $pdf->getFontManager();
$writer = $pdf->getWriter();
$drawingEngine = $pdf->getDrawingEngine();
$bookmarkManager = $pdf->getBookmarkManager();완전한 예제
php
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\ValueObjects\PageSize;
use Yeeefang\TcpdfNext\ValueObjects\Margin;
use Yeeefang\TcpdfNext\Contracts\Orientation;
$pdf = Document::create()
// Metadata
->setTitle('Company Report')
->setAuthor('Finance Team')
->setLanguage('en')
// First page — A4 portrait
->addPage()
->setFont('Helvetica', 'B', 24)
->cell(0, 20, 'Annual Report 2026')
->ln()
// Second page — landscape
->addPage(PageSize::A4(), Orientation::Landscape)
->setFont('Helvetica', '', 12)
->cell(0, 10, 'Financial Summary')
// Save
->save('report.pdf');