Difference between revisions of "Crear un modelo de documento PDF"

From Dolibarr ERP CRM Wiki
Jump to navigation Jump to search
(Created page with '{{TemplateDocDesarrollo}} {{ToTranslate}} Ce document décrit comment créer son propre modèle de génération de document PDF afin de personnaliser ses documents (propales, fac...')
 
m (Import interlang links (links to translated versions of this page in other languages) from origin English page "Create_a_PDF_document_template".)
 
(39 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 +
<!-- BEGIN interlang links -->
 +
<!-- Do NOT edit this section
 +
    Links below are automatically managed by PolyglotBot
 +
    You can edit links on the English source page : Create_a_PDF_document_template -->
 +
[[en:Create_a_PDF_document_template]]
 +
[[fr:Créer_un_modèle_de_document_PDF]]
 +
[[zh:创建PDF模板]]
 +
<!-- END interlang links -->
 +
 
{{TemplateDocDesarrollo}}
 
{{TemplateDocDesarrollo}}
{{ToTranslate}}
 
Ce document décrit comment créer son propre modèle de génération de document PDF afin de personnaliser ses documents (propales, factures, etc...)
 
Il se base sur les propositions commerciales comme exemple mais s'applique à tout type de document.
 
 
 
 
= Trouver le modèle existant le plus proche =
 
Dans Dolibarr tester les modèles existants en activant tous les modèles existants dans la configuration du module puis en générant et visualisant un document brouillon pour chacun d'entre eux.
 
  
Parmi ceux existant, noter le modèle le mieux adapté aux besoins. Dans cet exemple, c'est le modèle bleu (correspondant au fichier pdf_propale_bleu.modules.php).
+
Este documento describe como crear su propio modelo de generación de documentos PDF para así personalizar sus documentos (presupuestos, facturas, etc.)
Rem: Pour info, tous les modèles de propales sont dans \includes\modules\propale si vous êtes sous Windows et /includes/modules/propale si vous êtes sous Unix.
+
Tomaremos como ejemplo los presupuestos, pero todo ello se aplica a cualquier tipo de documento.
  
= Créer le nouveau modèle =
+
Para documentos ODT, ver [[Crear un modelo de documento ODT]].
Par sécurité, on conservera les modèles d'origine. Pour l'exemple, on part du principe qu'on crée un nouveau module de proposition commercial qu'on nommera 'masocietebleu' et qui s'inspire du module 'bleu':
 
* copier-coller pdf_propale_bleu.modules.php
 
* renommer la copie en pdf_propale_masocietebleu.modules.php
 
* l'éditer et faire les modifs suivantes dans le code:
 
# Renommer 'Class pdf_propale_bleu { '    en 'Class pdf_propale_masocietebleu { '  (ligne 24)
 
# Renommer 'Function pdf_bleu($db=0)' en 'Function pdf_propale_masocietebleu($db=0)'  (ligne 26)
 
# Sauvegarder : le modèle 'masocietebleu' est disponible dans la liste des modèles de propales de Dolibarr
 
* Tester ce modèle (Voir A) avant d'aller plus loin...
 
  
= Personnaliser =
 
Personnaliser le modèle créé.
 
Toujours dans pdf_propale_masocietebleu.modules.php, chercher la fonction 'Function _pagehead(&$pdf, $fac)' (vers la ligne 306). C'est elle qui gère l'affichage de l'entête. 
 
  
 +
= 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.
  
== Librairie de création ==
+
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).
  
La librairie utilisée pour la création de documents en PDF se nomme FPDF et peut être trouvée dans htdocs/includes/fpdf/fpdf/fpdf.class.php. C'est également dans cette classe que l'on trouve les nombreuses méthodes utilisées pour générer les différents éléments des documents.
+
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.
  
Les modèles eux-même instancient la classe FPDF et utilisent ensuite ses méthodes, combinées avec les données d'une facture, d'une commande ou d'autres types de données.
+
= 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:
 +
