iReport 和 Jasperreport 整合开发 WEB 报表向导(二)

关于Jaspersoft iReport打印引起内存溢出的问题的思考(仅作为一点猜想,欢迎有更精通的人批评指正) 在工作中有用到Jaspersoft iReport打印组件打印PDF文档的情况,但是有时候做好的模板文件部署到服务器(本地或者远程),打印时会引起内存溢出的问题,这个时候检查方向分两条线:1)打印设值的问题 2)模板元素的问题。 首先1)打印设值的问题,要检查模板对应的字段在设值类里是否为空,是否有无限循环的可能,是否有重名,2)模板元素的问题,这个需要检查元素的属性的详细设置,比如我遇到的下面这... 阅读详情

在上一篇文档里我们初步介绍了 iReport 和 Jasperreport,基本上我们已经对它们有了一个最初的认识,在今天这篇文档里,我将深入的对 iReport 这个工具进行说明。

接着上篇文档的结尾,如果我们成功运行 iReport 的话,可以看到如下的主界面:

点击“新增” 按钮可以创建一个新的空报表,考虑到生成后的XML文件编辑的时候可以显示中文,请在 xml encoding 选项上 GB2312 (没有选项自己手动输入),如下图:

当设置完必要的选项点击完成可以得到一个空白的报表,如下图:

好了,输入一段文本,很简单,点击创建“静态文本”按钮 ,然后在报表任何一个工作区(如 title,pageheader,detail,pagefooter summary 等等)输入,如输入“今天天气不错!”。在属性框页可以对输入的内容进行属性控制,如字体,颜色,大小,以及其他的属性,报表中任何的元素(静态文本,线,框等等)都有自己的属性页,一般双击任何元素都可以弹出该元素的属性页,属性页如下图:

完工,一个最简单的报表就生成了,iReport 配有运行环境,如下快捷按钮:

左边的按钮是运行静态报表(无需数据库环境),右边的是运行动态报表(这时需要设置数据库连接,数据库的连接载下面介绍)

那么经过上遍的努力,很显然我们将要运行的静态报表,那么点击左边的按钮就可以看到下面的 pdf,如图:

当然上遍的例子是最简单,呵呵

下面我将采用问答的方式进行逐步讲解 iReport 的用法
1. 如何连接数据库?
2. 如何定义变量、参数以及字段?
3. 如何定义字体以及如何使用自定义的字体(如黑体、楷体或者比较艺术化的子体)?
4. 如何执行 SQL 脚本进行查询?
5. 如何把做好的报表引入到应用程序中?

好了,针对上面的问题,我在下面的篇幅中给于解答并穿插介绍 iReport 中其它的功能菜单。

1. 如何连接数据库?

静态的报表其实很少的,我在前一篇文档中有提到过一句经典的话:“A datasource + a jasper = a print” 因此有必要首先介绍一下如何连接数据库,其实很简单。进入 Datasource/Connections/Datasources 菜单或者点击 快捷按钮,则出现下面属性页:

进行必要的数据库连接属性配置,然后点击test按钮进行测试,如果提示测试成功,则保存数据库连接,即可。

2. 如何定义变量、参数以及字段?

变量、参数以及字段的定义,在 iReport 里是比较方便的,在菜单 view 下可以看到一些控制点,如下图:

Report properties 设置报表属性

Report query 设置查询语句的,这个在下面有介绍

Report fields 设置字段(数据库)

Report variables 设置变量

Report parameters 设置参数

Report fonts 设置字体

顺便把下面的你个也说明一下

Bands,弹出报表工作区(如 title detail 等)的属性页

Report groups 设置组

Element properties 元素属性页

Element browser 显示报表所有元素的列表

设置很容易,但是在报表中引用这些变量、参数和字段就有写说头了,呵呵J,让我们一步一步慢慢来。
在 iReport 中引用的方式,如下表

元素名称引用
变量variablesName$V{ variablesName }
参数parameterName$P{ parameterName }
字段filedsName$F{ filedsName }

其实这些不说明好像不知道如何办,一单说明了,它们也是很好用的也很简单的。多用吧!

