Développer un modèle d'impression

Ekylibre utilise le système JasperReports comme moteur d'impression. Ce système permet de créer ses propres modèles d'impression via son éditeur.

iReport

Télécharger iReport v 5.6 depuis le site community

Dézipper le fichier dans votre dossier home et lancer iReport-5.6.0 en cliquant sur le fichier 'bin/ireport'

NOTE : Tous les modèles de référence sont stockés dans le répertoire config/locales/XXX/reporting.

Pour la langue française, ils sont visibles sur Github

Le nom de chaque rapport doit forcement être listé dans la nomenclature des types de documents

Si ce n'est pas le cas, il faut rajouter le document en nomenclature cf. writing_nomenclatures

Les documents personnalisés sont stockés dans un dépôt privé dans le sous dossier templates.

La convention de nommage des documents personnalisé est <nom du modele>-<nom de la déclinaison>.jrxml

Les sources de données

La conception des rapports

L'intégration d'images

Dans Ekylibre, il y a deux façon d'intégrer les images dans les rapports.

Image externe (via un encodage en Base64)

Attention, si votre image dépasse 65 Ko, l'image ne s'affichera pas et vous aurez un message d'erreur. dans ce cas, il faut la convertir au format JPEG, diminuez sa résolution (200*200) et sa qualité.

  1. Encoder votre image à l'aide de l'outil en ligne : http://www.base64-image.de
  2. Créer une variable $V{img} de type String avec comme expression la valeur encodée de votre image
  3. Ajouter une image à partir de la palette
  4. Paramétrer votre image avec :
    • Image expression = new ByteArrayInputStream(new org.apache.commons.codec.binary.Base64().decodeBase64($V{img}.getBytes(“UTF-8”)))
    • Type = java.lang.String
    • Evaluation Time = Report

Image en tant que donnée de l'application (via un chemin)

  1. Vérifier la présence d'un champ contenant l'URL de votre image $F{img} de type String
  2. Ajouter une image à partir de la palette
  3. Paramétrer votre image avec :
    • Image expression = $F{img}
    • Type = java.lang.String
    • Evaluation Time = Now

Le test et la mise en production des rapports

Pré-requis

Avoir à jour :

- config/locales/fra/reporting

- db/first-runs/nom_client/templates/

Étapes

  • Avoir les données dans la xml
  • Les afficher dans le rapport
  • Faire la mise en page

Faire la source de données (Datasource)

- Avec Ekylibre, on utilise une source de données xml pour ireport - Faire un mockup du rapport (avec le client éventuellement) pour identifier les informations nécessaires - Modifier la vue show du contrôleur : ekylibre/app/controller/bakend/… Pour mettre à jour le xml

  • Ligne respond to pour les différents formats
  • Aller voir le modèle correspondant ekylibre/app/models : permet de voir toutes les méthodes qui peuvent être appelées.
  • Paramètres pour ajouter les données:
respond_with(@objet, methods: //nom_methode//
                     include: {//réflexions en cascade//}
            )
                     

/!\ Attention enlever les “?” à la fin des méthodes appelées dans le contrôleur /!\

  • Ajouter .xml dans l'url de la vue pour tester la récupération des données du contrôleur
  • Enregistrer le fichier xml dans db/datasources/nom.xml

Faire un rapport (ou état)

Pré-requis
  • Avoir la datasource
  • Avoir un modèle existant pour repartir de celui-ci
  • Faire la migration : Ajouter dans la nomenclature le nom du rapport si il n'existe pas
Créer un nouveau rapport à partir de la copie d'un ancien modèle
  • Report datasource–> new
  • Choisir le nom et le chemin
  • Choisir le format XML file datasource
  • Cocher “Use the report XPath expression when filling the report”
  • Date pattern : yyyy-MM-dd'T'HH:mm:ss
  • Number pattern : ###0.00

Test –> OK –> save

Puis :

  • Fichier > open charger le modèle dans config/locales/fra/reporting (fichier qui a été dupliqué au départ)
Installation des polices
  1. Installer les polices : copier celle de ownCloud/Communication/Graphisme/Polices dans le répertoire home/mon_nom/.fonts (ctrl+h pour afficher le dossier)
  2. Toujours vérifier que la police OpenSans est installée dans le dossier dossier usr/share/fonts/truetype/
Charger les données
  1. Colonne de gauche > “Fields” –> Tout supprimer
  2. Supprimer les bases de données
  3. Colonne de gauche > Clique droit sur le nom du fichier en haut à gauche > Edit query –> Query langage : XPath (en haut de la fenêtre qui s'est ouverte)
  4. Écrire la requête sous la forme : /champ_n/champ_n+1/champ_n+2/…/ et aller jusqu'au niveau de détail le plus bas qui nous intéresse (à droite, le champ au niveau duquel on se situe apparaît en gras)
  5. Ensuite, pour les champs qui contiennent des informations que l'on souhaite afficher dans le rapport, glisser-déposer les champs de la liste de droite vers la table du bas

Valider –> Les champs sélectionnés apparaissent dans “Fields” dans la fenêtre principale

/!\ Changer le nom champs dès le départ (à cette étape) et choisir des noms parlants: Dérouler “Fields” > clique droit sur un champ > renommer

Mettre en page les données
  1. Ajouter un champ texte : Glisser-déposer les champs sur la page pour les placer à l'endroit voulu sur le rapport
  2. Modifier un champ texte : Clique droit sur la zone > Edit expression
  3. Dans la fenêtre d'édition, cliquer sur le nom du champ que l'on souhaite afficher pour l'ajouter (dans l'éditeur, il est possible de faire certaines opérations telles que la concaténation d'expressions) –> Apply
  4. Dans l'onglet Designer, on met en page les champs (taille, disposition, etc)
  5. Basculer entre les onglets Designer et Preview pour ajuster la mise en page des champs

/!\ En cas d'affichage d'erreur –> Double cliquer sur l'erreur pour la corriger

Ajouter le rapport dans Ekylibre

Dans l'instance Ekylibre :

  • Paramètres > Modèles de document > Nouveau
  • Bien choisir le type pour que le modèle apparaisse au bon endroit dans le logiciel