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 :
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?????
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; }
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 :
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.
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; }
bye
Partager