Ответ 1
Вам нужно ImageMagick
и GhostScript
<?php
$im = new imagick('file.pdf[0]');
$im->setImageFormat('jpg');
header('Content-Type: image/jpeg');
echo $im;
?>
[0]
означает page 1
.
Какие библиотеки, расширения и т.д. должны были бы отображать часть документа PDF в файл изображения?
Большинство PHP-библиотек PDF, которые я нашел вокруг создания PDF-документов, но есть ли простой способ сделать документ в формате изображения, подходящем для использования в Интернете?
Наша среда - это стек LAMP.
Вам нужно ImageMagick
и GhostScript
<?php
$im = new imagick('file.pdf[0]');
$im->setImageFormat('jpg');
header('Content-Type: image/jpeg');
echo $im;
?>
[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 на окна.
В php (local)
используйте вызов exec(<command line>)
ex:
<?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
Спасибо, все мне помогли!
Вот простой класс, который я написал и использовал в нескольких проектах. Он просто обертывает imagick
и обрабатывает запись каждой страницы на диск. Если кто-то все еще ищет простой способ сделать это, эта ссылка может быть полезна.
Я автор 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();