Как преобразовать PDF-документ в изображение предварительного просмотра на PHP? [закрытый]
какие библиотеки, расширения и т. д. потребуется отрисовать часть PDF документа в файл изображения?
большинство библиотек PHP PDF, которые я нашел, сосредоточены на создании PDF-документов, но есть ли простой способ отобразить документ в формат изображения, подходящий для использования в интернете?
наша окружающая среда стог лампы.
10 ответов:
вам нужно
ImageMagickиGhostScript<?php $im = new imagick('file.pdf[0]'); $im->setImageFormat('jpg'); header('Content-Type: image/jpeg'); echo $im; ?>The
[0]означаетpage 1.
для тех, кто не имеет ImageMagick по какой-либо причине, функции GD также будут работать в сочетании с GhostScript. Запустите команду ghostscript с помощью
exec()для преобразования PDF в JPG и управления полученным файлом с помощьюimagecreatefromjpeg().выполните команду ghostscript:
exec('gs -dSAFER -dBATCH -sDEVICE=jpeg -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r300 -sOutputFile=whatever.jpg input.pdf')чтобы манипулировать, создайте новый образ заполнителя,
$newimage = imagecreatetruecolor(...), и принести в текущем изображении.$image = imagecreatefromjpeg('whatever.jpg'), и тогда вы можете использоватьimagecopyresampled()чтобы изменить размер, или любое количество других встроенный, неimagemagickкоманды
вы также можете получить количество страниц с помощью
$im->getNumberImages();затем вы можете создать превью всех страниц с помощью цикла, например.
'file.pdf['.$x.']'
используйте расширение php Imagick. Для управления требуемым размером выходного растрового изображения используйте функции setResolution
<?php $im = new Imagick(); $im->setResolution(300, 300); //set the resolution of the resulting jpg $im->readImage('file.pdf[0]'); //[0] for the first page $im->setImageFormat('jpg'); header('Content-Type: image/jpeg'); echo $im; ?>(расширение на Паоло Бергантино его ответ и Луис Мельгратти его комментарий. Вы должны установить разрешение перед загрузкой изображения.)
Если вы загружаете PDF из большого двоичного объекта, вот как вы получаете первую страницу вместо последней страницы:
$im->readimageblob($blob); $im->setiteratorindex(0);
вы также можете попробовать выполнить утилиту "convert", которая поставляется с imagemagick.
exec("convert pdf_doc.pdf image.jpg"); echo 'image-0.jpg';
установить конец! Это сработало!
вы можете быть сделать основания установить imagemagick на windows.
на
php (local)вызовexec(<command line>)например:<?php $pdf = "filename.pdf"; $info = pathinfo($pdf); $file_name = basename($pdf,'.'.$info['extension']); echo $file_name; $pdf = "filename.pdf[0]"; exec("convert $pdf convert-img/$file_name.jpg"); ?>кроме того, вы можете использовать
class imagickна PHP Imagick classспасибо всем помог мне!
Я автор книги PDFlib что это GhostScript обертка для php, преимуществом использования этой библиотеки является то, что она уже протестирована и не требует
ImageMagicвсегда
GhostScriptкоманды быстрее, чемImageMagicкогда дело доходит до pdf, поэтому вы должны либо пойти на оболочку GhostScript, либо чистые команды GhostScript$pdflib = new ImalH\PDFLib\PDFLib(); $pdflib->setPdfPath($pdf_file_path); $pdflib->setOutputPath($folder_path_for_images); $pdflib->convert();
вот простой класс, который я написал и использовал на нескольких проектах. Он просто обертывает
imagickи обрабатывает запись каждой страницы на диск. Если кто-то все еще ищет простой способ сделать это,этой ссылке может быть полезным.