2016-05-09 6 views
0

Ich habe einen Jaspis-Bericht, ich lege es in das gleiche Paket wie Servlets, ich muss PDF-Datei daraus generieren, aber der Code funktioniert nicht und gibt nicht jeder Fehlergenerieren pdf-Datei von Jaspis-Bericht mit Servlet Java-Code

public void print(String numBac , HttpServletRequest request, 
    HttpServletResponse response) { 
    try {   
     JasperDesign jasperDesign = JRXmlLoader 
       .load("fiche.jrxml"); 
     String sql = "SELECT * FROM etudiant " 
       + "INNER JOIN filiere ON etudiant.code_f=filiere.code_f " 
       + "INNER JOIN lieu_nais ON etudiant.code_lieu=lieu_nais.code_lieu " 
       + "INNER JOIN montant ON etudiant.code_m=montant.code_m WHERE bac='" 
       + numBac + "'"; 
     JRDesignQuery newQuery = new JRDesignQuery(); 
     newQuery.setText(sql); 
     jasperDesign.setQuery(newQuery); 
     JasperReport report = JasperCompileManager 
       .compileReport(jasperDesign); 
     //JasperPrint print = JasperFillManager.fillReport(report, null, cnx); 
     //JasperViewer.viewReport(print); 

     byte[] byteStream; 
     byteStream = JasperRunManager.runReportToPdf(report, null, cnx); 
     OutputStream outStream = response.getOutputStream(); 
     response.setHeader("Content-Sisposition", "inline,filename="+DOWNLOAD_FILE_NAME); 
     response.setContentType(FILE_TYPE); 
     response.setContentLength(byteStream.length); 
     outStream.write(byteStream, 0, byteStream.length); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

auch wenn ich Jaspis Vorschau generieren will es nicht (Code in Kommentaren) angezeigt

+0

ich denke, .jrxml ist eine Ressource-Datei, also haben Sie es versucht, indem Sie es in einem neuen Quellordner bereitstellen? – Darshit

+0

Ich sah einige Tutorials, wo sie es so mit Servlets setzen, weil Servlets Quelldateien sind – Java4Dev

Antwort

0

Zunächst einmal haben Sie einen Rechtschreibfehler hier:

response.setHeader("Content-Sisposition", "inline,filename="+DOWNLOAD_FILE_NAME); 

Es sollte sagen "Dispo sition“statt "Sisposition":

response.setHeader("Content-Disposition", "inline,filename="+DOWNLOAD_FILE_NAME); 

Versuchen Sie auch, mit "attachment" anstelle von "inline":

response.setHeader("Content-Disposition", "attachment,filename="+DOWNLOAD_FILE_NAME); 

und bündig und schließen Sie die outStream:

outStream.flush(); 
outStream.close(); 

Hoffnung es hilft!