利用程序將.jrxml導出為.jasper文件並用PDF顯示(2)


直接在Web項目中使用.jasper文件,其實在軟件項目開發時,.jrxml文件經常修改,而且.jrxml還要在項目中進行保留備份,所以較為流行的做法是在項目中使用.jrxml來生成.jasper文件,並用PDF文件顯示出來.

設計的報表模板樣式,如圖1.28所示。

創建Web項目,將.jrxml復制到WebRoot中的jrxml文件夾中,項目結構如圖1.29所示。

在此項目中的src路徑下創建一個文件夾,其實也是一個名稱為jasperreports的包(package),創建它的主要作用就是 WebRoot中的.jrxml文件編譯成.jasper文件后要放入src/jasperreports包中,這樣做的主要原因就是一旦出現主報表 main.jasper引用子報表sub.jasper的時候,不需要指定子報表的路徑,只需要一個相對路徑即可,因為主報表和子報表都在 classpath路徑中,屬於相對路徑,這樣設計可以有效地解決Parameters過多的問題,此方法也是本教程着力推薦的實現方式,關於子報表的使 用請參看后面的章節。

加入jasperreports包的項目結構如圖1.30所示。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try   
        {   
            String path = this.getClass().getResource("/jasper/report1.jrxml").getPath();
            
            File file = new File(path);
            String parentPath = file.getParent();
            String jrxmlDestSourcePath = parentPath+"/report1.jasper";
            JasperCompileManager.compileReportToFile(path,  
                    jrxmlDestSourcePath);  
            InputStream isRef = new FileInputStream(new File(jrxmlDestSourcePath));  
            ServletOutputStream sosRef = response.getOutputStream();  
            response.setContentType("application/pdf");  
            JasperRunManager.runReportToPdfStream(isRef,sosRef,new HashMap(),  
            new JREmptyDataSource());  
            sosRef.flush();  
            sosRef.close();  
        }   
        catch (JRException e)   
        {   // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  

程序運行后的效果如圖1.31所示。

編譯成功后,在Tomcat軟件中的指定路徑下生成了.jasper文件,如圖1.32所示。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM