Skip to content

Câu hỏi thường gặp

Tại sao TCPDF-Next yêu cầu PHP 8.5+?

PHP 8.5 giới thiệu các tính năng ngôn ngữ cơ bản cho kiến trúc thư viện — bao gồm pipe operator, cải thiện suy luận kiểu và ngữ nghĩa readonly nâng cao. Nhắm đến runtime hiện đại cho phép TCPDF-Next nhỏ hơn, nhanh hơn và an toàn hơn theo thiết kế thay vì theo cách giải quyết tạm.

Xem chi tiết tại Tại sao PHP 8.5?.

TCPDF-Next có phải fork của TCPDF không?

Không. TCPDF-Next là bản viết lại hoàn toàn từ đầu. Nó không chia sẻ code với thư viện TCPDF gốc. Phần "TCPDF" trong tên thừa nhận lĩnh vực vấn đề (tạo PDF trong PHP) và ảnh hưởng của dự án cũ đến cộng đồng, nhưng kiến trúc, API và triển khai hoàn toàn mới.

Tôi có thể dùng mà không cần Laravel không?

Có. Package tcpdf-next/core hoàn toàn không phụ thuộc framework. Nó chỉ cần PHP 8.5+ và không có dependency framework. Bạn có thể dùng trong bất kỳ ứng dụng PHP nào — Symfony, Slim, PHP thuần, CLI tool hoặc queue worker.

Package tcpdf-next/laravel tùy chọn thêm tiện ích riêng cho Laravel (service provider, Facade, config publishing) nhưng không bắt buộc.

Sự khác biệt giữa Core và Pro là gì?

CorePro
Giấy phépMITThương mại
Tạo PDFĐầy đủ tính năngĐầy đủ tính năng
Typography nâng caoCơ bảnOpenType shaping, BiDi, ligature
Chữ ký sốKhông bao gồmPAdES / CAdES / X.509
PDF/A, PDF/XKhông bao gồmĐầy đủ chế độ tuân thủ
Engine barcodeBarcode 1D1D + 2D (QR, DataMatrix, PDF417)
Hỗ trợCộng đồng (GitHub Issues)Email ưu tiên + SLA

Core đã sẵn sàng cho production. Pro mở rộng với tính năng doanh nghiệp và tuân thủ.

Làm sao tạo HTML-to-PDF với CSS3 đầy đủ?

Dùng package Artisan (tcpdf-next/artisan). Nó cung cấp pipeline render chấp nhận HTML + CSS3 input và tạo PDF output chính xác đến từng pixel, được hỗ trợ bởi TCPDF-Next Core bên dưới.

php
use Yeeefang\TcpdfNext\Artisan\HtmlRenderer;

$renderer = HtmlRenderer::create();
$renderer->loadHtml('<h1>Hello</h1><p style="color: navy;">Styled paragraph.</p>');
$renderer->save('/output/report.pdf');

Artisan hỗ trợ Flexbox, Grid, web font, media query và hầu hết đặc tả CSS3.

TCPDF-Next có hỗ trợ CJK (Trung, Nhật, Hàn) không?

Có. TCPDF-Next hỗ trợ hạng nhất cho script CJK và layout văn bản phức tạp:

  • CjkFontValidator — xác thực và subset file font CJK, đảm bảo phủ glyph đúng.
  • BiDiResolver — xử lý văn bản hai chiều (ví dụ: trộn tiếng Anh và Arabic/Hebrew).
  • ArabicShaper — áp dụng quy tắc shaping ngữ cảnh cho Arabic, Farsi và Urdu.

Nhúng bất kỳ font TrueType/OpenType hỗ trợ CJK qua cấu hình font, và render văn bản hoạt động tự động.

php
$doc->configureFonts(function (FontConfig $config): void {
    $config->addFont('/fonts/NotoSansCJK-Regular.ttc', alias: 'NotoSansCJK');
});

$doc->setFont('NotoSansCJK', size: 12);
$doc->cell(text: '你好世界');        // Tiếng Trung
$doc->cell(text: 'こんにちは世界');   // Tiếng Nhật
$doc->cell(text: '안녕하세요 세계');   // Tiếng Hàn

TCPDF-Next đã sẵn sàng cho production chưa?

Có. Thư viện được hỗ trợ bởi pipeline testing và phân tích nghiêm ngặt:

  • 908+ test bao phủ unit, integration và visual regression.
  • 28,881+ assertion trong test suite.
  • PHPStan Level 10 — mức phân tích tĩnh nghiêm ngặt nhất — pass với zero error.
  • 100% declare(strict_types=1) trên mọi file mã nguồn.

Test suite chạy trên mọi pull request và bắt buộc pass trước khi merge.

Làm sao báo cáo lỗ hổng bảo mật?

Không mở GitHub issue công khai. Thay vào đó, dùng GitHub Security Advisories để báo cáo lỗ hổng riêng tư. Maintainer sẽ phân loại báo cáo, phối hợp sửa lỗi và phát hành bản bảo mật.

Xem thêm tại file SECURITY.md trong repository.

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