Перейти к содержимому

Установка NextPDF compat-legacy

nextpdf/compat-legacy — библиотека Composer. Для неё нужны PHP 8.4 или новее и nextpdf/core ^3.0. Установите её, чтобы добавить класс совместимости, на который можно перейти; существующие вызовы TCPDF останутся без изменений.

ЗависимостьВерсияАвторитетный источник
PHP>=8.4 <9.0пакет composer.jsonrequire.php
nextpdf/core^3.0пакет composer.jsonrequire
Composer (менеджер пакетов)2.7 или новеебазовый уровень инструментария

Пакет включает собственный набор тестов и заявляет PHPStan Level 10 без baseline-файла. Для выполнения ему требуется PHP 8.4. Движок NextPDF в целом поддерживает PHP 8.1—8.4 в ветке бэкпортов, но у этого адаптера нижняя граница — PHP 8.4.

Добавьте пакет с помощью Composer:

Окно терминала
composer require nextpdf/compat-legacy:^3.0

Composer разрешает nextpdf/core ^3.0 как транзитивную зависимость. Для базового набора возможностей не нужны другие расширения среды выполнения.

В метаданных пакета историческое имя nextpdf/compat-tcpdf также принимается через запись replace в Composer. Для новых установок указывайте nextpdf/compat-legacy — каноническое имя пакета.

После установки убедитесь, что класс адаптера загружается, а связь с движком устанавливается. Следующая проверка создаёт одностраничный документ в формате Portable Document Format (PDF) целиком в памяти и проверяет заголовок PDF. Она задействует тот же участок API, который проверяет тест пакета tests/Unit/Compat/Tcpdf/TcpdfOutputTest.php.

examples/install-verify.php
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use NextPDF\Compat\Tcpdf\TCPDF;
$pdf = new TCPDF('P', 'mm', 'A4');
$pdf->AddPage();
$pdf->SetFont('helvetica', '', 12);
$pdf->Cell(0, 10, 'compat-legacy install verified');
$bytes = $pdf->Output('verify.pdf', 'S');
if (! str_starts_with($bytes, '%PDF')) {
fwrite(STDERR, "Install check failed: output is not a PDF.\n");
exit(1);
}
echo "OK: adapter loaded, engine linked, PDF produced (" . strlen($bytes) . " bytes).\n";

Запустите её:

Окно терминала
php examples/install-verify.php

Ожидаемый вывод — одна строка OK:. Префикс %PDF в возвращённой строке подтверждает, что адаптер построил NextPDF\Core\Document, делегировал вызовы страницы и текста и сериализовал корректный вывод PDF 2.0.

Адаптеру требуется nextpdf/core ^3.0. Проверьте версию, которую разрешил Composer:

Окно терминала
composer show nextpdf/core --format=json

Если Composer разрешил версию ядра за пределами ^3.0, адаптер сразу завершится с ошибкой при создании объекта, а не будет выдавать неверный вывод. Явно закрепите версию движка в своём composer.json, если ваш проект зависит от него напрямую.

Дополнительно: глобальные псевдонимы классов

Заголовок раздела «Дополнительно: глобальные псевдонимы классов»

Если ваша кодовая база вызывает new \TCPDF(...) в глобальном пространстве имён и вы пока не можете изменить эти инструкции use/require, пакет может зарегистрировать глобальные псевдонимы. Это поведение включается явно и описано в /integrations/tcpdf-compat/boot-and-discovery/. Не включайте его, если в том же процессе также установлена настоящая библиотека TCPDF; правило предотвращения конфликтов см. в /integrations/tcpdf-compat/troubleshooting/.

  • Она не изменяет и не удаляет существующую зависимость TCPDF. Удаляйте tecnickcom/tcpdf только как последующий осознанный шаг в /integrations/tcpdf-compat/migration/.
  • Она не активирует цифровые подписи или PDF/A. Эти возможности требуют коммерческой редакции NextPDF (см. /integrations/tcpdf-compat/security-and-operations/).
  • Она не меняет целевой формат вывода PDF. Вывод всегда соответствует PDF 2.0.
  • /integrations/tcpdf-compat/quickstart/ — создайте первый полноценный документ.
  • /integrations/tcpdf-compat/configuration/ — настройте строгий режим и адаптер.
  • /integrations/tcpdf-compat/migration/ — используйте стратегию пофайловой миграции.
  • /integrations/tcpdf-compat/method-coverage/ — узнайте, что именно делает здесь каждый метод TCPDF.
  • Пакетный composer.json — авторитетный источник ограничений зависимостей
  • docs/TCPDF_COVERAGE.md — авторитетная матрица покрытия (в репозитории)