使用TCPDF合并PDF文档创建新的PDF

16

我如何使用我生成的其他PDF文件创建一个新的文档?

我有一些创建文档的方法,我想将它们合并成一个大的PDF文件,我该如何使用TCPDF实现这个功能?

我不想使用其他库。

6个回答

12

TCPDF有一个名为tcpdf_import的类,该类在2011年添加,但仍处于“开发中”状态。如果您不想使用TCPDF以外的任何内容,则不幸了!

但是FPDI是TCPDF的绝佳补充:它就像一个插件那样简单。只需要这样:

require_once('tcpdf/tcpdf.php');
require_once('fpdi/fpdi.php'); // the addon

// FPDI extends the TCPDF class, so you keep all TCPDF functionality
$pdf = new FPDI(); 

$pdf->setSourceFile("document.pdf"); // must be pdf version 1.4 or below
// FPDI's importPage returns an object that you can insert with TCPDF's useTemplate
$pdf->useTemplate($pdf->importPage(1)); 

完成了!

另请参阅此问题: TCPDF和FPDI多页


1
他有两个生成的PDF文件。你的建议是一个生成的PDF和另一个保存在磁盘上的PDF。 - Matmarbon
1
这种方法允许添加多个PDF文件,只需重复该过程即可。您不需要使用TCPDF的方法自己生成新的PDF页面,因此只有“导入”的PDF页面/文件保留下来。 - Sygmoral
4
FPDI原生仅支持PDF版本1.4以下的文件。如果您的PDF文件版本高于1.4,则需要购买解析器许可证。 - Ophiuchus

4

为什么不使用Zend_PDF,它是合并文件的非常好的方法。

<?php
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');
?>

6
对于其他人在此寻找的情况,Zend PDF库似乎已被放弃:https://github.com/zendframework/ZendPdf - James Bell

3

你好,我认为TCPDF无法合并PDF文件。

您可以尝试使用Shell命令和PDFTK Toolkit来完成此操作,这样就不需要使用其他PDF库。


问题在于我必须保存每个PDF,然后合并并再次擦除PDF,难道TCPDF真的无法合并文档吗? :( - LuRsT
显然,如果我没错的话,import正在开发中 - http://www.tcpdf.org/doc/code/classTCPDF__IMPORT.html#a5a9effc936e8fa461c0f6717c2d10d93 - webcoder

3

这篇帖子是从2009年开始的,但在2020年仍然存在使用现有PDF文件的PHP问题。

由于Zend_PDF已经被废弃且TCPDI不支持PHP 7,FPDI 是目前2020年似乎唯一剩下的几个可行方案之一。它可以与TCPDF和FPDF一起使用,因此现有代码仍然可以正常工作。而且目前看来,它一直得到维护。


使用FPDI合并文件非常容易! https://www.setasign.com/products/fpdi/demos/concatenate-fake/#p-304 - Tobse
2
值得注意的是,FPDI的免费版本只能处理PDF <= 1.4。 - Luke

1

请查看FPDI和FPDF_TPL。这不是一个完美的解决方案,但您可以基本上使用FPDF_TPL创建PDF文件的模板,然后将其插入到您的PDF文件中。


0

FPDI工作正常,但在处理PDF 1.7时存在一些问题,如果您无法控制要合并的PDF文件,则不适合使用,因此最终解决方案仍有待确定。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接