Imagick PHP отображает только последнюю страницу - PullRequest
0 голосов
/ 05 февраля 2019

Я использую 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-11Q16 x64 2017-11-23

(это очень грубый код тестирования, позже я его исправлю)

1 Ответ

0 голосов
/ 05 февраля 2019

Внутренний итератор изображения указывает на последнюю прочитанную страницу.Вам просто нужно сбросить его на первую страницу с 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...