文档章节

从BIRT报表文件中获取页面设置信息(页边距、纸张大小、输出方向)的方法

李玉珏
 李玉珏
发布于 2015/02/27 12:42
字数 673
阅读 2154
收藏 2
点赞 0
评论 0

        报表打印时,尤其是套打的报表,页面设置信息非常重要,比如页边距,纸张大小,输出方向等,而且每个报表的相关参数有可能不同,因此相关参数从具体报表中获取是一个非常正常而且合理的想法。

        如果采用BIRT作为报表的开发工具,报表设计器负责报表的制作,BIRT运行时负责处理报表文件,对于浏览器来说,BIRT后端输出的是网页,并不包含页面设置相关信息,浏览器有自己的打印设置选项,也不会从网页中读取,但是报表设计器在报表设计时提供页面设置信息的设置界面,因此我们需要通过运行时API手工写代码从具体报表中获取页面设置信息,然后再通过其他方式将参数传递给打印机(操作打印机不在本文讨论范围内),本文通过BIRT的源代码的研究,提供相关的样例代码。

        BIRT报表设计器的页面设置信息在主页选项卡所对应的属性面板中体现,不再赘述,直接上代码:

IReportEngine birtEngine = ...;
Map moduleOptions = new HashMap();
moduleOptions.put(IModuleOption.RESOURCE_FOLDER_KEY,sc.getRealPath("/"));
IReportRunnable runnable = birtEngine.openReportDesign(reportFileName,null,moduleOptions);

IMasterPage  simpleMasterPage = runnable.getDesignInstance().getReport().getMasterPage("Simple MasterPage");
String pageType =(String) simpleMasterPage.getUserProperty("type");//纸张类型
Double height = 0.0;
Double width =0.0;
//如果是自定义纸张类型,需要获取纸张的宽和高
if("custom".equalsIgnoreCase(pageType)){
    DimensionValue heightDV  = (DimensionValue) simpleMasterPage.getUserProperty("height");
    DimensionValue widthDV  = (DimensionValue) simpleMasterPage.getUserProperty("width");
    height = heightDV.getMeasure();
    width  = widthDV.getMeasure();
}
String orientation = (String) simpleMasterPage.getUserProperty("orientation");//打印输出方向 landscape:横向,portrait:纵向

DimensionValue topMarginDV = (DimensionValue)simpleMasterPage.getUserProperty("topMargin");
double topMargin = topMarginDV.getMeasure();//上边距
String unit = topMarginDV.getUnits();//单位

        这里面有一个感觉比较奇怪的地方,就是主页的属性编辑器中有一个名称,这个名称可以修改,默认为Simple MasterPage,如果要获取这个页面配置信息,getMasterPage方法也要把这个名称作为参数传入,这个就比较奇怪,只有一个页面配置方案,这个名字有什么用呢?



© 著作权归作者所有

共有 人打赏支持
李玉珏

李玉珏

粉丝 268
博文 57
码字总数 92115
作品 0
沈阳
技术主管
finereport普通报表的移动端自适应方案

移动端报表呈现,首先要求的是页面随手机屏幕大小自动放缩(自适应),下面给出一个普通报表中的finereport移动端自适应方案,适用于finereport 7.1之前的版本。 首先,了解一下当前我们可以...

九月你好123
2015/07/30
0
0
专业的web打印插件

Lodop是什么?参考官方网站:http://www.lodop.net/ 有人说她是Web打印控件,因为她能打印、在浏览器中以插件的形式出现,用简单一行语句就把整个网页打印出来; 有人说她是打印编程接口,因...

天才小龙
01/05
0
0
birt runtime 报表接口(1)

当启动runtime项目后我们就可以使用url去访问项目了如: http://localhost:8080/birt/frameset?report=blank.rptdesign 如上是一个frameset模式,并通过report指定了要展示的报表。 先说bir...

Canaan_
2016/02/14
48
0
项目经验总结-Eclipse图表工具Birt的使用技巧(二)

作为Eclipse图表工具Birt的使用技巧(一)的后续,上一篇主要说明了Birt报表创建和使用的基本步骤和过程,本文旨在介绍一些常用的技巧,都是比较实用而且经过我本人实践可行的,希望能给需要的人带...

顽Shi
2014/01/21
0
0
Web系统页面打印技术实现与分析

1 Web页面打印概述 应用WEB化,不论对开发商,还是对用户来说,实在是一种很经济的选择,因为基于WEB的应用,客户端的规则很简单,容易学习,容易维护,容易发布。在WEB系统中,打印的确是个...

程明卫
2011/09/13
0
1
在团队中用 BIRT 进行报表开发

