Cómo combinar dos mitades de dos pdf en uno usando mpdf

He creado dos archivos pdf usando dompdf, pero cada archivo pdf sólo tiene medio llenado. Logré unir estos archivos pdfs en uno solo usando el siguiente código:

for ($j = 1; $j <= 2; $j++) {
        $source_file = $_SERVER['DOCUMENT_ROOT'] . "/boletocaixa/boleto_00000000000000" . $j . ".pdf";
        $pagecount = $mpdf->SetSourceFile($source_file);
        for ($i = 1; $i <= $pagecount; $i++) {
            $import_page = $mpdf->ImportPage($i);
            $mpdf->AddPage();
            $mpdf->useTemplate($import_page);
        }
    }

    $mpdf->Output();

El resultado del código anterior es un solo archivo pdf con 2 páginas, pero como he mencionado anteriormente, las páginas de este último archivo sólo tiene la mitad llena, es decir, tenía la secuencia de la primera página llenada y luego un espacio en blanco, y lo mismo ocurre en la segunda página.

Mi objetivo es crear un solo archivo pdf usando las mitades llenas de ambos archivos pdf. ¿Alguien tiene alguna sugerencia sobre cómo hacer eso?

Pregunta hecha hace 3 años, 5 meses, 2 días - Por devgeek


2 Respuestas:

  • Para combinar las mitades llenas de los dos archivos PDF en uno solo, puedes modificar ligeramente tu código de la siguiente manera:

    • En lugar de importar todas las páginas de cada archivo PDF y agregarlas tal como lo estás haciendo actualmente, importa y agrega solo la mitad adecuada de las páginas.
    • Puedes determinar la mitad de las páginas de cada PDF en función del número total de páginas. Por ejemplo, si cada PDF tiene 2 páginas, puedes importar y agregar solo la primera página de cada uno.

    Aquí te dejo un ejemplo de cómo podrías ajustar el código para lograrlo:

    php
    $mpdf = new \Mpdf\Mpdf();
    
    for ($j = 1; $j <= 2; $j++) {
        $source_file = $_SERVER['DOCUMENT_ROOT'] . "/boletocaixa/boleto_00000000000000" . $j . ".pdf";
        $pagecount = $mpdf->SetSourceFile($source_file);
        $half_page = ceil($pagecount / 2); // Encuentra la mitad de las páginas
    
        $import_page = $mpdf->ImportPage($j <= 1 ? 1 : $half_page + 1); // Si es el primer archivo, importa la primera página; si es el segundo, importa la mitad + 1
        $mpdf->AddPage();
        $mpdf->useTemplate($import_page);
    }
    
    $mpdf->Output();
    

    Con este ajuste, el código importará la primera página del primer archivo y la página correspondiente a la mitad + 1 del segundo archivo, lo que debería resultar en un archivo PDF combinado con las mitades llenas de ambos archivos originales.

    ¡Espero que esta solución te haya sido útil! ¡Déjame saber si tienes alguna otra pregunta o si necesitas más ayuda!

    Respondida el Dec 17, 2020 a las 20:19 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Para combinar dos mitades de dos archivos PDF en un solo archivo con mPDF, puedes utilizar el siguiente código:

    php
    $mpdf = new \Mpdf\Mpdf(['tempDir' => __DIR__]);
    
    // Cargar el primer archivo PDF
    $source_file1 = $_SERVER['DOCUMENT_ROOT'] . "/boletocaixa/boleto_000000000000001.pdf";
    $pagecount1 = $mpdf->SetSourceFile($source_file1);
    
    // Extraer la primera mitad de las páginas del primer archivo PDF
    for ($i = 1; $i <= $pagecount1 / 2; $i++) {
        $import_page = $mpdf->ImportPage($i);
        $mpdf->AddPage();
        $mpdf->useTemplate($import_page);
    }
    
    // Cargar el segundo archivo PDF
    $source_file2 = $_SERVER['DOCUMENT_ROOT'] . "/boletocaixa/boleto_000000000000002.pdf";
    $pagecount2 = $mpdf->SetSourceFile($source_file2);
    
    // Extraer la segunda mitad de las páginas del segundo archivo PDF
    for ($i = $pagecount2 / 2 + 1; $i <= $pagecount2; $i++) {
        $import_page = $mpdf->ImportPage($i);
        $mpdf->AddPage();
        $mpdf->useTemplate($import_page);
    }
    
    // Guardar el archivo PDF combinado
    $mpdf->Output();
    

    Este código carga los dos archivos PDF, extrae la primera mitad de las páginas del primer archivo y la segunda mitad de las páginas del segundo archivo, y luego las combina en un solo archivo PDF.

    Explicación del código:

    El método SetSourceFile() se utiliza para cargar un archivo PDF como fuente. El método ImportPage() se utiliza para importar una página de un archivo PDF fuente. El método AddPage() se utiliza para añadir una nueva página al documento PDF. El método useTemplate() se utiliza para utilizar una página importada como plantilla para la nueva página. El método Output() se utiliza para guardar el documento PDF combinado.

    Nota:

    Asegúrate de que los archivos PDF que estás intentando combinar tienen el mismo tamaño y orientación. * También puedes ajustar el número de páginas que se importan de cada archivo PDF según sea necesario para combinar las mitades correctas.

    Respondida el Dec 17, 2020 a las 20:32 - por Gemini

    Votos positivos: 0 | Votos negativos: 0