Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Jasper
Jasper Forum d'entraide sur Jasper Reports. Avant de poster --> FAQ Jasper, Tutoriels Jasper
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/08/2006, 17h44   #1
Invité de passage
 
Inscription : août 2006
Messages : 4
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 4
Points : 1
Points : 1
Par défaut Génération d'un pdf en version 1.6 via un document XML

Bonjour

J'uilise jasper report pour la génération d'un document pdf qui se fait en fusionnant un document pdf dynamique à base d'XML et un pdf statique. Le problème est que le pdf statique â été modifié pour mettre des champs de saisie , de ce fait mon document pdf est passé en 1.6 et c'est la version minimale qui supporte ce genre de champ. Ce qui pose problème car la fusion de mes 2 pdf ne marche plus car j'essaye de fusionner un pdf 1.5 avec un pdf 1.6 et ca pete.

La création du pdf dynamique à base de XML se fait avec la fonction suivante :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
private MergePdfByteArrays createPdfDynamique(String xmlFileName, String editionPath, MergePdfByteArrays pdfMergerEntree, String query, List orderedParameters, Map pdfVariablesMap)
			throws Exception
	{
		MergePdfByteArrays pdfMergerRetour = pdfMergerEntree; //utile ??
		ByteArrayOutputStream output = new ByteArrayOutputStream();	
 
		//récupération du nom du fichier .jasper
		String jasperFileName = toJasper(xmlFileName);
		//vérif si besoin d'un nouveau fichier .jasper
		checkIfNeedToCompile(servlet.getServletContext(), editionPath, xmlFileName);										
 
		JasperPrint print=null;
		JRExporter exporter=null;				
		ByteArrayOutputStream outputTemp = new ByteArrayOutputStream();	
 
		//préparation des objets
		Connection conn=DQLManager.getConnexion();
		PreparedStatement ps=null;
		//récupération du résultat sous forme de ResultSet
		ResultSet rs =DQLManager.execToRs(query,orderedParameters,conn,ps);				
		//Création du fichier PDF dynamique
 
		print = dori.jasper.engine.JasperFillManager.fillReport(jasperFileName, pdfVariablesMap, new JRResultSetDataSource(rs));	
		exporter = new  JRPdfExporter();					
		exporter.setParameter(JRExporterParameter.OUTPUT_STREAM ,output);
		exporter.setParameter(JRExporterParameter.JASPER_PRINT,print);
		exporter.exportReport();						
 
		//fermeture des objets inutiles
		if (conn != null) conn.close();
		if (rs != null) rs.close();
		if (ps != null) ps.close();
 
		byte[] content = (byte[]) output.toByteArray();
		// on rajoute sur le flux de sortie le fichier PDF créé
		pdfMergerRetour.add(content);
 
		return 	pdfMergerRetour;		
	}
C'est là que j'aimerai pouvoir dire que mon pdf dynamique à générer doit être en version 1.6 et pas 1.4 par défaut. comment?????


La fusion entre le pdf dynamique et le pdf statique dans lequel a été ajouté des zone de saisie se fait avec la méthode suivante :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
private byte[] GetStatiqueContent(byte[] content,String pdfName)
	{
			MergePdfByteArrays pdfMerger;
			byte outPdf[]=null;
 
			try{
				LogItrf.log("33510005","PDF-Merge fichiers PDF");
				FileInputStream inputStream=new FileInputStream(pdfName);
				File f=new File(pdfName);
				byte b[]=new byte[(int)f.length()];
				inputStream.read(b);
				pdfMerger = new MergePdfByteArrays();
				//ici on rajoute tous les fichiers pour construite le PDF final
				pdfMerger.add(content);//fichier dynamique
				pdfMerger.add(b);//fichier statique
				pdfMerger.close();
				outPdf = pdfMerger.getMergedPdfByteArray();
			}
			catch(Exception e)
			{			
				LogItrf.log("33510004", e.getMessage());
			}
 
			return outPdf;
	}
En gros je suis face à un mur et biensure je ne doit pas utiliser un autre produit que jasper report alors si quelqu'un a une idéee ca serait bien sympa.

bye
wallyfr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 10h44   #2
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Tu n'utilises pas iReport ? La version 1.2 permet de prendre un XML comme DataSource, l'avantage est qu'il te construit les classes. De plus, tu as une interface pour construire tes rapports.
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h25.


 
 
 
 
Partenaires

Hébergement Web