Unir o combinar archivos PDF con PHP y libmergepdf

Los documentos PDF son parte importante en el mundo digital. Gracias a ellos podemos tener acceso a la información en un formato unificado y entendible por la mayoría de sistemas operativos.

Hoy veremos cómo unir muchos documentos PDF con PHP. Es decir, podemos unir 2 o más PDF’s con PHP. Esta operación también se conoce como merge o como combinar múltiples PDF.

Combinar múltiples documentos PDF con PHP y libmergepdf
Combinar múltiples documentos PDF con PHP y libmergepdf

Aparte de ver cómo combinar o unir PDFs con PHP veremos 3 maneras de mostrar el documento final combinado: mostrar en el navegador, forzar su descarga o escribirlo en un nuevo archivo PDF.

Descargar código o ejemplo

El código fuente está en mi Github: Ejemplo de cómo combinar PDF’s con PHP y libmergepdf.

Si quieres descargar el ejemplo haz click aquí.

La librería para combinar PDF con PHP

El paquete o librería que usaremos para unir algunos documentos PDF con PHP será la llamada libmergepdf; la cual tiene un uso muy sencillo. Me parece que internamente utiliza FPDI pero eso es otra historia.

Puedes visitar el repositorio oficial aquí.

Requisitos y recomendaciones

Lo que tenemos que hacer primero es instalar Composer, el gestor de dependencias de PHP. Te animo a que lo instales y configures, pues ahora todo buen programador de PHP gestiona sus dependencias con composer.

Antes de que te quejes por composer, lee por qué usarlo.

Por cierto, recuerda instalar PHP.

Opcional: crear proyecto con composer

Si únicamente estás probando esto y no tienes un proyecto ya iniciado, entonces navega hasta el directorio en donde vas a crear tu proyecto (recomiendo una carpeta nueva) y ejecuta:

composer init

Rellena los datos que piden. En mi caso queda así:

Crear proyecto con Composer
Crear proyecto con Composer

Recuerda que esto es opcional.

Instalar libmergepdf

Nota: si ya tienes un proyecto iniciado, mira cómo adaptar tu proyecto a composer.

En tu proyecto en donde esté ubicado tu archivo composer.json  (es decir, en tu proyecto) ejecuta lo siguiente para instalar la librería:

composer require iio/libmergepdf:^4.0

Después de eso espera a que se instale. Debe verse parecido a lo siguiente:

Instalar librería para combinar PDF con PHP - libmergepdf
Instalar librería para combinar PDF con PHP – libmergepdf

Ahora sí ya podemos comenzar.

Combinar o concatenar múltiples PDF’s con PHP

Debemos requerir el autoload de composer y luego de ello definir que usaremos el Merger, así:

Los PDF que voy a unir los pondré en un arreglo para efectos de simplicidad. Dichos documentos existen en la misma carpeta en donde está mi index.php.

La salida tiene los datos del documento ya creado. Podemos escribirla en un documento PDF nuevo, mandarla al navegador o mandarla y forzar la descarga del mismo.

Sigue leyendo para ver las 3 maneras de mostrarlo o enviarlo al usuario final.

Combinar PDF y mostrarlo en el navegador

Para ello solamente se necesitan enviar algunos encabezados HTTP al navegador para que el mismo entienda que debe intentar mostrar el PDF con su visor.

Después de enviar los encabezados imprimimos lo que devolvió el combinador. Es importante notar que después de eso no debemos hacer ningún echo ni printf, es decir, no imprimir nada, porque podría “contaminar” a la salida.

Mostrar PDF en navegador
Mostrar PDF en navegador

Recuerda que sí puedes hacer otras cosas pero no algo que imprima algo, también ten cuidado con los errores porque a veces los mismos pueden contaminar la salida.

Combinar PDF con PHP y forzar descarga

Con el método anterior, el usuario ve el documento PDF en el visor del navegador y opcionalmente puede descargarlo, ahora veamos cómo forzar a que se descargue.

Para ello agregamos unos encabezados extra e igualmente imprimimos la salida. Queda así:

De esa manera, cuando el usuario visite la página se descargará el archivo como en la captura:

Descargando PDF combinado con PHP
Descargando PDF combinado con PHP

Escribir PDF combinado en nuevo documento

Para terminar este tutorial veremos cómo escribir la salida en un nuevo documento, es decir, crear un nuevo PDF a partir de los demás.

En este caso usaremos file_put_contents (pásate por este tutorial para aprender más) y queda así:

No es obligatorio que imprimas el mensaje, yo lo puse para informar. En mi caso se ve así:

Guardar PDF combinado con PHP
Guardar PDF combinado con PHP

Conclusiones

De esta manera, a partir de una lista de documentos, podemos crear uno nuevo. En los ejemplos utilicé un foreach pero tú puedes adaptarlo como quieras.

Lee más sobre PHP aquí.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

1 comentario en “Unir o combinar archivos PDF con PHP y libmergepdf”

  1. Pingback: Generar y guardar imágenes de códigos de barras con PHP - Parzibyte's blog

Dejar un comentario