Apache FOP - 表组件从第二页开始未对齐

时间:2016-05-25 16:31:00

标签: java xslt apache-fop

我正在使用FOP 2.0版。我的模板在第一页上有一些文本段落,之后有一个包含n行的动态表。

问题是表格布局是完美的,直到生成的PDF文件的第一页上的行。但是当它在第二页上继续时,列会向右移动一些边距,最后一列变为不可见。对此有何见解可能是什么原因?

以下是FO模板与页面母版和初始表格代码的相关部分。

<fo:layout-master-set>
    <fo:simple-page-master master-name="first" margin-right="0.5cm"
                           margin-left="0.5cm" margin-bottom="0.5cm"
                           margin-top="0.75cm" page-width="21cm"
                           page-height="29.7cm">
      <fo:region-body></fo:region-body>
    </fo:simple-page-master>
    <fo:simple-page-master master-name="rest" margin-right="2.5cm"
                           margin-left="2.5cm" margin-bottom="2cm"
                           margin-top="1cm" page-width="21cm"
                           page-height="29.7cm">
      <fo:region-body></fo:region-body>
    </fo:simple-page-master>
    <fo:page-sequence-master master-name="psmA">
      <fo:repeatable-page-master-alternatives>
        <fo:conditional-page-master-reference master-reference="first"
                                              page-position="first"/>
        <fo:conditional-page-master-reference master-reference="rest"
                                              page-position="rest"/>
        <!-- recommended fallback procedure -->
        <fo:conditional-page-master-reference master-reference="rest"/>
      </fo:repeatable-page-master-alternatives>
    </fo:page-sequence-master>
  </fo:layout-master-set>
  <fo:page-sequence master-reference="psmA">
    <fo:flow flow-name="xsl-region-body">

 <fo:block-container height="0.5cm" width="7.40cm" top="8.80cm"
                          left="0.3cm" padding=".4mm" position="absolute">
        <fo:block text-align="start" space-after.optimum="3pt"
                  line-height="14pt" font-family="sans-serif" font-size="12pt">Header
                                                                               Options</fo:block>
      </fo:block-container>
      <fo:block-container border-style="solid" border-width=".5mm"
                          height="1.00cm" width="16.40cm" top="8.80cm"
                          left="3.40cm" padding=".4mm" position="absolute">
        <fo:block text-align="start" space-after.optimum="3pt"
                  line-height="14pt" font-family="sans-serif" font-size="12pt">$header.miscInfo</fo:block>
      </fo:block-container>

       <fo:block  margin-left="0.40cm" margin-top="10.30cm" padding=".4mm" >
        <fo:table border-top-style="solid" border-top-width="thick" >
        <fo:table-header text-align="center" >
        <fo:table-row border-bottom-style="solid" border-bottom-color="#000"
                          border-bottom-width="thick">
              <fo:table-cell padding-top="1mm" padding-bottom="1mm">

并且表行在标题之后以迭代方式继续。

对此有何见解可能是造成这种行为的原因?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您的文档有两种页面,由fo:simple-page-master元素定义:

  • 第一页是使用名为first的页面主页创建的,页面主页边距较小(左右两侧各0.5厘米)
  • 使用rest页面母版创建以下页面,其边距更宽(每个2.5厘米)

您应该修改页面主定义,使其在所有页面类型上具有相似的左右边距。