Php 使用Imagick创建两个pdf页面

Php 使用Imagick创建两个pdf页面,php,pdf,imagick,Php,Pdf,Imagick,目前,我可以使用此功能从Imagick中的图像创建PDF文件 $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]

目前,我可以使用此功能从Imagick中的图像创建PDF文件

$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]");
但是否可以将两个图像对象保存到两个页面? (举例说明我的想法,这是不可能的)

这样行吗

$im->setImageFormat("pdf");
$im->writeImage("file1.pdf");

$im2->setImageFormat("pdf");
$im2->writeImage("file2.pdf");

exec("convert file*.pdf all.pdf");

我不知道php或这个Imagick库,但如果调用外部程序是可以接受的,我可以建议该程序合并pdf文件

它确实依赖于pdflatex,因此如果这是您打算在服务器上运行的东西,您可能需要安装额外的latex东西,但是pdfjoin的最终结果非常好,所以我认为这是值得的。

是一个纯Perl解决方案,用于像这样的低级别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);
使用CAM::PDF; 我的$doc1=CAM::PDF->new('file1.PDF'); 我的$doc2=CAM::PDF->new('file2.PDF'); $doc1->appendPDF($doc2); $doc1->cleanoutput('out.pdf')

如果您能够找出如何使ImageMagick写入字符串而不是文件(我不是ImageMagick专家…),那么您可以通过将其全部保存在Perl中来节省一些性能开销


(我是CAM::PDF的作者。它是免费软件:GPL+艺术双授权)。

我知道这已经过期很久了,但当我尝试做同样的事情时,这个结果出现了。以下是如何使用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);

这将返回一个分段错误。很好的尝试:有没有一种方法可以从图像块(相对于图像文件)执行此操作?这将使用数组中的最后一个图像创建一个单页pdf