Слияние существующего PDF с динамически созданным PDF с использованием TCPDF

Я создаю 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