3. 如何定义字体以及如何使用自定义的字体(如黑体、楷体或者比较艺术化的子体)?

因为考虑到使用亚洲字体,因此你需要下在额外的 ja r包 iTextAsian.jar,如果 iReport 下载包中含有此 jar 包,此步骤可免。

目前在 iReport 中使用中文字体,好像只有宋体一种,如果想用其它的字体(如黑体、楷体等)需要另外的方法,这在下面介绍,下面介绍如何使用常用的中文字体“宋体”的设置方法,在问题2中我们看到引入字体的选项,点击 “Report fonts” 可以看到下面属性页:

好,如上边的设置就已经设置好宋体,以后在报表的任何地方都可以引用该字体,如下面我们要把我们在上边的例子中的元素“今天天气不错!”改为用宋体,如下:

这样只要我们在 Report font 选项中选中 songti 那么下面的属性自动继承,呵呵,方便吧!
好,下面讲述如何使用宋体以外的中文字体,如:黑体、楷体或其他的艺术化的字体。

也很简单,不过好像目前 iReport 的功能不够完美的缘故,还要手动修改 xml 文件才可以达到要求,如下图我们定义黑体:

首先不同的是在 PDF font name 选项中选中 External TTF font…,按照常理,此时要在紧接着的选项中选择黑体的 ttf 文件 SIMHEI.TTF,可是不知为什么 TrueType font 的选项是空的,(当时我在学习的时候,这步操作让我好胜郁闷),天啊,该怎么办?!

后来我查看了相应的 xml 文件,如下:(由于文件较大,因此只截取我们关心的)

<staticText>
  <reportElement
    mode="Opaque"
    x="13"
    y="42"
    width="239"
    height="53"
    forecolor="#000000"
    backcolor="#FFFFFF"
    positionType="FixRelativeToTop"
    isPrintRepeatedValues="true"
    isRemoveLineWhenBlank="false"
    isPrintInFirstWholeBand="false"
    isPrintWhenDetailOverflows="false"/>
  <textElement textAlignment="Left" verticalAlignment="Top" lineSpacing="Single">
    <font fontName="黑体" pdfFontName="" size="36" isBold="false" isItalic="false" isUnderline="false" isPdfEmbedded ="true" pdfEncoding ="Identity-H" isStrikeThrough="false" />
  </textElement>
  <text></text>
</staticText>

大家可以看到黑体的 pdfFontName=”” 是空的,于是我尝试把系统黑体的TTF文件路径(C:/WINNT/fonts/SIMHEI.TTF)写到这个地方,哈哈,居然成功了。

于是我得到这样一个结论,目前如果你在报表中使用其它的字体,首先要做上面图中所做的属性设置,然后手动把字体的 TTF 文件写到 pdfFontName=””,虽然麻烦了点,不过这招挺管用,呵呵!



原作者:Jplateau
来 源:http://plateau.sicool.com
共有7255位读者阅读过此文

Cadence SpectreRF仿真避坑指南:PSSPnoise设置详解(附实战案例) 本文详细解析了Cadence SpectreRF中PSS(周期稳态分析)Pnoise(周期噪声分析)的关键设置技巧,帮助模拟IC设计工程师避开常见仿真陷阱。通过实战案例分享,涵盖引擎选择、Beat Frequency计算、噪声类型配置等核心参数优化策略,提升仿真精度与效率。特别针对开关电容电路振荡器等复杂场景提供专业解决方案。 阅读详情

相关推荐

用例设计:滴滴打车从轿车到完成支付如何测?

滴滴打车全流程测试用例设计从业务场景覆盖、功能逻辑分解、异常流验证三个维度展开,系统化地构建了测试方案。首先,业务流主干场景被分解为叫车、行程中、支付结算三个阶段,每个阶段都设计了核心测试用例,包括正向异常用例,如定位准确性、车型选择逻辑、路径偏移监控、费用实时计算、多支付方式兼容等。专项测试补充了状态机验证、资损防控测试性能测试,确保系统在不同情况下的稳定性安全性。测试数据策略采用等价类划分设计,实战技巧包括流量回放技术、混沌工程注入计费沙盒验证,以提高测试的覆盖率准确性。最终输出交付物包括流程

