2016-04-06 8 views
0

私はジャスパーレポートを生成し、後にインラインフレーム(jspページ)で表示したいと考えています。 これを行うには、私が想像できる唯一の方法は、レポートをpdfファイルに書き込んで、何とかこのファイルに参照することです。Java Webapp:ファイルを生成し、JSPの一部として表示しますか?

これは私のテストです:ファイルを正常に生成します。

@RequestMapping(value = "jaspertest", method = RequestMethod.GET) 
public ModelAndView report() throws JRException, IOException {  
// TODO: compile here 
//JasperReport jasperReport = JasperCompileManager.compileReport("path/to/myReport.jrxml"); 

String fileName = "/jasper/Blank_A4.jasper"; 
ClassLoader classLoader = getClass().getClassLoader(); 
File file = new File(classLoader.getResource(fileName).getFile()); 
InputStream jasperStream = new FileInputStream(file); 

ReportSource reportSource = new ReportSource(this.realestateService); 

Map<String,Object> params = new HashMap<>(); 
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperStream); 
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, reportSource); 

String home = System.getProperty("user.home"); 
File reportFile = new File(home + "/tomcat/generated/generated_report.pdf"); 
reportFile.getParentFile().mkdirs(); 
if (!reportFile.exists()) 
    reportFile.createNewFile(); 

OutputStream outStream = new java.io.FileOutputStream(reportFile); 

//final OutputStream outStream = response.getOutputStream(); 

JasperExportManager.exportReportToPdfStream(jasperPrint, outStream); 
outStream.close(); 
return new ModelAndView("report/test","pdf", reportFile.getName()); 

}

しかし、JSPページは、現在使用するPDFの場所を参照することができれば、私は、理解していません。別の場所を使うべきですか?それとも良い方法がありますか?

答えて

0

ジャスパーはレポートをhtmlにもレンダリングできることを知りました。だから、pdfの必要はありません。 htmlはjspページに挿入できます。

この私のコード:

@RequestMapping(value = "show", method = RequestMethod.GET) 
public ModelAndView report(@RequestParam(value = "report", required=true) String report) throws JRException, IOException {  

    String fileName = "/jasper/" + report; 
    ClassLoader classLoader = getClass().getClassLoader(); 
    File file = new File(classLoader.getResource(fileName).getFile()); 
    InputStream jasperStream = new FileInputStream(file); 

    JasperReport jasperReport = JasperCompileManager.compileReport(jasperStream); 

    Map<String,Object> params = new HashMap<>(); 
    JRLoader.loadObject(jasperStream); 
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, reportSource); 

    Exporter exporter; 
    ByteArrayOutputStream out = new ByteArrayOutputStream(); 

    exporter = new HtmlExporter(); 
    exporter.setExporterOutput(new SimpleHtmlExporterOutput(out)); 

    exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); 
    exporter.exportReport(); 

    String result = out.toString(); 

    return new ModelAndView("report/test","pdf", result); 
    } 
関連する問題