# Renombrar 'Class pdf_propale_azur{ '    como 'Class pdf_propale_masocietebleu { '
 +
# Renombrar 'Function pdf_propale_azur($db=0)' como 'Function pdf_propale_masocietebleu($db=0)'
 +
# Cambiar nombre del modelo en línea: Original --> "$this->name = "azur";", Nueva --> $this->name = "masocietebleu";
 +
# 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:
 +
# En directorio /htdocs/core/modules/propale/doc poner la copia de la nueva plantilla (Dolibarr versión 3.9.2)
 +
# Ir al sistema Dolibarr-->Inicio-->Configuración-->Módulos-->Presupuestos-->Configuración del módulo Presupuestos
 +
# Activar nueva plantilla en sección: Modelos de documentos de presupuestos
 +
# Ir al sistema Dolibarr-->Comercial-->Listado de Presupuestos-->Seleccionar un presupuesto
 +
# En sección Documentos, seleccionar nueva plantilla
 +
# Presionar botón: Generar
 +
# 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
 +
# Desactivar en sistema Dolibarr-->Inicio-->Configuración-->Módulos-->Presupuestos-->Configuración del módulo Presupuestos
 +
# Mover archivo de plantilla desde directorio /htdocs/core/modules/propale/doc
 +
# Eliminar registro creado en tabla llx_document_model
  
On retrouve généralement les appels suivants dans les scripts de création de documents:
+
= Personalizar =
* $pdf->SetFont() - ''Désigne la fonte à utiliser pour le texte qui suivra''
+
Personalizar el modelo creado.
* $pdf->SetXY() - ''Désigne le point de départ pour dessiner le prochain texte en coordonnées X,Y qui sont exprimées en millimètres de la page''
+
Siempre en pdf_propale_masocietebleu.modules.php, buscar la función 'Function _pagehead(&$pdf, $fac)'. Ella gestiona la visualización de la cabecera.
* $pdf->MultiCell() - ''Dessine une boîte pouvant contenir du texte, et dont on doit d'abord donner la largeur et la hauteur - très utilisée''
 
* $pdf->GetY() - ''Renvoie la position courante en Y''
 
* $pdf->SetDrawColor() - ''Désigne la couleur à utiliser pour le prochain texte à écrire - généralement noir (0,0,0) ou blanc (255,255,255)''
 
* $pdf->Rect() - ''Dessine un rectangle dont le coin supérieur gauche est au point indiqué par les deux premiers paramètres et le coin inférieur droit utilise les deux derniers paramètres en mode relatif aux deux premiers''
 
  
 +
== 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.
  
== Structure des scripts ==
+
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.
  
Les scripts de génération des documents PDF, au moment du développement de la version 2.2, disposent des méthodes suivantes (prenant pour exemple le modèle "crabe") au sein de la classe du nom du modèle:
+
Normalmente encontraremos las siguientes llamadas en los scripts de creación de documentos:
* pdf_crabe() - ''Constructeur de l'objet pdf''
+
* $pdf->SetFont() - ''Designa la fuente utilizada para el texto que continua''
* write_pdf_file() - ''Méthode générale pour la génération du fichier. Cette méthode appelle toute les suivantes après avoir initialisé quelques variables''
+
* $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''
* _pagehead() - ''Méthode de dessin de l'en-tête du document, incluant généralement le logo, le titre du document (et la date) ainsi que les cadres de l'émetteur et du destinataire du document''
+
* $pdf->MultiCell() - ''Dibuja una caja que puede contener texto, y que primero debe dar el ancho y altura - muy utilizado''
* _tableau() - ''Méthode de dessin du tableau de détails (produits, services, etc)''
+
* $pdf->GetY() - ''Devuelve la posición actual en Y''
* _tableau_info() - ''Méthode de dessin du tableau reprenant une liste d'informations sur la facture''
+
* $pdf->SetDrawColor() - ''Designa el color a utilizar para el siguiente texto a ser escrito - generalmente negro (0,0,0) o blanco (255,255,255)''
* _tableau_tot() - ''Méthode de dessin du tableau des totaux''
+
* $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''
* _tableau_versement() - ''Méthode de dessin du tableau des règles de versement''
 
