2009-02-13 7 views
5

Actuellement, je peux créer des fichiers PDF à partir d'images en Imagick avec cette fonctionCréation de deux pages pdf avec Imagick

$im->setImageFormat("pdf"); 
$im->writeImage("file.pdf"); 

Et il est possible de récupérer plusieurs pages avec imagick comme celui-ci

$im = new imagick("file.pdf[0]"); 
$im2 = new imagick("file.pdf[1]"); 

Mais est-il possible de sauvegarder deux objets image sur deux pages? (exemple de ce que je pense, ce ne est pas possible comme ça)

$im->setImageFormat("pdf"); 
$im->writeImage("file.pdf[0]"); 

$im2->setImageFormat("pdf"); 
$im2->writeImage("file.pdf[1]"); 

Répondre

13

Je sais que c'est depuis longtemps dû, mais ce résultat est venu quand j'essayais de faire la même chose. Voici comment créer un fichier PDF de plusieurs pages en PHP et Imagick.

$images = array(
    'page_1.png', 
    'page_2.png' 
); 
$pdf = new Imagick($images); 
$pdf->setImageFormat('pdf'); 
if (!$pdf->writeImages('combined.pdf', true)) { 
    die('Could not write!'); 
} 
+1

Y at-il un moyen de le faire à partir de blobs d'image (par opposition aux fichiers image)? – dicroce

+0

Cela va créer un pdf d'une seule page en utilisant la dernière image du tableau –

1

Est-ce travail?

$im->setImageFormat("pdf"); 
$im->writeImage("file1.pdf"); 

$im2->setImageFormat("pdf"); 
$im2->writeImage("file2.pdf"); 

exec("convert file*.pdf all.pdf"); 
+0

Ceci renvoie une erreur de segmentation. Nice essayer si: S –

+0

convertir fichier1.pdf fichier2.pdf all.pdf ne fonctionne pas non plus –

0

Je ne sais pas php ou cette bibliothèque Imagick, mais si vous appelez un programme externe est acceptable que je peux recommander le programme pdfjoin de fusionner des fichiers pdf. Il a une dépendance à pdflatex, donc si c'est quelque chose que vous avez l'intention de lancer sur un serveur, vous devrez peut-être installer du latex supplémentaire, mais le résultat final de pdfjoin est très bon, donc je pense que ça vaudra il.

1

CAM::PDF est une solution pure-Perl pour la manipulation de PDF de bas niveau comme ceci. Vous pouvez utiliser l'outil de ligne de commande appendpdf.pl ou le faire par programme comme ceci:

Utilisez CAM :: PDF; mon $ doc1 = CAM :: PDF-> nouveau ('fichier1.pdf'); mon $ doc2 = CAM :: PDF-> nouveau ('fichier2.pdf'); $ doc1-> appendPDF ($ doc2); $ doc1-> cleanoutput ('out.pdf');

Si vous pouvez comprendre comment faire en sorte qu'ImageMagick écrit sur une chaîne au lieu d'un fichier (je ne suis pas un expert ImageMagick ...), vous économisez des performances en conservant tout cela en Perl.

(Je suis l'auteur de CAM :: PDF, logiciel gratuit: GPL + Artistic dual-license).

1

réponse acceptée ne fonctionnait pas pour moi, en conséquence, il a toujours généré une page pdf (dernière image du constructeur), pour faire ce travail que je devais obtenir premier descripteur de fichier, comme celui-ci:

$images = array(
    'img1.png', 'img2.png' 
); 
$fp = fopen('combined.pdf', 'w'); 
$pdf = new Imagick($images); 
$pdf->resetiterator(); 
$pdf->setimageformat('pdf'); 
$pdf->writeimagesfile($fp); 
fclose($fp); 
Questions connexes