- N +

IReport与JasperReport生成HTML报表的线条图片问题

IReport与JasperReport生成HTML报表的线条图片问题原标题:IReport与JasperReport生成HTML报表的线条图片问题

导读:

一.问题描述:使用JasperReport生成Html报表后,数据显示正确,但各种线条显示不出来           ...

文章目录 [+]

一.问题描述:使用JasperReport生成html报表后,数据显示正确,但各种线条显示不出来

           产生原因:在生成HTML页面时JRHtmlExporterParameter.IMAGES_URI参数设置不正确,主要是图片的路径问题。由JasperReport生成Html时,那些线条是一个名称为px像素的图片,是内置在jasperreports包中的,在IE显示时以图片的形式显示

           解决办法:查阅了网络许多资料,照其方法测试均未解决。无奈之下,查看JasperReport的源代码才搞定。

         1、在web.xml中添加如下配置:

                  <servlet>

                          <servlet-name>ImageServlet</servlet-name>

                          <servlet-class>net.sf.jasperreports.j2ee.servlets.ImageServlet</servlet-class>

                 </servlet>


                 <servlet-mapping>

                          <servlet-name>ImageServlet</servlet-name>

                          <url-pattern>/servlets/image</url-pattern>

                 </servlet-mapping>


        2、在调用程序中增加如下代码:


             exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "../servlets/image?image=");


             全部调用程序如下:


            <%@ page contentType="text/html;charset=GB2312"%>

            <%@ page import="net.sf.jasperreports.engine.*" %>

            <%@ page import="net.sf.jasperreports.engine.util.*" %>

            <%@ page import="net.sf.jasperreports.engine.export.*" %>

            <%@ page import="net.sf.jasperreports.j2ee.servlets.*" %>

            <%@ page import="java.util.*" %>

            <%@ page import="java.io.*" %>

            <%@ page import="java.sql.*" %>

     <%

               //  "/reports/test.jasper"是ireport编译后的报表文件

                File reportFile = new File(application.getRealPath("/reports/test.jasper"));

                if(!reportFile.exists())

                     throw new JRRuntimeException("报表绘制失败,找不到报表配置文件!");

               JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());

              

               String url ="JDBC:jtds:sqlserver://127.0.0.1/test";

               Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();

               Connection conn = DriverManager.getConnection(url,"sa", "");

               //null为无参数传入

               JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, conn);

          

              JRHtmlExporter exporter = new JRHtmlExporter();

              StringBuffer sbuffer = new StringBuffer();


              session.setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);

 

              exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);

              exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);

              exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "../servlets/image?image=");

 

              exporter.exportReport();

%>


3、在Struts2中处理此问题的方法:


Action中代码如下:


 


public String printInfo() {

        try {

            condition = "id =" + customer.getId();

            resultList = this.getCustomerManager().findAccording("Customer",

                    condition);

            Map parameters = new HashMap();

            Debug.println(resultList.size());

            return "print";

        } catch (Exception e) {

            System.out.println(e.getMessage());

            return "failure";

        }

    }

 struts.xml文件中代码如下:


<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

        "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <include file="struts-default.xml" />

    <package name="test" namespace="/" extends="struts-default,jasperreports-default">

<action name="customerInfo" class="customerInfoAction">

        <result name="print" type="jasper">

                <param name="location">

                    /reports/install.jasper

                </param>

                <param name="dataSource">resultList</param>

                <param name="format">PDF</param><!-- 这里可以更换为HTML等其它显示格式-->

            </result>

</action>

   如果你执行此Action中的printInfo方法时返回的信息图片都没显示的话,那么就在.jasper文件所在的文件夹目录中创建一个images包然后把px文件(可到http://download.csdn.net/source/649431下载)放到这里。


    4、执行你的代码,完工!


   二. 问题描述:使用JasperReport生成Html报表后,使用IE打印时报表的各种线条无法打印出来

           产生原因:和上例一样,由JasperReport生成Html时,那些线条是一个名称为px像素的图片,是内置在jasperreports包中的,在IE显示时以图片的形式显示,打印时浏览器无法打印这些图片。

           解决办法:通过设置IE选项,使其可以打印背景颜色和图像,方法:工具 --internet选项 --高级 --打印 --打印背景颜色和图像,重新预览即可显示出各种线条。



--------------------

本文标题:IReport与JasperReport生成HTML报表的线条图片问题
本文链接:http://kyjszj.com/qtzq/160.html
作者授权:除特别说明外,本文由 开源技术之家 原创编译并授权 开源技术之家 刊载发布。
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。

有好的文章希望我们帮助分享和推广,猛戳这里我要投稿

返回列表
上一篇:
下一篇:

发表评论中国互联网举报中心

快捷回复:

    评论列表 (暂无评论,共1037人参与)参与讨论

    还没有评论,来说两句吧...