74 votos

Combinar archivos PDF con PHP

Mi concepto es - hay 10 archivos pdf en un sitio web. El usuario puede seleccionar algunos archivos pdf y seleccionar la fusión para crear un solo archivo pdf que contiene las páginas seleccionadas. ¿Cómo puedo hacer esto con PHP?

110voto

Chauhan Puntos 1315

A continuación se muestra el comando PHP PDF merge.

$fileArray= array("name1.pdf","name2.pdf","name3.pdf","name4.pdf");

$datadir = "save_path/";
$outputName = $datadir."merged.pdf";

$cmd = "gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$outputName ";
//Add each pdf file to the end of the command
foreach($fileArray as $file) {
    $cmd .= $file." ";
}
$result = shell_exec($cmd);

He olvidado el enlace donde lo encontré, pero funciona bien.

34voto

iim.hlk Puntos 1299

Sugiero PDFMerger de pdfmerger.codeplex.com , tan fácil como ::

include 'PDFMerger.php';

$pdf = new PDFMerger;

$pdf->addPDF('samplepdfs/one.pdf', '1, 3, 4')
    ->addPDF('samplepdfs/two.pdf', '1-2')
    ->addPDF('samplepdfs/three.pdf', 'all')
    ->merge('file', 'samplepdfs/TEST2.pdf'); // REPLACE 'file' WITH 'browser', 'download', 'string', or 'file' for output options

25voto

Christa Puntos 237

Ya he hecho esto antes. Tenía un pdf que generé con fpdf, y necesitaba añadirle una cantidad variable de PDFs.

Así que ya tenía un objeto fpdf y una página configurada (http://www.fpdf.org/) Y usé fpdi para importar los archivos (http://www.setasign.de/products/pdf-PHP-solutions/fpdi/) FDPI se añade extendiendo la clase PDF:

class PDF extends FPDI
{

} 

    $pdffile = "Filename.pdf";
    $pagecount = $pdf->setSourceFile($pdffile);  
    for($i=0; $i<$pagecount; $i++){
        $pdf->AddPage();  
        $tplidx = $pdf->importPage($i+1, '/MediaBox');
        $pdf->useTemplate($tplidx, 10, 10, 200); 
    }

Esto básicamente hace que cada pdf en una imagen para poner en su otro pdf. Funcionó increíblemente bien para lo que yo necesitaba.

11voto

Svetoslav Genov Puntos 31
$cmd = "gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=".$new." ".implode(" ", $files);
shell_exec($cmd);

Una versión simplificada de la respuesta de Chauhan

7voto

myokyawhtun Puntos 61

Los códigos que se utilizan en PDFMerger están obsoletos en la versión PHP5. He bifurcado y arreglado los códigos para que funcionen con PHP 5. Puedes cogerlos en mi cuenta de github https://github.com/myokyawhtun/PDFMerger

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X