注:当前在《建立第一个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 栏内,显示图表,但其所具有的高度不能为0,20个高度太小了啊吧 ?那就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>