zoukankan      html  css  js  c++  java
  • 利用程序将.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所示。
     

  • 相关阅读:
    C++编程开发学习的50条建议(转)
    编程思想:我现在是这样编程的(转)
    Linux系统编程@多线程与多进程GDB调试
    字符串分割函数 STRTOK & STRTOK_R (转)
    C语言指针与数组的定义与声明易错分析
    C语言 a和&a的区别
    C语言二重指针与malloc
    【C语言入门】C语言的组成结构(基础完整篇)!
    程序员吐槽女友败家:开酒店必须400元起步,工资却不到自己的一半!
    怎样才能和编程语言对上眼?你需要做些准备以及...
  • 原文地址:https://www.cnblogs.com/liujie037/p/5176486.html
Copyright © 2011-2022 走看看