Apache FOP - Table 组件从第二页开始错位

Apache FOP - Table component getting misaligned from second page onwards

我使用的是 FOP 2.0 版。我的模板在第一页上有一些文本段落,之后有一个动态 table 和 n 行数。

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

下面是 FO 模板的相关部分,包含页面母版和初始 table 代码。

<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">

和 table 行在 header 之后以迭代方式继续。

对此行为的可能原因有何见解?

提前致谢。

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

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

您可能应该修改页面母版定义,以便在所有页面类型上具有相似的左右边距。