Как преобразовать PDF-документ в изображение предварительного просмотра на PHP? [закрытый]


какие библиотеки, расширения и т. д. потребуется отрисовать часть PDF документа в файл изображения?

большинство библиотек PHP PDF, которые я нашел, сосредоточены на создании PDF-документов, но есть ли простой способ отобразить документ в формат изображения, подходящий для использования в интернете?

наша окружающая среда стог лампы.

10 181

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

подумайте по-другому, вы можете использовать следующую библиотеку для преобразования pdf в изображение с помощью javascript

http://usefulangle.com/post/24/pdf-to-jpeg-png-with-pdfjs