birt导出html,从BIRT报表文件中获取页面设置信息(页边距、纸张大小、输出方向)的方法_html/css_WEB-ITnose...

5268f80b9b1e01f982625ef6fac83ca1.png

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

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

1428d0e076c3959ab11d28a39bc84fab.png

5268f80b9b1e01f982625ef6fac83ca1.png

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值