Skip to content

Artisanパッケージ

Artisan · LGPL-3.0

Artisanパッケージ(yeeefang/tcpdf-nextartisan)は、Chrome DevToolsプロトコル(CDP)を活用したピクセルパーフェクトなHTML-to-PDF変換を提供します。Flexbox、Grid、Webフォント、メディアクエリ、レンダリング時に固定されるアニメーションを含む、完全なCSS3サポートでHTMLをレンダリングします。

Artisanを使うべき場面

シナリオ推奨
HTML/CSSテンプレートからPDFを生成Artisan
プログラマティックなPDF構築(セル、描画)Core
HTMLメールをPDFアーカイブに変換Artisan
構造化データからインボイス作成CoreまたはArtisan
複雑なCSSレイアウト(Grid、Flexbox)Artisan
署名/暗号化されたPDFCore

仕組み

Artisanは、Chrome DevToolsプロトコルを介してヘッドレスChromeインスタンスを起動し、HTMLコンテンツをブラウザページに読み込み、Chromeの組み込みPDF印刷機能を使用します。つまり、ChromeがサポートするすべてのCSS機能がPDFで利用できます。限られたCSSパーサーと格闘する必要はもうありません。

HTML/CSS --> ChromeBridge --> Chrome CDP --> PDFバイナリ --> 保存 / ストリーム

インストール

bash
composer require yeeefang/tcpdf-nextartisan

要件:

  • PHP 8.2+
  • chrome-php/chrome ^1.15(自動的にインストール)
  • ホストにChromeまたはChromiumブラウザがインストールされていること
bash
# Ubuntu/Debian
apt-get install -y chromium-browser

# macOS
brew install --cask chromium

# Windows (Chocolatey)
choco install googlechrome

# 環境変数でカスタムパスを設定
export CHROME_PATH=/usr/bin/google-chrome

クイックスタート

php
use Yeeefang\TcpdfNext\Artisan\HtmlRenderer;

$renderer = HtmlRenderer::create();

$renderer
    ->loadHtml('<h1>Hello, World!</h1><p>Rendered with Chrome CDP.</p>')
    ->save('/output/hello.pdf');

URLから

php
HtmlRenderer::create()
    ->loadUrl('https://example.com/report')
    ->save('/output/report.pdf');

ファイルから

php
HtmlRenderer::create()
    ->loadFile('/templates/invoice.html')
    ->save('/output/invoice.pdf');

パッケージの内容

クラス用途
HtmlRendererメインエントリポイント — HTMLの読み込み、設定、レンダリング
ChromeBridgeChrome DevToolsプロトコル通信
RenderOptionsレンダリング設定(マージン、スケール、ヘッダー)
PageSetupレンダリング用のページサイズと向き
PdfMerger複数のレンダリングページを単一のPDFに結合
StyleInjectorレンダリング前にCSSスタイルシートを注入
ScreenshotCaptureページのスクリーンショット(PNG/JPEG)をキャプチャ

例外階層

例外発生条件
RenderException一般的なレンダリング失敗
ChromeNotFoundException想定されたパスにChromeバイナリが見つからない
TimeoutExceptionページの読み込みまたはレンダリングが設定されたタイムアウトを超過

すべての例外は Yeeefang\TcpdfNext\Artisan\Exceptions 名前空間に存在し、共通の ArtisanException 基底クラスを拡張しています。

CoreのHTMLパーサーとの比較

Coreパッケージには基本的なHTML-to-PDF変換のための HtmlParser モジュールが含まれています。依存関係のないソリューションが必要な場合はこちらを使用してください。完全なブラウザレンダリングの忠実性が必要な場合はArtisanを使用してください。

機能Core HtmlParserArtisan
外部依存関係なしChrome/Chromium
CSS Flexbox / Gridいいえはい
Webフォント(@font-faceいいえはい
メディアクエリいいえはい
JavaScript実行いいえはい
@page CSSルールいいえはい
パフォーマンス(シンプルなドキュメント)高速低速
パフォーマンス(複雑なCSS)対応不可信頼性が高い

次のステップ

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