Skip to content

Часто задаваемые вопросы

Почему TCPDF-Next требует PHP 8.5+?

PHP 8.5 вводит языковые возможности, фундаментальные для архитектуры библиотеки — включая поддержку pipe-оператора, улучшенный вывод типов и расширенную семантику readonly. Ориентация на современную среду выполнения позволяет TCPDF-Next быть компактнее, быстрее и безопаснее по конструкции, а не за счёт обходных решений.

Подробное обоснование см. в Почему PHP 8.5?.

Является ли TCPDF-Next форком TCPDF?

Нет. TCPDF-Next — это полностью переписанная с нуля библиотека. Она не имеет общего кода с оригинальной библиотекой TCPDF. Часть «TCPDF» в названии признаёт предметную область (генерация PDF на PHP) и влияние устаревшего проекта на сообщество, но архитектура, API и реализация полностью новые.

Можно ли использовать её без Laravel?

Да. Пакет tcpdf-next/core полностью фреймворко-независим. Он зависит только от PHP 8.5+ и не имеет зависимостей от фреймворков. Вы можете использовать его в любом PHP-приложении — Symfony, Slim, ванильных PHP-скриптах, CLI-утилитах или обработчиках очередей.

Опциональный пакет tcpdf-next/laravel добавляет Laravel-специфичные удобства (service provider, Facade, публикация конфигурации), но не является обязательным.

В чём разница между Core и Pro?

CorePro
ЛицензияMITКоммерческая
Генерация PDFПолнофункциональнаяПолнофункциональная
Продвинутая типографикаБазоваяOpenType-шейпинг, BiDi, лигатуры
Электронные подписиНе включеныPAdES / CAdES / X.509
PDF/A, PDF/XНе включеныПолные режимы совместимости
Движок штрихкодов1D-штрихкоды1D + 2D (QR, DataMatrix, PDF417)
ПоддержкаСообщество (GitHub Issues)Приоритетная email + SLA

Core готов к продакшену самостоятельно. Pro расширяет его корпоративными функциями и функциями соответствия стандартам.

Как генерировать HTML в PDF с полной поддержкой CSS3?

Используйте пакет Artisan (tcpdf-next/artisan). Он предоставляет конвейер рендеринга, принимающий HTML + CSS3 на входе и создающий пиксельно-точный PDF на выходе, работая на базе TCPDF-Next Core.

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 поддерживает Flexbox, Grid, веб-шрифты, media queries и большую часть спецификации CSS3.

Поддерживает ли TCPDF-Next CJK (китайский, японский, корейский)?

Да. TCPDF-Next имеет первоклассную поддержку CJK-скриптов и сложных текстовых раскладок:

  • CjkFontValidator — валидирует и создаёт подмножества CJK-шрифтов, обеспечивая корректное покрытие глифов.
  • BiDiResolver — обрабатывает двунаправленный текст (например, смесь английского и арабского/иврита).
  • ArabicShaper — применяет контекстные правила формирования для арабского, фарси и урду.

Встройте любой CJK-совместимый TrueType/OpenType шрифт через конфигурацию шрифтов, и рендеринг текста работает автоматически.

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

$doc->setFont('NotoSansCJK', size: 12);
$doc->cell(text: '你好世界');        // Китайский
$doc->cell(text: 'こんにちは世界');   // Японский
$doc->cell(text: '안녕하세요 세계');   // Корейский

Готова ли TCPDF-Next к продакшену?

Да. Библиотека обеспечена строгим конвейером тестирования и анализа:

  • 908+ тестов, охватывающих модульные, интеграционные и визуально-регрессионные сценарии.
  • 28,881+ проверок по всему набору тестов.
  • PHPStan Level 10 — строжайший уровень статического анализа — проходит без ошибок.
  • 100% declare(strict_types=1) во всех исходных файлах.

Набор тестов запускается при каждом pull request и является обязательным условием для merge.

Как сообщить об уязвимости безопасности?

Не открывайте публичный GitHub Issue. Вместо этого используйте GitHub Security Advisories для приватного сообщения об уязвимостях. Мейнтейнеры рассмотрят отчёт, скоординируют исправление и опубликуют релиз безопасности.

Подробнее см. файл SECURITY.md в репозитории.

Распространяется по лицензии LGPL-3.0-or-later.