imagick的PHP只显示最后一页

时间:2019-02-05 16:35:00

标签: php iis imagemagick imagick

我将imagick与PHP / Windows IIS一起使用。我有一个简单的脚本,可以将TIF文件转换为PDF,并将其呈现给浏览器。它可以完美处理单页TIF文件,但可以处理多页,仅显示最后一页。

我知道它默认显示最后一页,因为$ im变量是一个数组。我试图对其进行的任何尝试都使其无效PDF。下面是我的代码。我是imagick的新手,感谢您的帮助!

$im = new imagick("tmp/tmp.tif");
$im->setImageFormat('pdf');
header('Content-Type: application/pdf');
echo $im;

ImageMagick版本ImageMagick 7.0.7-11 Q16 x64 2017-11-23

ImageMagick库版本ImageMagick 7.0.7-11 Q16 x64 2017-11-23

(这是非常粗糙的测试代码,我稍后会清理)

1 个答案:

答案 0 :(得分:2)

内部图像迭代器指向最后读取的页面。您只需使用Imagick::setFirstIterator将其重置为首页。

$im = new imagick("tmp/tmp.tif");
$im->setFirstIterator();
$im->setImageFormat('pdf');
header('Content-Type: application/pdf');
echo $im->getImage();

甚至

$im->setIteratorIndex(0);

基于评论进行编辑

如果尝试输出整个PDF文档,则应使用Imagick::getImagesBlob

$im = new imagick("tmp/tmp.tif");
$im->setFirstIterator();
$im->setImageFormat('pdf');
$blob = $im->getImagesBlob();
header('Content-Type: application/pdf');
header('Content-Length: ' . strlen($blob));
echo $blob;