retourner un fichier pdf sur la racine du projet
Bonjour,
jai une methode printJasperPdf qui tranforme un fichier jasper en pdf, lors de la transformation j'utlise JasperPrint et ByteArrayOutputStream pour les gerer le flux , a la fin je retourne render(file:pdfStream?.toByteArray(), contentType: 'application/pdf')
je veux apres avoir retourner le render instancier un news fichier qui sera stocké dans l'un des repertoires du projet /targer/monDossier... par exemple
Merci
voici ma fonction
def printJasperPdf{
def dossierInstance = Dossier.get(params?.id)
//sss
ByteArrayOutputStream pdfStream
try {
String reportName, nameFile, dotJasper
nameFile = "recuDossier"
reportName = grailsApplication.mainContext.getResource('reports/' + nameFile + '.jrxml').file.getAbsoluteFile()
//on charge le fichier jasper
dotJasper = grailsApplication.mainContext.getResource('reports/' + nameFile + '.jasper').file.getAbsoluteFile()
String IMAGE_DIR = "${servletContext.getRealPath('/images')}"
IMAGE_DIR=IMAGE_DIR+"/Copie de logo_cnss.gif"
//String path1="${servletContext.getRealPath('/images')}"
// contrucution de la Map des parametres
Map<String,String> reportParam = new HashMap<String,String>()
if(dossierInstance?.tagComplet==0){
reportParam.put("fournimanq","FOURNIES")
}
if(dossierInstance?.tagComplet==1){
reportParam.put("fournimanq","MANQUANTES")
}
reportParam.put("iddossier",params?.iddos)
reportParam.put("tagdossier","and frontofficedepotpiece.'tag'=0")
reportParam.put("user",session.user.toString())
reportParam.put("tenant",session.user?.tenantId.toString())
reportParam.put("IMAGE_DIR",IMAGE_DIR)
reportParam.put("typedos",params?.typedos)
reportParam.put("pres",params.pres)
println"LISTE DES PARAMETRES===========================>> " +reportParam
// compiles jrxml
JasperCompileManager.compileReportToFile(reportName);
// remplissage du rapport en lui passant les parametres et la datasource
JasperPrint print = JasperFillManager.fillReport(dotJasper, reportParam, dataSource.getConnection());
println"inside "
// on utilise un exporter pour generer un flux binaire correspondant au format souhaitée pdf dans notre cas
pdfStream = new ByteArrayOutputStream();
JRExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, pdfStream); // your output goes here
exporter.exportReport();
} catch (Exception e) {
println"errorsss "+e
throw new RuntimeException("Impossible de generer le fichier PDF", e);
} finally {
render(file:pdfStream?.toByteArray(), contentType: 'application/pdf')
//return pdfStream?.toByteArray()
}
}