海姐软件测试的博客 1474

ireport报表制作, 当一个字段显示的数据太多时(数据过长),则需要自动换行

1、当一个字段显示的数据太长,一个表格放不下,则需要自动换行,选中要更改的表格(要显示动态内容的字段),设置属性Stretch with overflow为钩选状态。 未勾选之前: 勾选之后: 2、但是,表格出现断层的情况,非常不美观,这时 我们还要设置一个属性,让同一行的其他字段该换行字段保持一样高,这时,需要框选整一行要显示的动态字段及表格; 设置属性St...

Jiuchen的博客 4842

农业害虫与植物病害目标检测数据集.zip

数据集介绍:农业害虫与植物病害目标检测数据集一、基础信息数据集名称:农业害虫与植物病害目标检测数据集图片数量:- 训练集:906张- 验证集:261张- 测试集:127张分类类别:- 非洲化蜜蜂、蚜虫、行军虫、褐斑臭虫、菜青虫、柑橘溃疡病、科罗拉多马铃薯甲虫、玉米螟、玉米穗虫、蚂蚁、蜜蜂、甲虫、毛毛虫等13类病虫害标注格式:YOLO格式,包含边界框类别标签,支持多目标检测任务数据来源:农业场景实地采集的病虫害图像,涵盖作物叶片、茎秆、果实等多部位、适用场景智能农业监测系统:支持开发田间病虫害实时检测系统,实现无人机/摄像头等设备采集图像的自动分析病虫害防治应用开发:用于构建移动端农作物健康监测工具,辅助农民快速识别病虫害并获取防治建议农业科研创新:为植物保护算法研究提供高质量数据支撑,推动精准农业技术发展农业教育培训:可作为农业院校教学资源,帮助学生学习病虫害识别与分类方法三、数据集优势专业场景覆盖:包含13类高发性农业病虫害,覆盖鳞翅目幼虫(菜青虫/玉米螟)、鞘翅目害虫(甲虫)、同翅目害虫(蚜虫)等主要农业害虫类别多目标检测特性:单张图片可包含多个不同类别目标,如同时存在蜜蜂与蚂蚁的生态场景,增强模型实际应用能力真实农业环境数据:图像采集自真实农田环境,包含复杂背景、光照变化虫体多角度姿态任务适配性强:YOLO标注格式兼容主流检测框架,支持YOLOv5/v7/v8等系列模型直接训练农业价值显著:特别包含柑橘溃疡病等植物病害样本,支持作物病害早期发现与防治决策

jasperReport 交叉表使用示例

jasperReport

yixiuquan的博客 2106

IReport框架自动增长问题

版本:0.6.7 测试结果:选中tretch with overflowprint when detail overflows,Relative ToTallestObject后,导出HTML可以自扩展高度,但是还是有部分各自无法看到,查看源码发现table对应的tr,td都有,但是内容是空,而且打印出来部分线条过粗.导出到Excel没有自动扩高度,但是可以通过Excel自己修改高度,PDF同...

shappy1978的专栏 512

rails2.3.XX中使用will_paginate分页插件,并实现Ajax分页

早在rails1.XX中,分页插件是内置的辅助方法,但进入rails2后,该方法已经被废除,改成插件的形式使用。 我使用的环境是winxp + ruby1.8.7 + rails 2.3.14。(抱怨一下下:win下开发rails是一件灰常灰常灰常痛苦的事情,T.T) 安装 will_paginate插件有两种安装方式: 一种是作为gem安装,ge...

weixin_30871905的博客 248

Rails分页插件will_paginate

Rails分页插件will_paginate   搜索到的will_paginate的安装方法都是旧的,新的will_paginate已经移到github了   先安装git,可用如下命令安装最新版本的will_paginate插件   script/plugin install git://github.com/mislav/will_paginate.git 还提供了gem的方法安装,详情可...

一骑绝尘 305

