Imagick PHP 只显示最后一页

Imagick PHP only displaying last page

我在 PHP/Windows IIS 中使用 imagick。我有一个简单的脚本,可以将 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

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

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