Skip to content

Paket Artisan

TCPDF-Next Artisan
Artisan · LGPL-3.0

Paket Artisan (yeeefang/tcpdf-next-artisan) menyediakan konversi HTML-ke-PDF pixel-perfect yang ditenagai oleh Chrome DevTools Protocol (CDP). Paket ini me-render HTML dengan dukungan CSS3 penuh -- termasuk Flexbox, Grid, web font, media query, dan animasi yang dibekukan saat render.

Kapan Menggunakan Artisan

SkenarioRekomendasi
Generate PDF dari template HTML/CSSArtisan
Konstruksi PDF programatik (cell, gambar)Core
Arsip email HTML ke PDFArtisan
Invoice dari data terstrukturCore atau Artisan
Layout CSS kompleks (Grid, Flexbox)Artisan
PDF bertanda tangan/terenkripsiCore

Cara Kerja

Artisan meluncurkan instance Chrome headless melalui Chrome DevTools Protocol, memuat konten HTML Anda ke halaman browser, dan menggunakan fungsi print-to-PDF bawaan Chrome. Ini berarti setiap fitur CSS yang didukung Chrome tersedia untuk PDF Anda -- tidak perlu lagi berjuang dengan CSS parser yang terbatas.

HTML/CSS --> ChromeBridge --> Chrome CDP --> PDF binary --> save / stream

Instalasi

bash
composer require yeeefang/tcpdf-next-artisan

Persyaratan:

  • PHP 8.2+
  • chrome-php/chrome ^1.15 (diinstal otomatis)
  • Browser Chrome atau Chromium terinstal di host
bash
# Ubuntu/Debian
apt-get install -y chromium-browser

# macOS
brew install --cask chromium

# Windows (Chocolatey)
choco install googlechrome

# Set path kustom via environment variable
export CHROME_PATH=/usr/bin/google-chrome

Quick Start

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

Dari URL

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

Dari File

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

Isi Paket

ClassTujuan
HtmlRendererEntry point utama -- muat HTML, konfigurasi, render
ChromeBridgeKomunikasi Chrome DevTools Protocol
RenderOptionsKonfigurasi rendering (margin, skala, header)
PageSetupUkuran halaman dan orientasi untuk rendering
PdfMergerGabungkan beberapa halaman yang di-render menjadi satu PDF
StyleInjectorInjeksi stylesheet CSS sebelum rendering
ScreenshotCaptureTangkap screenshot halaman (PNG/JPEG)

Hirarki Exception

ExceptionKapan
RenderExceptionKegagalan rendering generik
ChromeNotFoundExceptionBinary Chrome tidak ditemukan di path yang diharapkan
TimeoutExceptionPage load atau rendering melebihi timeout yang dikonfigurasi

Semua exception berada di namespace Yeeefang\TcpdfNext\Artisan\Exceptions dan meng-extend class dasar ArtisanException.

Perbandingan dengan HTML Parser Core

Paket Core menyertakan modul HtmlParser untuk konversi HTML-ke-PDF dasar. Gunakan ketika Anda butuh solusi tanpa dependency. Gunakan Artisan ketika Anda butuh fidelitas rendering browser penuh.

FiturCore HtmlParserArtisan
Dependency eksternalTidak adaChrome/Chromium
CSS Flexbox / GridTidakYa
Web font (@font-face)TidakYa
Media queryTidakYa
Eksekusi JavaScriptTidakYa
CSS rule @pageTidakYa
Performa (dokumen sederhana)Lebih cepatLebih lambat
Performa (CSS kompleks)N/AReliable

Langkah Selanjutnya

Didistribusikan di bawah lisensi LGPL-3.0-or-later.