Как преобразовать 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
и обрабатывает запись каждой страницы на диск. Если кто-то все еще ищет простой способ сделать это,этой ссылке может быть полезным.