@turbomen24

Как получить ссылки на изображения, конвертированные Imagick из pdf в img?

Моя функция преобразует все страницы pdf в изображения:

$url = 'files/myfile.pdf';
$imagick = new Imagick();
$imagick->setResolution(150, 150);
$imagick->readImage($url);
$imagick->writeImages('files/myfile.jpg', false);
$imagick->destroy();


Как мне получить на выходе ссылки на эти изображения? Если мне нужно получить одну страницу, это не проблема, ведь я записываю изображения в определённую папку и знаю имя файла, но если там несколько страниц? Можно получить количество страниц через $imagick->getNumberImages();, далее присваивать и высчитывать через операторы инкремента и декремента все мои новые изображения, но может есть более лёгкий путь?

UPD Вот готовое решение
Так же я использую рандомное число во избежание перезаписи существующих файлов (если вдруг pdf с таким именем уже существует, соответственно изображения будут перезаписывать уже существующие), и так же создаю папку через mkdir для них , потому что imagick этого делать не умеет. В моём случае, эти картинки - временные файлы, уже потом они будут перемещаться в другую директорию и заноситься в базу данных, поэтому по окончании всех манипуляций моя созданная папка со всеми файлами будет удалена, и ссылки мне нужны только для дальнейшей обработки.

$attachment_url = 'test/myfile.pdf';   // Мой файл
$attachment_title = *имя файла*;   // В моём случае я получаю это через фукнцию вызова названия записи
$imagick = new Imagick();	//запускаем imagick
$imagick->setResolution(150, 150);
$imagick->readImage($attachment_url);
$rand = mt_rand(100000, 999999);       //Рандомное число
$new_name = $rand.'-'.$attachment_title;      //Новое имя для файла и папки с рандомным числом
mkdir("test/$new_name", 0755);  //   новая папка
$imagick->writeImages("test/$new_name/$new_name%03d.jpg", false);
$files = scandir("test/$new_name");  //сканируем папку
foreach($files as $f) {
      echo '<a href="http://testsite.com/test/'.$new_name.'/'.$f.'">'.$f.'</a><br />'; }     //получаем ссылки на изображения
  • Вопрос задан
  • 136 просмотров
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Самый простой способ всё знать - контролировать что и куда вы записываете и с каким именем.
getNumberImages() нормальный вариант, так как позволяет узнать кол-во страниц в pdf и соотв-но сохранить затем каждую страницу в отдельное изображение.

То есть делаете в 2 шага
1. узнать кол-во страниц в pdf
2. на каждую страницу вызвать imagick($pdf_file[0]) где [0] номер страницы и сохранить результат с желаемым именем.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы