Моя функция преобразует все страницы 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 />'; } //получаем ссылки на изображения