Skip to content

문서 생명주기

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_PAGES10,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');

LGPL-3.0-or-later 라이선스로 배포됩니다.