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
 * renobrar la copia como pdf_propale_masocietebleu.modules.php
 * editarla realizando las siguientes modificicaciones 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) Guardar : el modelo 'masocietebleu' se encuentra disponible en la lista de modelos de presupuestos de Dolibarr
 * Testear este modelo (ver A) antes de ir mas lejos...

= 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

Inserción de un logo

 * Añadir la instrucción:

Inserción de una firma u otros en pié de página de la factura
la imagen (largo 74mm) aparece en la columna de la derecha justo antes del pie de página.
 * 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)
 * 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 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.