BIRT从2.5.2迁移至4.9.0:首页母版页重复显示在所有页面头部
BIRT报表多母版页重复显示问题解决方案
问题场景
需创建包含两个母版页的报表:第一页应用FirstMasterPage,从第二页起所有页面应用SecondMasterPage。但当前FirstMasterPage的头部会在所有页面重复显示,已尝试调整repeatHeader、pageBreakInterval属性及重新绑定母版页,问题未解决。
现有报表配置
母版页定义
================== Master pages ======================= <page-setup> **<simple-master-page name="FirstMasterPage" id="2">** <property name="orientation">portrait</property> <property name="showHeaderOnFirst">true</property> <property name="showFooterOnLast">true</property> <page-header> <label id="171"> <property name="fontSize">14pt</property> <property name="textAlign">center</property> <text-property name="text">Portrait</text-property> </label> </page-header> </simple-master-page> **<simple-master-page name="SecondMasterPage" id="8">** <property name="orientation">landscape</property> <page-header> <label id="172"> <property name="fontSize">12pt</property> <property name="textAlign">center</property> <text-property name="text">Landscape</text-property> </label> </page-header> </simple-master-page> </page-setup>
表格布局
================== Table ======================= <body> <table name="myTableFirst" id="173"> **<property name="masterPage">FirstMasterPage</property>** <property name="pageBreakAfter">always</property> <property name="pageBreakBefore">auto</property> <property name="repeatHeader">false</property> <property name="pageBreakInterval">0</property> // some column details </table> **<table name="myTable" id="217"> **<property name="masterPage">SecondMasterPage</property>** <property name="pageBreakAfter">always</property> <property name="pageBreakBefore">auto</property> <property name="repeatHeader">true</property> <property name="pageBreakInterval">40</property>** // some column details </table>
使用依赖
org.eclipse.birt.runtime_4.9.0-20220315 org.eclipse.equinox.common_3.10.0.v20180412-1130 org.eclipse.equinox.registry_3.8.0.v20180426-1327 org.eclipse.core.runtime_3.14.0.v20180417-0825 org.eclipse.osgi --> 3.10.2.v20150203-1939 org.eclipse.datatools.connectivity.oda_3.6.1.201712071719 org.mozilla.javascript_1.7.5.v201504281450 org.apache.batik.css_1.7.0.v201011041433 org.apache.batik.util_1.7.0.v201011041433 com.lowagie.itext org.osgi.service.prefs
解决方案
- 检查全局默认母版页:确认报表根节点(
report标签)未设置masterPage属性,若存在会覆盖表格的自定义母版页绑定。 - 调整第二个表格的分页属性:将第二个表格的
pageBreakBefore改为always,强制其从新页面启动,确保加载SecondMasterPage。 - 移除冗余属性:删除
FirstMasterPage中的showHeaderOnFirst属性,该属性仅作用于报表默认母版页,自定义母版页无需此配置,易引发冲突。 - 验证容器继承关系:检查表格是否嵌套在网格(Grid)或其他容器中,若容器设置了母版页,会覆盖表格的配置,需确保容器未绑定错误的母版页。
- 清理报表缓存:BIRT可能缓存旧的母版页配置,重新生成报表或清理项目的缓存文件后再测试。
内容的提问来源于stack exchange,提问作者Kiran Kadam
相关产品推荐
相关产品推荐

