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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Jasper Discussion :

Génération d'un pdf en version 1.6 via un document XML


Sujet :

Jasper

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 4
    Points : 6
    Points
    6
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    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 796
    Points : 10 765
    Points
    10 765
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FOP] Problème de path avec la génération d'un PDF
    Par MrMaze dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 14/03/2006, 17h53
  2. [PDF]Génération dynamique de PDF et stockage
    Par JeJerom dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/01/2006, 16h25
  3. [FPDF] génération de fichiers PDF
    Par Laura dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 16/11/2005, 00h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo