Я создаю PDF-документ, используя TCPDF. Мое требование состоит в объединении существующего содержимого PDF на последней странице динамически созданного PDF.
На сегодняшний день лучшим решением вашей проблемы является использование FPDI
.
https://github.com/Setasign/FPDI
Как это работает, FPDI
расширяет TCPDF
поэтому вы можете работать с объектом FPDI
используя все методы, которые вы использовали для использования с TCPDF
, но с дополнительными методами, которые вам нужны для импорта страниц из существующих файлов PDF ( setSourceFile
, getTemplateSize
и useTemplate
).
Это выглядит немного сложнее, но если вы используете Composer, это действительно невероятно просто. Просто добавьте setasign/fpdi
и setasign/fpdi-tcpdf
в ваш файл composer.json
а затем используйте экземпляр FPDI
вместо вашего экземпляра TCPDF
. Я обнаружил, что мне даже не нужно вызывать class_exists('TCPDF', true)
как указано на странице github. Как только я добавил эти другие записи в composer.json
и запустил composer dumpautoload
он просто сработал.
Это все еще находится в разработке для TCPDF: http://www.tcpdf.org/doc/code/classTCPDF__IMPORT.html#a5a9effc936e8fa461c0f6717c2d10d93
Если возможно, вы можете использовать ZEND:
require_once 'Zend/Pdf.php'; $pdf1 = Zend_Pdf::load("1.pdf"); $pdf2 = Zend_Pdf::load("2.pdf"); foreach ($pdf2->pages as $page){ $pdf1->pages[] = $page; } $pdf1->save('3.pdf');
Если вы работаете в Linux, вы также можете запустить команду оболочки.
<?php exec('pdfjam 1.pdf 2.pdf -o 3.pdf'); // -o = output
Вы можете установить pdfjam отсюда: http://www2.warwick.ac.uk/fac/sci/statistics/staff/academic/firth/software/pdfjam/pdfjam_latest.tgz