IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Tutoriel développement Alfresco : modélisation de contenu et utilisation de jasper report

Tutorial développement Alfresco: modélisation de contenu et utilisation de jasper report


précédentsommairesuivant

V. UTILISATION DE JASPER REPORT

V-1. Génération du document PDF avec Jasper Report et enregistrement

Pour la génération de la fiche du produit au format PDF, cela est fait avec le standard Jasper Report avec son outil iReport. Avant de présenter l'utilisation de l'API Jasper dans le projet pour la génération du PDF, nous allons d'abord brièvement faire un rappel de l'utilisation de iReport pour la construction du template.

V-1-1. Création du template jasper de la fiche du produit

Dans l'interface d'iReport nous créons un nouveau rapport vierge et nous déplions les zones : title, detail et pageFooter.

Dans la zone title représentant le titre et le logo du document qui sera produit, nous allons placer un composant image et des zones de textes statiques.

Lors de la génération du rapport, le moteur doit prendre en entrée un objet de type InputStream contenant les binaires de l'image. Les Stream de l'image seront passés au le moteur Jasper Report à travers le paramètre : PRODUCT_REPORT_KOOSSERY_LOGO de type java.io.InputStream. Les valeurs des zones de textes statiques sont directement saisies (voir la figure ci-dessous).

Dans la zone detail nous allons placer un composant image pour le positionnement de l'image du produit et des zones d'entrée de textes pour les informations du produit.
Il a aussi 5 zones de textes statiques affichant les labels du nom du produit, la description du produit, la référence du produit, le prix unitaire et le stock. Les valeurs sont passées au travers des paramètres :
-  PRODUCT_REPORT_NAME de type java.lang.String,
-  PRODUCT_REPORT_PRIZE de type java.lang.Float,
-  PRODUCT_REPORT_REFERENCE de type java.lang.String,
-  PRODUCT_REPORT_STOCK de type java.lang.Integer,
-  PRODUCT_REPORT_DESCRIPTION de type java.lang.String.
-  Les Stream de l'image sont passés à partir du paramètre PRODUCT_REPORT_IMAGE de type java.io.InputStream.

Dans la zone pageFooter nous allons placer des zones de textes statiques.

Figure 12 : Création du fichier jasper avec iReport 1.3.3
Figure 12 : Création du fichier jasper avec iReport 1.3.3




Pour avoir des notions approfondies sur la création des rapports avec Jasper Report, le Centre de Compétences Alfresco-jBPM de Koossery TechnologyKoossery Technology conseille les nombreuses documentations du site developpez.comdeveloppez.com, dans la rubrique 'java'. Quelques exemples de tutoriaux :

V-1-2. Compilation du template jasper report

La compilation du template se fait dans l'outil iReport à partir du menu Créer -> Compiler. Nous avons compilé et produit le fichier Product.jasper.

V-1-3. Utilisation du template dans le projet et génération du PDF

L'utilisation du template Product.jasper dans le projet pour la génération du PDF de la fiche produit se fait dans la méthode String finishImpl(FacesContext arg0, String arg1) du backing bean. Nous allons présenter dans les détails.

Tout d'abord les labels des paramètres déclarés dans le template; les noms doivent être identiques aux noms des paramètres déclarés dans le template :

 
Sélectionnez
/* --------------- Report Parameters  --------------- */
	private  final String PRODUCT_REPORT_DESCRIPTION = "PRODUCT_REPORT_DESCRIPTION";
	private  final String PRODUCT_REPORT_IMAGE = "PRODUCT_REPORT_IMAGE";
	private  final String PRODUCT_REPORT_KOOSSERY_LOGO = "PRODUCT_REPORT_KOOSSERY_LOGO";
	private  final String PRODUCT_REPORT_NAME = "PRODUCT_REPORT_NAME";
	private  final String PRODUCT_REPORT_PRIZE = "PRODUCT_REPORT_PRIZE";
	private  final String PRODUCT_REPORT_REFERENCE = "PRODUCT_REPORT_REFERENCE";
	private  final String PRODUCT_REPORT_STOCK = "PRODUCT_REPORT_STOCK";


Puis les images et le fichier jasper du template :

 
Sélectionnez
/* --------------- JASPER REPORT FILE AND RESSOURCES  --------------- */ 
	private ClassPathResource JASPER_REPORT_CONTEXT_PATH=
		new ClassPathResource("/jasperreport/Product.jasper");
	
	private ClassPathResource JASPER_REPORT_KOOSSERY_LOGO_PATH=
		new ClassPathResource("/images/logo/logo_koossery.jpg");


En dernier le chargement des données dans le template et la production du PDF :

 
Sélectionnez
// - Parameters to send to the report
			Map parameters = new HashMap();
			/* Product Report */
			parameters.put(PRODUCT_REPORT_DESCRIPTION, this.productData.getDescription());
			parameters.put(PRODUCT_REPORT_IMAGE, this.productData.getPhotoInputStream());
			parameters.put(PRODUCT_REPORT_KOOSSERY_LOGO, 
					new FileInputStream(JASPER_REPORT_KOOSSERY_LOGO_PATH.getFile()));
			parameters.put(PRODUCT_REPORT_NAME, this.productData.getName());
			parameters.put(PRODUCT_REPORT_PRIZE, this.productData.getPrize());
			parameters.put(PRODUCT_REPORT_REFERENCE, this.productData.getRef());
			parameters.put(PRODUCT_REPORT_STOCK, this.productData.getStock());

			File file = JASPER_REPORT_CONTEXT_PATH.getFile();
			
			// - Execution
			JasperPrint jasperPrint = JasperFillManager.fillReport(new FileInputStream(file), 
					parameters,new JREmptyDataSource());
			
			// - Create report as PDF FIle		
			this.reportBytes = JasperExportManager.exportReportToPdf(jasperPrint);

précédentsommairesuivant