Pregunta

Actualmente puedo crear archivos PDF a partir de imágenes en Imagick con esta función

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

Y es posible acceder a varias páginas con imagick como esto

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

Pero, ¿es posible guardar dos objetos de imagen de dos páginas? (Ejemplo de lo que estoy pensando, no es posible como esto)

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

$im2->setImageFormat("pdf");
$im2->writeImage("file.pdf[1]");
¿Fue útil?

Solución

Sé que esto es largo vencida, pero este resultado ocurrió cuando yo estaba tratando de hacer lo mismo. Así es como se crea un archivo PDF de varias páginas en PHP y 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!');
}

Otros consejos

respuesta aceptada no funcionaba para mí, como resultado, siempre se genera una página PDF (última imagen del constructor), para hacer este trabajo que tenía que conseguir descriptor de archivo en primer lugar, de esta manera:

$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);

¿Es este trabajo?

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

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

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

No sé php o Imagick esta biblioteca, pero si llamar a un programa externo es aceptable que puedo recomendar el programa pdfjoin para combinar archivos PDF.

Se tiene una dependencia a pdflatex, así que si esto es algo que se va a ejecutar en el servidor puede que tenga que instalar cosas de látex extra, pero el resultado final de pdfjoin es muy buena, así que creo que valdrá la pena .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top