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

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

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

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方法也要把这个名称作为参数传入,这个就比较奇怪,只有一个页面配置方案,这个名字有什么用呢?

时间: 2024-10-08 20:04:28

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

PowerShell_零基础自学课程_6_PS中获取帮助信息详解、管道、格式化输

前些文章陆续的说了一些关于这些主题,但是讨论的都不够深入,今天我们深入的了解一下获取帮助信息.管道以及格式化输出的内容. 一.获取帮助信息 在PS中获取帮助信息,最常用的有: -? .get-command和get-help.这三者获取的信息不是完全一致的,并且由于get-command和get-help是cmdlet:因此具有很多实用 的参数来帮助我们获取我们想要的信息. 1.1  -? 参数 如果我们知道某个cmdlet的拼写,但是不知道他的用户,那么最快速的方法就是用:-? 参数. 例如:

从资源文件中获取Bitmap

从资源文件中获取Bitmap: [1]先获取Resource,然后可以通过资源ID获取Drawable Drawable d = r.getDrawable(R.drawable.xxx)); [2]通过资源ID获取资源文件的数据流,再获取Bitmap InputStream is = r.openRawResource(R.drawable.xxx); Bitmap bitmap ; ①使用BitmapDrawable: BitmapDrawable bd = new BitmapDrawab

las点转为Shapefile文件,获取高程信息

将LiDAR点文件转换为Shapefile文件,方便ArcGIS9.3版本操作 const char *pSrcFileName = "D:\\LidarTestData\\1.las"; std::ifstream ifs;ifs.open(pSrcFileName, std::ios::in | std::ios::binary); if(ifs == NULL) { cout<<"null"<<endl; } liblas::Reade

明解C语言,练习13-3,从文件中读入个人信息,按身高排序后显示

#include <stdio.h> #define NUMBER 6 #define F_PATH "D:\\C_C++\\ec13-3\\hw.dat" typedef struct { char name[20]; int height; float weight; } student; void swap(student *x,student *y) { student tmp = *x; *x = *y; *y = tmp; } void sort(student

objective-c中如何从UIImage中获取像素信息

翻译自Obtaining pixel data from a UIImage UIImage是我们在ios中非常熟悉的数据结构了,用它来存储图片非常方便.在OpenCV类库中,使用是另外的数据结构来存储图片,这时,我们就面临一个问题:如何才能把UIImage装换为其他类库也能识别的数据结构呢? 尽管不同的图片处理类库有不同的数据结构来处理图片,但是有一种结构是被所有的图片处理类库所识别的,那就是raw格式,也称之为原生格式.在raw格式中,每个像素通过一个unsigned byte的数组来表示,

[Android Pro] 查看 keystore文件的签名信息 和 检查apk文件中的签名信息

1: 查看 keystore文件的签名信息 keytool -list -v -keystore keystoreName -storepass keystorePassword 2: 检查apk文件中的签名信息 解出apk中RSA文件,然后用keytool即可查看签名信息: keytool -printcert -file ~/test/CERT.RSA

javascript 在js文件中获取路径

如果在*.js文件中获取当自己当前的路径是很重要的. 举个例子,如果一个css文件中引用图片,如background-img: url('./Images/bg.png').那么图片的路径,是相对于css文件而言的. 但是,如果我们再js文件中引用图片,如img.src = './images/bg.png';  但是,图片却不是根据js的相对路径的.而是根据(引用该js)的html的相对路径来决定的.这显然不合理. 所以如果我们能获取js文件的绝对路径的话,就会好很多.譬如 img.src =

第二章 从键盘或文件中获取标准输入:read命令

第二章 从键盘或文件中获取标准输入:read命令 read命令 从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合.该命令可以一次读多个变量的值,变量和输入的值都需要使用空格隔开.在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY 语法 read (选项) (参数) 选项: ? -p 指定读取值时候的提示符 ? -t 指定读取值时候等待的时间(秒) 参数: ? 变量 :指定读取值得变量名 查看变量值: echo $变量名 printf $变量名 注

python进阶四(类的继承)【4-5 python中获取对象信息】

python中获取对象信息 拿到一个变量,除了用 isinstance() 判断它是否是某种类型的实例外,还有没有别的方法获取到更多的信息呢? 例如,已有定义: 1 class Person(object): 2 def __init__(self, name, gender): 3 self.name = name 4 self.gender = gender 5 6 class Student(Person): 7 def __init__(self, name, gender, score