Elian Santiago
24 October, 2024
Generar archivos PDF puede ser complicado, especialmente cuando el cliente proporciona documentos pre-renderizados con formularios rellenables. Aunque crear PDFs desde vistas Blade es más fácil y ofrece más control y flexibilidad, en ocasiones nos vemos obligados a editar PDFs existentes.
En este tutorial, te guiaremos paso a paso sobre cómo editar PDFs existentes y rellenar campos de formularios de manera programada. Una herramienta comúnmente utilizada es FPDF, la cual requiere especificar coordenadas exactas para posicionar el texto de manera precisa dentro del documento, lo que puede llevar mucho tiempo y no es la tarea más entretenida.
Aquí es donde PDF Toolkit se convierte en una solución eficaz. Esta herramienta de línea de comandos ofrece una amplia gama de funcionalidades, permitiendo no solo la manipulación de formularios PDF creados con software como Adobe Acrobat Reader, sino también la automatización del proceso de llenado de datos. Al diseñar formularios, es posible asignar identificadores a los campos, lo que simplifica la integración y el manejo de la información dentro de nuestros sistemas.
En esta guía, te mostraremos cómo integrar PDF Toolkit en un backend construido con Laravel, aunque también se puede usar fácilmente en una aplicación simple de PHP.
Acceso al servidor: Si estás trabajando en un entorno de producción, asegúrate de tener acceso SSH y los permisos adecuados para instalar paquetes del sistema.
Conéctate a tu servidor vía SSH e instala PDF Toolkit:
sudo apt update && sudo apt install pdftk
Iniciará la descarga y posterior instalación. Si te aparece una pantalla similar a esta:
No te preocupes, es una actualización del kernel. Dale "ok" a todo lo que aparezca, y finalizará la instalación del paquete.
Posteriormente, verifica que se haya instalado correctamente con el siguiente comando:
pdftk --version
Si ves un mensaje como este:
pdftk port to java 3.2.2 a Handy Tool for Manipulating PDF Documents Copyright (c) 2017-2018 Marc Vinyals - https://gitlab.com/pdftk-java/pdftk This is free software; see the source code for copying conditions.
¡Felicidades! El paquete se ha instalado correctamente.
El proceso es similar para tu entorno de desarrollo local. A continuación te muestro cómo instalar PDF Toolkit según tu sistema operativo:
brew install pdftk-java
sudo apt update && sudo apt install pdftk
Verifica la instalación:
pdftk --version
Para interactuar con PDF Toolkit desde Laravel, usaremos la librería mikehaertl/php-pdftk. Instálala con Composer:
composer require mikehaertl/php-pdftk
Proporciono un ejemplo básico de cómo usar esta librería en un controlador de Laravel para rellenar un PDF con datos de un formulario:
use mikehaertl\pdftk\Pdf; class PdfController extends Controller { public function generatePdf() { $generatedFilePath = 'route/to/save/fileGenerated.pdf'; $pdfTemplatePath = 'route/to/fileTemplate.pdf'; $pdf = new Pdf($pdfTemplateRoute); $pdf->fillForm([ 'field1' => 'value1', 'field2' => 'value2' ])->saveAs($generatedFilePath); return response()->download($generatedFilePath); } }
Nota: Debes usar el mismo nombre de los campos que se encuentran en el formulario PDF para rellenar la información correctamente. De lo contrario, el paquete no sabrá cómo identificar el campo.
Si encuentras el siguiente error:
pdfkit' is not recognized as an internal or external command, operable program or batch file.
Es probable que necesites especificar la ruta donde está instalado PDF Toolkit en tu sistema. Aquí te muestro cómo hacerlo dependiendo de tu sistema operativo.
use mikehaertl\pdftk\Pdf; class PdfController extends Controller { public function generatePdf() { $generatedFilePath = 'path/to/generated_file.pdf'; $pdfTemplatePath = 'path/to/pdf_template.pdf'; $pdfOptions = [ 'command' => '/opt/homebrew/opt/pdftk-java/bin/pdftk', 'useExec' => true, ]; $pdf = new Pdf($pdfTemplatePath, $pdfOptions); $pdf->fillForm([ 'field1' => 'value1', 'field2' => 'value2' ])->saveAs($generatedFilePath); return response()->download($generatedFilePath); } }
use mikehaertl\pdftk\Pdf; class PdfController extends Controller { public function generatePdf() { $generatedFilePath = 'path/to/generated_file.pdf'; $pdfTemplatePath = 'path/to/pdf_template.pdf'; $pdfOptions = [ 'command' => '/usr/bin/pdftk', // Linux 'useExec' => true, ]; $pdf = new Pdf($pdfTemplatePath, $pdfOptions); $pdf->fillForm([ 'field1' => 'value1', 'field2' => 'value2' ])->saveAs($generatedFilePath); return response()->download($generatedFilePath); } }
PDF Toolkit es una herramienta poderosa para manipular archivos PDF existentes y automatizar el proceso de llenado de formularios en Laravel. En este tutorial, aprendiste cómo instalar PDF Toolkit tanto en un entorno de producción como en desarrollo, además de cómo integrarlo en Laravel y solucionar errores comunes.