使用PHP将JPG合并成一个PDF

10
我想将一系列JPG文件合并成一个PDF文件,每个JPG都是自己的一页。我猜ImageMagick是最好的方法来做到这一点,然而我似乎无法弄清楚如何组合这些文件。我在这里看到了combineImages方法:

http://php.net/manual/en/imagick.combineimages.php

但是找不到任何例子。我对ImageMagick还很陌生,仍在努力弄清语法。

ImageMagick能做到我要求的吗?如果可以,有人能写一个快速示例吗?

谢谢!

1个回答

36
PHP 中,您可以使用:
$images = array("file1.jpg", "file2.jpg");

$pdf = new Imagick($images);
$pdf->setImageFormat('pdf');
$pdf->writeImages('combined.pdf', true); 

writeImages 方法中的 true 参数非常重要,因为它将使方法写入一系列图像,而不仅仅是一个。


您也可以通过命令行执行此操作:

convert file1.jpg file2.jpg output.pdf

嗨,我已经使用了以上代码。PDF转换工作正常。但是图像颜色格式发生了变化(从CMYK变为RGB)。我需要将PDF的颜色格式与源文件(CMYK)保持一致。 - Rat
1
要设置输出文件的颜色空间,请使用 $pdf->setImageColorspace(imagick::COLORSPACE_CMYK);。如果您想要与输入完全相同的空间,可以尝试类似这样的代码 $page = new Imagick("colorsCMYK.jpg"); $pdf->setImageColorspace($page->getImageColorspace()); - rostok
这对我很有效,但值得指出的是,出于安全原因,默认情况下禁用pdf编写。我发现这个链接很有帮助:https://andy-carter.com/blog/how-to-fix-imagickexception-not-authorized - Badger
什么?致命错误:未捕获的异常 'ImagickException',消息为“未授权 `combined.pdf' @ error/constitute.c/WriteImage/1”。 - Akbarali
这看起来像是权限问题。https://github.com/ImageMagick/ImageMagick/blob/f548a590c00313db021a687323ee6eb5f30d1e62/MagickCore/constitute.c#L416 - rostok

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