题
目前,我可以创建的PDF格式文件图像在Imagick有这个功能
$im->setImageFormat("pdf");
$im->writeImage("file.pdf");
和这有可能获取多页与imagick喜欢这个
$im = new imagick("file.pdf[0]");
$im2 = new imagick("file.pdf[1]");
但是,它可能节省的两个图像对象为两页?(例如什么,我在想,它不可能这样)
$im->setImageFormat("pdf");
$im->writeImage("file.pdf[0]");
$im2->setImageFormat("pdf");
$im2->writeImage("file.pdf[1]");
解决方案
我知道这是早已过去到期,但这个结果出来了,当我试图做同样的事情。这里是你如何在PHP中创建和Imagick一个多页的PDF文件。
$images = array(
'page_1.png',
'page_2.png'
);
$pdf = new Imagick($images);
$pdf->setImageFormat('pdf');
if (!$pdf->writeImages('combined.pdf', true)) {
die('Could not write!');
}
其他提示
接受的答案是不工作对我来说,作为一个结果,它总是产生一个页面的PDF(从构造最后一个图像),使这项工作,我不得不先得到文件描述符,像这样的:
$images = array(
'img1.png', 'img2.png'
);
$fp = fopen('combined.pdf', 'w');
$pdf = new Imagick($images);
$pdf->resetiterator();
$pdf->setimageformat('pdf');
$pdf->writeimagesfile($fp);
fclose($fp);
这是工作?
$im->setImageFormat("pdf");
$im->writeImage("file1.pdf");
$im2->setImageFormat("pdf");
$im2->writeImage("file2.pdf");
exec("convert file*.pdf all.pdf");
CAM :: PDF 是用于低等级的纯Perl溶液PDF操作是这样的。您可以使用 appendpdf.pl 命令-line工具,或做编程是这样的:
使用CAM :: PDF; 我的$ DOC1 = CAM :: PDF - >新( 'file1.pdf'); 我的$ DOC2 = CAM :: PDF - >新( 'file2.pdf'); $ doc1-> appendPDF($ DOC2); $ doc1-> cleanoutput( 'out.pdf');
如果你能弄清楚如何让ImageMagick的写入字符串,而不是一个文件(我不是ImageMagick的专家...),那么您可以通过保持它所有在Perl节省一些性能开销。
(我CAM :: PDF的作者它是免费软件:GPL +艺术双重许可)。
我不知道php或这Imagick库,但如果叫的外部程序是可以接受的,我可以推荐的程序 pdfjoin 到合并的pdf文件。
它有一个依赖pdflatex,因此,如果这是你的东西打算在服务器上运行的你可能需要安装额外的乳胶的东西,但最终的结果从pdfjoin是很好,所以我认为这将是值得的。