首页 > 解决方案 > Imagick PHP 只显示最后一页

问题描述

我正在将 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

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

标签: phpiisimagemagickimagick

解决方案


内部图像迭代器指向读取的最后一页。您只需要使用 将其重置为第一页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;

推荐阅读