* _pagefoot() - ''Méthode de dessin du pied de page''
 
  
   
+
== Estructura de los scripts ==
== Insertion d'un logo ==
+
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:
* Chercher la séquence suivante:
+
* pdf_crabe() - ''Constructor del objeto pdf''
$pdf->SetXY(10,5);
+
* 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''
if (defined("FAC_PDF_INTITULE"))
+
* _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)''
    $pdf->SetTextColor(0,0,200);
+
* _tableau_info() - ''Método de dibujo de la tabla con una lista de informaciones de la factura''
    $pdf->SetFont('Arial','B',14);
+
* _tableau_tot() - ''Método de dibujo de la tabla de los totales''
    $pdf->MultiCell(60, 8, FAC_PDF_INTITULE, 0, 'L');
+
* _tableau_versement() - ''Método de dibujo de la tabla de las forma de pago''
* Ajouter l'instruction:
+
* _pagefoot() - ''Método de dibujo del pié de página''
    $pdf->Image('\www\htdocs\dolibarr\document\societe\logo.jpg', 10, 5,60.00);
 
* Mettre en commentaire l'instruction d'affichage de la variable FAC_PDF_INTITULE
 
  
== Modification des constantes affichées ==
+
== Ejemplo ==
Principales fonctions utilisées
+
=== Inserción de un logo ===
    $pdf->setX(float a); fixe la position x courante
+
* Añadir la instrucción:
    $pdf->setY(float b); fixe la position y courante
+
<source lang="php">
    $pdf->setXY(float a,float b); fixe les positions x et y courantes
+
$pdf->Image('\www\htdocs\dolibarr\document\societe\logo.jpg', 10, 5,60.00);
    (rappel: l'origine est le coin supérieur gauche)
+
</source>
    $pdf->SetTextColor(0,0,200); fixe la couleur du texte
 
    $pdf->SetFont('Arial','B',14); fixe la police, le type ( 'B' pour gras, 'I' pour italique, '' pour normal,...)
 
    $pdf->MultiCell(60, 8, FAC_PDF_INTITULE, 0, 'L'); imprime la variable  FAC_PDF_INTITULE avec saut de ligne
 
(info: Il semble que Dolibarr gère un certain nombre de constantes dans Accueil => Configuration => System => Constantes. Mais ça ne fonctionne pas sur ma config ...).
 
  
== Pour plus d'infos ==
+
=== Inserción de una firma u otros en pié de página de la factura ===
http://www.fpdf.org/?go=script&id=2 et aller sur 'accueil'
+
* 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)
 +
<source lang="php">
 +
$pdf->Image('http://localhost/dolibarr/doc/images/signature.jpg',120,250,74);
 +
</source>
 +
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.
  
== Le résultat ==
+
=== Inserción de textos ===
Réalisation ozit: http://www.adytek.com/PR040123.pdf
+
Principales funciones utilizadas
 +
<source lang="php">
 +
$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
 +
</source>
 +
Recuerde: el origen es la esquina superior izquierda
  
= Choisir un modèle par défaut dans Dolibarr =
+
== Para más información ==
Dans Accueil => Configuration => proposition commerciale:
+
http://www.fpdf.org/?lang=es
* on affiche les modèles,
 
* on indique ceux qui doivent être actifs,
 
* on précise le modèle proposé par défaut.
 
  
= Merci =
+
= Elegir un modelo por defecto en Dolibarr =
Merci à David, Florent et surtout ozit pour leur aide.
+
En  Inicio => Configuración => Módulos => :
 +
* indicamos que modelos deben de estar activos,
 +
* precisaremos el modelo propuesto por defecto.

Latest revision as of 13:20, 23 July 2019


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.