欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

web应用中集成Ireport

程序员文章站 2022-07-15 11:57:18
...

从项目需求,资源,技术上的综合考量, 最后还是选择开源软件【jasperReports+Ireport】, 作为各种报表,模板打印的工具。  已经在生产环境上运行。

web架构: S2SH + Ireport。

Ireport网上的中文资料很少, 实际操作起来会遇到各种问题,中文显示问题, Ireport模板绘制问题, 应用在window下没错,linux下报错等一系列奇葩问题。

当时选择哪个版本来集成到项目中的时候就折腾了很久,  一开始取得最新的版本iReport-5.6.0,但是执行的时候总是报错,看log应该是版本的问题, 最后还是选择了iReport-3.7.0。


下载Ireport之后再 iReport-3.7.0\ireport\modules\ext 的目录下面 找到 jasperreports-3.7.0.jar,  直接放到项目的lib下面。


ireport生成pdf的程序部分:


ireport生成pdf的程序部分

            List listInfo= new ArrayList();
	        // 生成导出类JRPdfExporter 来自JRExporter  
			JRPdfExporter exporter = new JRPdfExporter();

	        JRBeanCollectionDataSource beanColDataSource1_1 = new JRBeanCollectionDataSource(
	        	printDatas);

			// jrxml 编译 .jasper 文件
			JasperReport mainjReport1_1 = JasperCompileManager
					.compileReport(mainDesign1_1);

			Map paramMap1_1 = new HashMap();
			String imagePath = reportpath + File.separator + "images" + File.separator;
	        InputStream imgsrc = new FileInputStream(qRCode);
	        String logo_Path = imagePath + "logo1.png"; 
	        InputStream a_imgsrc = new FileInputStream(logo_Path);
	        //  加logo 和 二维码 
	        paramMap1_1.put("qrcode1", imgsrc);  
	        paramMap1_1.put("a_logo", a_imgsrc);

			JasperPrint print1_1 = JasperFillManager.fillReport(mainjReport1_1, paramMap1_1,
					beanColDataSource1_1);
                        listInfo.add(print1_1);
			// 多个报表模板操作
			exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, listInfo);

            FileOutputStream output = new FileOutputStream(“具体要到处的pdf文件全路径”);
		    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, output);


			// 输出
		    exporter.exportReport();




 

Ireport 模板生成部分: ireport画模板相对比较麻烦, 尤其是子报表,子报表嵌套子报表,  我这里有一些ireport的相关资料,还有一些字体和jar文件也可以下载。  有需要的可以去下载,也可以一起探讨。

web应用中集成Ireport

字体(微软雅黑, 粗体 ,宋体, 粗体) + jasperreports-3.7.1.jar:

http://download.csdn.net/detail/d124939312/9830360


Ireport相关资料:

http://download.csdn.net/detail/d124939312/9830357

***如果是子报表嵌套子报表,生成的.jasper要放到web应用的classpath下面,不然ireport加载不到相关的jasper文件。



window下没错,linux下报错:  这个是因为字体的原因造成的,  windows下字体很全,  但是我们项目是部署到linux上的, ireport上用的字体在linux上没有,  所以linux上跑起来会报字体的问题。

解决1: linux上安装相关字体。

解决2: 修改jasperreports-3.7.1.jar里面的配置文件default.jasperreports.properties的配置信息

net.sf.jasperreports.awt.ignore.missing.font=false        把   false  改成  true。  虽然比较暴力但是还是解决了问题,更推荐用第一种方式。 




相关标签: web应用