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