Этот документ относится к FPDI 2. Версия 1 устарела, и разработка прекращена.
FPDI — это набор классов PHP, позволяющий разработчикам читать страницы из существующих PDF-документов и использовать их в качестве шаблонов в FPDF, разработанном Оливье Плати. Помимо копии FPDF, FPDI не требует каких-либо специальных расширений PHP.
FPDI также можно использовать как расширение TCPDF или tFPDF.
Поскольку FPDI можно использовать с FPDF, TCPDF или tFPDF, мы не добавили фиксированную зависимость в основной файл композитора.json. Вам необходимо самостоятельно добавить зависимость в выбранную вами библиотеку создания PDF-файлов.
Чтобы использовать FPDI с FPDF, включите в файл композитора.json следующее:
{"require": {"setasign/fpdf": "1.8.*", "setasign/fpdi": "^2.5"} }
Если вы хотите использовать TCPDF, вам необходимо обновить ваш композитор.json, чтобы:
{"require": {"tecnickcom/tcpdf": "6.6.*", "setasign/fpdi": "^2.5"} }
Если вы хотите использовать tFPDF, вам необходимо обновить композитор.json, чтобы:
{"require": {"setasign/tfpdf": "1.33.*", "setasign/fpdi": "^2.3"} }
Если вы не используете композитор, просто запросите autoload.php в папке /src:
require_once('src/autoload.php');
Если у вас реализован автозагрузчик PSR-4, просто зарегистрируйте путь src следующим образом:
$loader = новый examplePsr4AutoloaderClass;$loader->register();$loader->addNamespace('setasignFpdi', 'path/to/src/');
Версия 2 представляет собой полностью переписанную с нуля FPDI, которая включает в себя:
Код в пространстве имен
Чистая и актуальная база кода и стиль.
Автозагрузка, совместимая с PSR-4
Улучшение производительности до 100%
Меньше потребления памяти
Встроенная поддержка чтения PDF-файлов из строк или потоковых ресурсов.
Поддержка документов с «неверными» данными перед заголовком файла.
Оптимизированное разрешение дерева страниц.
Использование отдельных исключений
Несколько типов тестов (юнитовые, функциональные и визуальные тесты)
Мы постарались сохранить основные методы и логический рабочий процесс такими же, как в версии 1, но обратите внимание, что были несовместимые изменения, которые следует учитывать при обновлении до версии 2:
Вам необходимо загрузить код, используя файл src/autoload.php
вместо classes/FPDI.php
.
Классы и черты теперь расположены в пространстве имен: setasignFpdi
Границы страниц, начинающиеся с косой черты, например /MediaBox
, больше не поддерживаются. Удалите косую черту или используйте константу PdfReaderPageBoundaries
.
Параметры $x, $y, $width и $height метода useTemplate()
или getTemplateSize()
теперь имеют более логичные правильные значения по умолчанию. Передача 0
в качестве ширины или высоты теперь приведет к исключению InvalidArgumentException
.
Возвращаемое значение getTemplateSize()
изменилось на массив с более понятными ключами и возможностью повторного использования: используйте width
вместо w
и height
вместо h
.
Если вы хотите использовать FPDI с TCPDF, вам необходимо провести рефакторинг кода, чтобы использовать класс TcpdfFpdi
(начиная с версии 2.1; до этого он был TcpdfFpdi
) вместо FPDI
.
Простой пример, который импортирует одну страницу и помещает ее на новую созданную страницу:
AddPage();//устанавливаем исходный файл$pdf->setSourceFile("Fantastic-Speaker.pdf");// импортируем страницу 1$tplId = $pdf->importPage(1);// используем импортированную страницу и помещаем ее в точку 10,10 с помощью ширина 100 мм$pdf->useTemplate($tplId, 10, 10, 100);$pdf->Output();
Полную документацию для конечного пользователя и справочник по API можно найти здесь.