ドキュメントライフサイクル
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_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()
// メタデータ
->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');