我将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
(这是非常粗糙的测试代码,我稍后会清理)
答案 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;