原贴地址:http://www.ibm.com/developerworks/cn/opensource/os-cn-eclipse-birtinteam/index.html 在团队中用 BIRT 进行报表开发 本文主要介绍如何在 BIRT 中创建,使用库( Library )和模...

一堆BUG
2012/02/28
0
0
web打印的几种实现方法(转载)

web打印的几种实现方法(转载) web打印,web打印控件的三种实现方法 做管理系统的时候,打印一直是个棘手的问题,做B/S的系统这个问题就更加突出了!下面举出三种常用的web打印处理方式 1、...

什么是程序员
2015/09/18
1K
0
Fastreport.Net用户手册:报表页属性

每一张报表页都可以有其特有的设定,例如页面尺寸,方向(横向打印或纵向打印),外边距,报表列,报表页来源等。报表模板包含多张不同定位与纸张尺寸的报表页。页面设置窗口可以通过点击按钮...

鸟栖沙岩
2016/09/05
21
0
Birt报表

birt报表 java操作生成步骤 1、获取birt引擎配置 2、创建报表引擎 3、打开当前要展现的报表文件(.rptdesign结尾报表文件) 4、获取页面传参数,并给报表参数赋值 5、创建生成报表任务 6、进...

卢瑶
2016/08/19
14
0
项目经验总结-Eclipse图表工具Birt的使用技巧(三)

因为篇幅所限,本篇承接上一篇Eclipse图表工具Birt的使用技巧(二)继续介绍Birt的小技巧. 4. 公共数据源 项目制作中,多个报表文件可能需要使用同一个DataSet,Cube,DataSource这些东西,如果为每...

顽Shi
2014/01/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

rabbitmq学习记录(六)交换机Exchange-direct

实现功能:一条消息发送给多个消费者 交换机模式:direct 相比于之前的fanout模式,可以进一步的筛选获取消息的消费者。 fanout模式下,只要消费者监听的队列,已经与接收生产者消息的交换机...

人觉非常君
16分钟前
0
0
Java 之 枚举

Java 中声明的枚举类,均是 java.lang.Enum 类的子类,Enun 类中的常用方法有: name() 返回枚举对象名称 ordinal() 返回枚举对象下标 valueOf(Class enumType, String name) 转换枚举对象 ...

绝世武神
25分钟前
0
0
使用爬虫实现代理IP池之放弃篇

啥叫代理IP以及代理IP池 概念上的东西网上搜索一下就好了,这里简单科普一下(大部分会读这篇文章的人,基本是不需要我来科普的),白话说就是能联网并提供代理访问互联网的服务器,它提供的...

一别丶经年
41分钟前
0
0
sqoop导入数据到Base并同步hive与impala

使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 基础环境 Sqool和Hive、HBase简介 Sqoop Hive HBase 测试Sqoop 使用Sqoop从MySQL导入数据到Hive 使用复杂SQL 调整Hive数据类型 不断更新 ...

hblt-j
今天
0
0
Dart 服务端开发 文件上传

clent端使用angular组件 upload_component.html form id="myForm" method="POST" enctype="multipart/form-data"> <input type="file" name="fileData"> <!-- file field --></form>......

scooplol
今天
0
0
apache和tomcat同时开启,乱码问题

tomcat和apache同时开启,会走apache的转发,执行的是AJP/1.3协议。所以在tomcat的配置文件server中, <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" useBodyEncodingForU......

Kefy
今天
0
0
使用ssh-keygen和ssh-copy-id三步实现SSH无密码登录 和ssh常用命令

ssh-keygen 产生公钥与私钥对. ssh-copy-id 将本机的公钥复制到远程机器的authorized_keys文件中,ssh-copy-id也能让你有到远程机器的home, ~./ssh , 和 ~/.ssh/authorized_keys的权利 第一步...

xtof
今天
0
0
orcale 查询表结构

SELECT t.table_name, t.colUMN_NAME, t.DATA_TYPE || '(' || t.DATA_LENGTH || ')', t1.COMMENTS FROM User_Tab_Cols t, User_Col_Comments t1WHERE t.table_name......

wertwang
今天
0
0
华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大

华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大!华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大! 在华为最新发布的nova 3手机上,抖音通过华为himedia SDK集成了60fps、超级...

华为终端开放实验室
今天
0
0
多 SSH Key 实现同一台服务器部署多 Git 仓库

本文以以下需求为背景,介绍详细的做法: 需在同一台服务器同时部署两个不同的 Github 仓库(对 Bitbucket 等 git 服务同样适用) root 用户可在远程登录 SSH 后附上预期的 SSH Key 进行 gi...

yeahlife
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部