Skip to content

Package Artisan

TCPDF-Next Artisan
Artisan · LGPL-3.0

Package Artisan (yeeefang/tcpdf-next-artisan) cung cấp chuyển đổi HTML sang PDF pixel-perfect được hỗ trợ bởi Chrome DevTools Protocol (CDP). Nó render HTML với hỗ trợ CSS3 đầy đủ — bao gồm Flexbox, Grid, web font, media query và animation đóng băng tại thời điểm render.

Khi nào dùng Artisan

Tình huốngKhuyên dùng
Tạo PDF từ template HTML/CSSArtisan
Xây dựng PDF lập trình (cell, vẽ)Core
Email HTML sang PDF lưu trữArtisan
Hóa đơn từ dữ liệu có cấu trúcCore hoặc Artisan
Layout CSS phức tạp (Grid, Flexbox)Artisan
PDF ký/mã hóaCore

Cách hoạt động

Artisan khởi chạy instance Chrome headless qua Chrome DevTools Protocol, tải nội dung HTML vào trang trình duyệt, và dùng chức năng print-to-PDF tích hợp của Chrome. Điều này nghĩa là mọi tính năng CSS mà Chrome hỗ trợ đều sẵn sàng cho PDF — không cần chiến đấu với CSS parser hạn chế.

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

Cài đặt

bash
composer require yeeefang/tcpdf-next-artisan

Yêu cầu:

  • PHP 8.2+
  • chrome-php/chrome ^1.15 (cài tự động)
  • Chrome hoặc Chromium đã cài trên máy
bash
# Ubuntu/Debian
apt-get install -y chromium-browser

# macOS
brew install --cask chromium

# Windows (Chocolatey)
choco install googlechrome

# Đặt đường dẫn tùy chỉnh qua biến môi trường
export CHROME_PATH=/usr/bin/google-chrome

Khởi đầu nhanh

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

Từ URL

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

Từ file

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

Nội dung Package

ClassMục đích
HtmlRendererĐiểm truy cập chính — tải HTML, cấu hình, render
ChromeBridgeGiao tiếp Chrome DevTools Protocol
RenderOptionsCấu hình render (margin, scale, header)
PageSetupKích thước và hướng trang cho render
PdfMergerGhép nhiều trang đã render thành một PDF
StyleInjectorChèn CSS stylesheet trước render
ScreenshotCaptureChụp ảnh màn hình trang (PNG/JPEG)

Phân cấp Exception

ExceptionKhi nào
RenderExceptionLỗi render chung
ChromeNotFoundExceptionKhông tìm thấy binary Chrome tại đường dẫn mong đợi
TimeoutExceptionTải trang hoặc render vượt quá timeout đã cấu hình

Mọi exception nằm dưới namespace Yeeefang\TcpdfNext\Artisan\Exceptions và extend class base ArtisanException chung.

So sánh với Core HTML Parser

Package Core bao gồm module HtmlParser cho chuyển đổi HTML sang PDF cơ bản. Dùng nó khi bạn cần giải pháp không phụ thuộc bên ngoài. Dùng Artisan khi bạn cần render trung thực hoàn toàn.

Tính năngCore HtmlParserArtisan
Phụ thuộc bên ngoàiKhôngChrome/Chromium
CSS Flexbox / GridKhông
Web font (@font-face)Không
Media queryKhông
Thực thi JavaScriptKhông
CSS rule @pageKhông
Hiệu suất (doc đơn giản)Nhanh hơnChậm hơn
Hiệu suất (CSS phức tạp)N/AĐáng tin cậy

Bước tiếp theo

Phân phối theo giấy phép LGPL-3.0-or-later.