将pdfs与zendpdf合并

时间:2015-11-25 08:36:52

标签: php zend-framework2

我使用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

2 个答案:

答案 0 :(得分:2)

我所知道的是pdf大于5MB的问题。检查问题 here on GitHub

不确定您面对的是同一个问题。您尝试使用较小的文件吗?

根据GitHub上的答案,模块"不再维护"
我还在寻找替代品......

修改

ZendPdf\PdfDocument::loada 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。