Quelles bibliothèques, extensions, etc. seraient nécessaires pour le rendu d'une partie d'un document PDF dans un fichier image?
La plupart des bibliothèques PHP PDF que j'ai trouvées sont centrées sur la création de documents PDF, mais existe-t-il un moyen simple de restituer un document dans un format d'image compatible avec Internet? ?
Notre environnement est une pile de lampes.
Vous avez besoin de ImageMagick
et GhostScript
<?php
$im = new imagick('file.pdf[0]');
$im->setImageFormat('jpg');
header('Content-Type: image/jpeg');
echo $im;
?>
Le [0]
signifie page 1
.
Pour ceux qui ne possèdent pas ImageMagick pour quelque raison que ce soit, les fonctions Gd fonctionneront également, en association avec GhostScript. Exécutez la commande ghostscript avec exec()
pour convertir un fichier PDF au format JPG, puis manipulez le fichier obtenu avec imagecreatefromjpeg()
.
Exécutez la commande ghostscript:
exec('gs -dSAFER -dBATCH -sDEVICE=jpeg -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r300 -sOutputFile=whatever.jpg input.pdf')
Pour manipuler, créez une nouvelle image de substitution, $newimage = imagecreatetruecolor(...)
, et importez l'image actuelle. $image = imagecreatefromjpeg('whatever.jpg')
, puis vous pouvez utiliser imagecopyresampled()
pour modifier la taille ou un nombre quelconque d'autres commandes intégrées, autres que_imagemagick
Vous pouvez également obtenir le nombre de pages en utilisant
$im->getNumberImages();
Ensuite, vous pouvez créer des vignettes de toutes les pages en utilisant une boucle, par exemple.
'file.pdf['.$x.']'
Utilisez l'extension php Imagick . Pour contrôler la taille souhaitée de l’image en sortie, utilisez la commande fonction 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;
?>
(Extension sur la réponse de Paolo Bergantino et sur le commentaire de Luis Melgratti. Vous devez définir la résolution avant de charger l'image.)
Si vous chargez le PDF à partir d'un blob, voici comment obtenir la première page au lieu de la dernière page:
$im->readimageblob($blob);
$im->setiteratorindex(0);
Vous pouvez également essayer d'exécuter l'utilitaire 'convert' fourni avec imagemagick.
exec("convert pdf_doc.pdf image.jpg");
echo 'image-0.jpg';
Je suis l'auteur de PDFlib qui est un wrapper GhostScript pour php, l'avantage de l'utilisation de cette bibliothèque est qu'elle est déjà testée et qu'elle ne nécessite pas ImageMagic
Les commandes Always GhostScript
sont plus rapides que ImageMagic
en ce qui concerne le format PDF. Vous devez donc choisir un wrapper GhostScript ou des commandes GhostScript pures.
$pdflib = new ImalH\PDFLib\PDFLib();
$pdflib->setPdfPath($pdf_file_path);
$pdflib->setOutputPath($folder_path_for_images);
$pdflib->convert();
J'installe fini! Ça a marché!
Vous pouvez être faire base installer imagemagick sur Windows.
Dans php (local)
, utilisez l'appel 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");
?>
En outre, vous pouvez utiliser class imagick
dans classe PHP Imagick
Merci à tous m'a aidé!
Pensez différemment. Vous pouvez utiliser la bibliothèque suivante pour convertir un fichier PDF en image à l'aide de javascript.
Voici un cours simple que j'ai écrit et utilisé sur quelques projets. Cela enveloppe simplement imagick
et gère l’écriture de chaque page sur le disque. Si quelqu'un cherche toujours un moyen facile de le faire, ce lien pourrait être utile.