Crear un modelo de documento PDF


Este documento describe como crear su propio modelo de generación de documentos PDF para así personalizar sus documentos (presupuestos, facturas, etc.) Tomaremos como ejemplo los presupuestos, pero todo ello se aplica a cualquier tipo de documento.

Para documentos ODT, ver Crear un modelo de documento ODT.


Encontrar el modelo existente más cercano

En Dolibarr probar los modelos existentes activando todos los modelos existentes en la configuración del módulo y, a continuación, generar y visualizar un documento borrador para cada uno de ellos.

Entre los disponibles, elegir el modelo que mejor se adapte a sus necesidades. En este ejemplo, el modelo azur (correspondente al fichero pdf_propale_azur.modules.php).

Para su información, todos los modelos se encuentran en htdocs\core\modules si trabaja bajo Windows y htdocs/core/modules si trabaja bajo Unix.

Crear el nuevo modelo

Por seguridad, hay que conservar los modelos de origen. Para el ejemplo, comenzaremos creando un nuevo modelo de presupuesto al que llamaremos 'masocietebleu' y que se inspira en el modelo 'azur':

  • Copiar-pegar pdf_propale_azur.modules.php
  • Renombrar la copia como pdf_propale_masocietebleu.modules.php
  • Editarla realizando las siguientes modificaciones en el código:
  1. Renombrar 'Class pdf_propale_azur{ ' como 'Class pdf_propale_masocietebleu { '
  2. Renombrar 'Function pdf_propale_azur($db=0)' como 'Function pdf_propale_masocietebleu($db=0)'
  3. Cambiar nombre del modelo en línea: Original --> "$this->name = "azur";", Nueva --> $this->name = "masocietebleu";
  4. Guardar : el modelo 'masocietebleu' se encuentra disponible en la lista de modelos de presupuestos de Dolibarr
  • Probar este modelo, antes de continuar, para ello seguir los siguientes pasos:
  1. En directorio /htdocs/core/modules/propale/doc poner la copia de la nueva plantilla (Dolibarr versión 3.9.2)
  2. Ir al sistema Dolibarr-->Inicio-->Configuración-->Módulos-->Presupuestos-->Configuración del módulo Presupuestos
  3. Activar nueva plantilla en sección: Modelos de documentos de presupuestos
  4. Ir al sistema Dolibarr-->Comercial-->Listado de Presupuestos-->Seleccionar un presupuesto
  5. En sección Documentos, seleccionar nueva plantilla
  6. Presionar botón: Generar
  7. Verificar que se genera archivo PDF y abrirlo, se espera que se abra con éxito sin errores
  • Borrar indicios de prueba de plantilla después de desactivar
  1. Desactivar en sistema Dolibarr-->Inicio-->Configuración-->Módulos-->Presupuestos-->Configuración del módulo Presupuestos
  2. Mover archivo de plantilla desde directorio /htdocs/core/modules/propale/doc
  3. Eliminar registro creado en tabla llx_document_model

Personalizar

Personalizar el modelo creado. Siempre en pdf_propale_masocietebleu.modules.php, buscar la función 'Function _pagehead(&$pdf, $fac)'. Ella gestiona la visualización de la cabecera.

Librería de creación PDF

La librería utilizada para la creación de documentos PDF se llama FPDF y se puede encontrar en htdocs/includes/tcpdf/tcpdf.class.php. En esta clase también encontraremos muchos métodos utilizados para generar los diferentes elementos de los documentos.

Los modelos instancian ellos mismos la clase FPDF y utilizan sus métodos, combinados con los datos de una factura, pedido u otro tipo de datos.

Normalmente encontraremos las siguientes llamadas en los scripts de creación de documentos:

  • $pdf->SetFont() - Designa la fuente utilizada para el texto que continua
  • $pdf->SetXY() - Designa el punto de partida para señalar el siguiente texto en coordenadas X,Y que se expresan en milímetros de la página
  • $pdf->MultiCell() - Dibuja una caja que puede contener texto, y que primero debe dar el ancho y altura - muy utilizado
  • $pdf->GetY() - Devuelve la posición actual en Y
  • $pdf->SetDrawColor() - Designa el color a utilizar para el siguiente texto a ser escrito - generalmente negro (0,0,0) o blanco (255,255,255)
  • $pdf->Rect() - Dibuja un rectángulo cuya esquina superior izquierda se encuentra en el punto indicado por los dos primeros parámetros y la esquina inferior derecha por los dos últimos parámetros en modo relativo a los dos primeros

Estructura de los scripts

Los scripts de generación de documentos PDF, durante el desarrollo de la versión 2.2, disponen de los siguientes métodos (tomando como ejemplo el modelo "crabe") en el seno de la clase del nombre del modelo:

  • pdf_crabe() - Constructor del objeto pdf
  • write_pdf_file() - Método general para la generación del archivo. Este método llama a todos los siguientes después de inicializar algunas variables
  • _pagehead() - Método de dibujo de la cabecera del documento, incluyendo generalmente el logotipo, el título del documento (y la fecha) así como los marcos de datos del emisor y el destinatario del documento
  • _tableau() - Método de dibujo de la tabla de datos (productos, servicios, etc)
  • _tableau_info() - Método de dibujo de la tabla con una lista de informaciones de la factura
  • _tableau_tot() - Método de dibujo de la tabla de los totales
  • _tableau_versement() - Método de dibujo de la tabla de las forma de pago
  • _pagefoot() - Método de dibujo del pié de página

Ejemplo

  • Añadir la instrucción:
$pdf->Image('\www\htdocs\dolibarr\document\societe\logo.jpg', 10, 5,60.00);

Inserción de una firma u otros en pié de página de la factura

  • abrir el modelo a modificar crabe u oursin (en htdocs/core/modules/facture/)
  • insertar (por mi parte, justo antes de la línea 618 // Show payment mode CHQ)
$pdf->Image('http://localhost/dolibarr/doc/images/signature.jpg',120,250,74);

la imagen (largo 74mm) aparece en la columna de la derecha justo antes del pie de página.

  • copiar la imagen en el directorio. Parece ser que una imagen png con transparencias trae problemas.
  • generar el pdf, la firma aparece.

Inserción de textos

Principales funciones utilizadas

$pdf->setX(float a); // establece la posición actual x
$pdf->setY(float b); // establece la posición actual y
$pdf->setXY(float a,float b); // establece las posición actual x e y
$pdf->SetTextColor(0,0,200); // establece el color del texto
$pdf->SetFont('Arial','B',14); // establece la fuente, le tipo ( 'B' para negrita, 'I' para itálica, '' para normal,...)
$pdf->MultiCell(60, 8, 'My text', 0, 'L'); // imprime 'My text' con salto de línea

Recuerde: el origen es la esquina superior izquierda

Para más información

http://www.fpdf.org/?lang=es

Elegir un modelo por defecto en Dolibarr

En Inicio => Configuración => Módulos => :

  • indicamos que modelos deben de estar activos,
  • precisaremos el modelo propuesto por defecto.