Skip to content

ドキュメントライフサイクル

Document クラスはTCPDF-Nextの中心的なファサードです。final であり、PdfDocumentInterface を実装し、12個のコンポーザブルトレイトを通じてすべての機能を提供します。

ドキュメントの作成

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create();

コンストラクタはプライベートです — 常に静的な create() ファクトリを使用してください。これにより以下が初期化されます:

  • デフォルトページサイズ:A4(210 x 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()
    // メタデータ
    ->setTitle('Company Report')
    ->setAuthor('Finance Team')
    ->setLanguage('en')

    // 最初のページ — A4縦向き
    ->addPage()
    ->setFont('Helvetica', 'B', 24)
    ->cell(0, 20, 'Annual Report 2026')
    ->ln()

    // 2ページ目 — 横向き
    ->addPage(PageSize::A4(), Orientation::Landscape)
    ->setFont('Helvetica', '', 12)
    ->cell(0, 10, 'Financial Summary')

    // 保存
    ->save('report.pdf');

LGPL-3.0-or-later ライセンスの下で公開されています。