Rails2中使用will_paginate插件实现分页

will_paginate插件:http://github.com/mislav/will_paginate/tree/masterAPI:http://gitrdoc.com/mislav/will_paginate/tree/master/ 1.数据库MySQL中追加products表:CREATE TABLE `products` ( `id` int(11) NOT

【昆山人在上海】 1850

rails的分页插件will_paginate

在最近的项目中,用到了rails的分页插件will_paginate  因为是第一次使用这个插件,所以不甚了解,就在网上google 了一阵子,看了看相关的说明,明白了大概,在此记录下来,以备忘记。       下面我就来讲解一下关于这个插件的一些注意事项,因为我是rails的初学者,所以这里用的是rails3,关于以前版本的rails,我了解的不多,在rails3中,用will_pagi...

雷雨路上 221

Rails2中使用will_paginate插件进行分页

作者:老王Rails(2.0.2)推荐的分页方式是will_paginate插件,以前的分页功能剥离为classic_pagination插件,但已不再维护。这两个插件都在:svn://errtheblog.com/svn/plugins/本文将介绍其基本用法。开发环境是WindowsXP操作系统,编辑器是Netbeans。这里使用《Web开发敏捷之道》中的Depot例子来说明will_pagin

在水一方 1747

Rails使用will_paginate插件进行分页

今天尝试使用will_paginate插件实现分页。 1. 按照官方文档https://github.com/mislav/will_paginate/wiki/Installation安装will_paginate插件。 在Gemfile中添加: gem 'will_paginate', '~> 3.0.5' 然后在Project的路径下运行:bundle install 出现错误

Leeyiing的专栏 1382

Ruby on Rails中安装分页插件will_paginate

  基本步骤 1、安装will_paginate:编辑GemFile,添加一行:gem ‘will_paginate’然后执行: $ bundle install   2、修改config/environment.rb文件      在config/environment.rb 文件的最后添加         require 'will_paginate'   3、选择你所要加...

John 227

rails 分页插件will_paginate ajax 实现

[code="java"] class AjaxLinkRenderer < WillPaginate::LinkRenderer def page_link_or_span(page, span_class = 'current', text = nil) text ||= page.to_s classnames = Array[*span_cla...

从心开始,重新开始 172

Rails分页plugin之will_paginate

搜索结果的分页显示是一个常用功能,实现方式有很多中,rails也内建了对分页的支持,但是rails2.0将去掉分页组件,将分页功能交给plugin去实现,这里通过一个简单的例子展示如何使用最流行的rails分页plugin -- will_paginate.1.创建rails工程及数据库 &lt;P style="FONT-WEI......

keyword 165

关于rails插件will_paginate的配置用法

http://selfcontroller.iteye.com/blog/941340   rails的分页插件will_paginate     在最近的项目中,用到了rails的分页插件will_paginate  因为是第一次使用这个插件,所以不甚了解,就在网上google 了一阵子,看了看相关的说明,明白了大概,在此记录下来,以备忘记。       下面我就来讲解一下关于这个...

java-admin 198

rails3插件 will_paginate介绍

will_paginate是一个非常好用的分页插件,可用于Ruby on Rails, Sinatra, Merb, DataMapper Sequel。 源代码地址: https://github.com/mislav/will_paginate 这里讲下rails3里面的基本用法 1. 安装 在gemfile里面加上如下语句。然后运行bundle install,会自动安

Grant的专栏 2550

如何向Ruby on Rails 分页插件 will_paginate 的链接插入其它参数

(适用3.0版will_paginate) WillPaginate是RoR里很方便的一个分页用的gem,例如在控制器里面写 @posts = Post.paginate(:page => params[:page]) 然后在视图里面写 will_paginate @posts %> 就可以自动给Post对象分页显示了。 不过如果你想给一个通过搜索表单返回的搜

Tangramor的专栏 1026
上一篇: 拥有了自己的博客,很高兴
下一篇: iReport 和 Jasperreport 整合开发 WEB 报表向导(一)
qiangzi
博客等级 码龄25年 1粉丝 16原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值