Usar PDFTK en Laravel

PDFTK Server es una herramienta de linea de comandos para trabajar con documentos PDF y vamos a integrarlo con Laravel

Usar PDFTK en Laravel

Entre los proyectos que tengo que realizar, existe uno donde debemos ofrecer formatos de empresas rellenado con la información del interesado, por ejemplo Nombre, Apellidos, Notas etc. Nos dieron los formatos PDF y me di cuenta que era un formulario PDF, es decir es capaz de editar en el mismo pdf y guardarlo, esto nos ayudaria muchisimo para no rehacer los Formatos, así que decidi buscar una tecnologia que me ayudara a rellenarlos.

Así que encontre pdftk server

PDFTK Server es una herramienta de linea de comandos para trabajar con documentos PDF.

Entre sus poderosas caracteristicas puede realizar lo siguiente:

  • Unir o Dividir PDF's

  • Llenar PDF

  • Aplicar un fondo al PDF

  • Adjuntar Archivos al PDF

  • Dividir un PDF en varios documentos

  • y mucho más.

Una vez aclarado que es PDFTK y como nos ayudara vamos a integrarlo.

INTEGRAR Y USAR PDFTK

Instalar PDFTK Server

1.- Vamos a instalar PDFTK Server descargado del Sitio Oficial.

a.- Dependiendo del sistema operativo podria cambiar el modo de instalación, en mi caso tengo Windows asi solo hay que descarga el paquete e instalarlo.

2.- Una vez instalado abrimos la consola y ejecutamos el siguiente comando.

pdftk --version

si todo salio bien nos mostrara lo siguiente:

Integrar PDFTK con Laravel

1.- Para integrarlo con Laravel, lo primero que tenemos que hacer es instalar por medio de composer el siguiente paquete php-pdftk.

composer require mikehaertl/php-pdftk

2.- A partir de ahora podemos usarlo en cualquier parte de laravel, sin embargo yo cree un trait para reutilizar codigo, cree un archivo en app\Http\Traits\UtilPDF.php con el siguiente codigo.

<?php
namespace App\Http\Traits;

use mikehaertl\pdftk\Pdf;

trait UtilPDF
{
  
}

3.- Para obtener información sobre los campos editables del Formulario PDF, inclui el siguiente metodo, que recibi una variable $url y me devuelve una lista de los campos editables.

  public function GetPDFFields($url){
        // Get form data fields
        $pdf = new Pdf($url);
        $data = $pdf->getDataFields();
        return $data;
    }

Solo necesito escribir lo siguiente en donde valla a usar el trait

$this->GetPDFFields('base.pdf');

En este caso con un formulario me devolvio lo siguiente:

{
    "0": {
        "FieldType": "Text",
        "FieldName": "paciente_nombre",
        "FieldFlags": "12582912",
        "FieldValue": "",
        "FieldJustification": "Left"
    },
    "1": {
        "FieldType": "Text",
        "FieldName": "paciente_edad",
        "FieldFlags": "12582912",
        "FieldValue": "",
        "FieldJustification": "Center"
    },

Lo que me interesa es el campo FieldName que es el nombre del campo al que debo hacer referencia en el llenado.

4.- Vamos a crear otro metodo para realizar el llenado del Formulario

public function FillPDF($url,$data){
        $pdf = new Pdf($url);
        $pdf->fillForm($data) 
            ->needAppearances() //necesario para UTF-8
            ->saveAs('filled.pdf');
    }

Este metodo recibe la url del documento base y tambien la data que sera necesario para llenar el formulario.

Solo necesito escribir lo siguiente en donde valla a usar el trait, para poder hacer el llenado

$this->FillPDF('base.pdf',[ 'paciente_nombre'=>'Nombre', 'paciente_edad' => '38',]);

Con estos 2 metodos por el momento nos ayudan a hacer la lectura de los campos del formulario y tambien el llenado, PDFTK puede hacer mucho mas pero para lo que necesito es suficiente.

Bueno esto es todo en este post, donde les doy una pequeña ayuda para la implementación, si necesitan algun metodo o ayuda, pueden dejarme un comentario y en cuanto lo lea les estaré ayudando. 

Deja un comentario


0 comentarios