JasperReports 的进阶使用

 注:当前在《建立第一个JavaBean数据源报表.doc》基础上进行操作

一.PDF中文不显示问题
中文问题一般出现在生成PDF的时候,出现症状为所有中文都不显示。
iReport 3.0
选择PDF预览,然后再次选择“执行报表(使用动态链接)”,就可以生成当前报表的PDF文件了。

默认情况下,在iReport的安装目录下可以找到生成的PDF文档,看一下,是不是所有的中文字符都丢失了呢。

咱们解决这个问题呢,很简单,在可能显示中文的地方,鼠标选中,右键选择属性,弹出窗口,点击“Font”进行字体设置:

注意:
Font Name :
选择宋体或其它
PDF Font Name 
选择STSong-Light

PDF Embedded 勾选

PDF Encoding 要选择UniGB-UCS2-H(Chinese Simplified)


再次“执行报表(使用动态链接)”即可。

二.引入图表显示
      
在报表中,一般少不了图表进行形象显示:

在模板页面上点击右键,选择“栏的属性”,弹出,选择“summary”(用于总结报表的报表栏):

 

我们准备在 summary 栏内,显示图表,但其所具有的高度不能为020个高度太小了啊吧 ?那就200吧。填写完毕,一定要选择 "Apply" 按钮,然后关闭。

在工具栏内,找到图表工具按钮:

 

点击之后,在"Summary"区域选择一片区域,自动弹出一个图表选择窗口:

 

这里选择3D柱状图。

下面要设置柱状图的属性,选中,右键,“Chart Properties”。

 

选中“Chart Data”选项卡,点击“Details”选项卡,点击”Add“按钮,弹出

 

输入如上图示表达式,然后OK即可。执行动态报表,即可看到效果。

PS:

若图表图片来自于已有的系统,是否可以融入到当前报表中来,答案是肯定的。

在工具栏内,找到图片按钮,部署到相应位置,即可设置图片的地址,宽和高等参数:

 

"Image Expression" 中,输入图片的访问地址,可附加参数,这样就和既有系统进行交互了。看看效果图吧:

 

.如何使用jasper文件进行生成PDF文档
      
public static void main(String[] args) throws Exception {

       try {

           // 生成测试数据

           DailySales[] datas = { new DailySales(" 货号 1", " 物品1 ", 1, 1000),

                  new DailySales(" 货号 2", " 物品 2", 2, 2000),

                  new DailySales(" 货号 3", " 物品 3", 3, 3000),

                  new DailySales(" 货号 4", " 物品 4", 4, 4000),

                  new DailySales(" 货号 5", " 物品 5", 5, 5000),

                  new DailySales(" 货号 6", " 物品 6", 6, 6000),

                  new DailySales(" 货号 7", " 物品 7", 7, 7000),

                  new DailySales(" 货号 8", " 物品 8", 8, 8000),

                  new DailySales(" 货号 9", " 物品 9", 9, 9000),

                  new DailySales(" 货号 10", " 物品 10", 10, 10000) };

           List<DailySales> data = Arrays.asList(datas);

           //获取数据源

           JRDataSource dataSource = new JRBeanCollectionDataSource(data);

           // 报表模板文件

           String reportFilePath = "d:/ireport/First.jasper";

           // 生成JasperPrint

           JasperReport report = (JasperReport) JRLoader

                  .loadObject(reportFilePath);

           // 要传入的参数数组

           Map params = new HashMap();

           JasperPrint jasperPrint = JasperFillManager.fillReport(report,

                  params, dataSource);

           // 设定输出格式以及输出路径

           OutputStream ouputStream = new FileOutputStream("d:/test.pdf");

           // 使用JRPdfExproter导出器导出pdf,导出不同格式文件,需要使用不同的导出器

           JRPdfExporter exporter = new JRPdfExporter();

           // 设置JasperPrintList

           exporter

.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);

           exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,

                  ouputStream);

           exporter.exportReport();

           ouputStream.close();

       } catch (Exception e) {

           e.printStackTrace();

       }

}
.生成HTML格式报表图片显示不出来

       a.假如报表不含有图表的话,可直接把 pr 文件放入到web项目images目录下
    b.
若含有复杂报表图片等,则需要在web项目的web.xml文件中添加一个图片servlet 路径映射:
<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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值