我使用zendpdf类在网站上生成PDF并且正常工作。 现在我正在尝试将不同的pdf与zendpdf合并,并且有一个问题总是以空白PDF格式返回,但没有任何错误。这是我的代码:
$pdf_merged = new ZendPdf\PdfDocument();
$pdf_1 = new ZendPdf\PdfDocument();
$pdf_1->load("public/files/invoices/pdf1.pdf");
$pdf_2 = new ZendPdf\PdfDocument();
$pdf_1->load("public/files/invoices/pdf2.pdf");
foreach ($pdf_1->pages as $page){
$pdf_extract = clone $page;
$pdf_merged->pages[] = $pdf_extract;
}
unset($pdf_extract);
foreach ($pdf_2->pages as $page){
$pdf_extract = clone $page;
$pdf_merged->pages[] = $pdf_extract;
}
unset($pdf_extract);
$pdf_merged->save("public/files/invoices/MERGED.pdf");
我也试过使用Extractor类,但结果相同:
$pdf_merged = new ZendPdf\PdfDocument();
$pdf_1 = new ZendPdf\PdfDocument();
$pdf_1->load("public/files/invoices/pdf1.pdf");
$pdf_2 = new ZendPdf\PdfDocument();
$pdf_1->load("public/files/invoices/pdf2.pdf");
$extractor = new ZendPdf\Resource\Extractor();
foreach ($pdf_1->pages as $page){
$pdf_extract = $extractor->clonePage($page);
$pdf_merged->pages[] = $pdf_extract;
}
unset($pdf_extract);
foreach ($pdf_2->pages as $page){
$pdf_extract = $extractor->clonePage($page);
$pdf_merged->pages[] = $pdf_extract;
}
unset($pdf_extract);
$pdf_merged->save("public/files/invoices/MERGED.pdf");
我做了一些研究(这里和zf2手册),显然这个解决方案应该可行,但在我的情况下并不适用。
这可能是PDF版本的问题吗?
提前Tahnks答案 0 :(得分:2)
我所知道的是pdf大于5MB的问题。检查问题 here on GitHub。
不确定您面对的是同一个问题。您尝试使用较小的文件吗?
根据GitHub上的答案,模块"不再维护" 。
我还在寻找替代品......
ZendPdf\PdfDocument::load
是a static method。你可以这样做:
use ZendPdf\PdfDocument;
...
$pdf_1 = PdfDocument::load("public/files/invoices/pdf1.pdf");
$pdf_2 = PdfDocument::load("public/files/invoices/pdf2.pdf");
答案 1 :(得分:0)
即使PHP方法很好地合并PDF文件也有很多不便之处(库不再维护,错误,与PHP本身相关的问题,性能......)
我放弃PHP替代使用PDFUNITE。
这个能够在不到0.20秒内合并超过5000万个PDF文件(我的生产环境中的发票)。之后,我无法回到PHP。