Apache FOP-需要从第一页的中间开始创建多页表

时间:2016-05-24 06:27:44

标签: java pdf xslt oracle-adf apache-fop

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

...
</fo:block-container>
      <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-container width="17.40cm" top="10.30cm"
                          left="0.40cm" padding=".4mm" >
        <fo:block page-break-before="always">
        <fo:table border-top-style="solid" border-top-width="thick">
          <fo:table-body font-size="12pt" font-family="sans-serif">
            <fo:table-row border-bottom-style="solid" border-bottom-color="#000"
                          border-bottom-width="thick">
...

该表由一个fo:block封闭,然后封闭在一个fo:block-container中。 我包含了<fo:block page-break-before="always">来打破多个页面中的长表。但是在使用它时,表格从第2页开始,第一页上的剩余区域保持空白。

我希望我的表从前面的块容器之后的第一页开始。

2 个答案:

答案 0 :(得分:1)

您通过使用该属性指定您想要之前的分页符。只需远程使用page-break-before属性。

答案 1 :(得分:0)

我在您的模板中看到了一些影响表格放置和破坏的问题。

绝对定位的块

&#34;标题&#34;段落放置在绝对定位的块内:这意味着在处理过程中它们被取出正常流程,并且它们对后来的兄弟姐妹(see the XSL-FO recommendation)的布局没有影响。

解决方案:删除position="absolute" top="..." left="..."并改为使用空格/边距(请注意表格周围top上的leftfo:block-container属性没有效果,因为该块没有绝对定位)。您可以完全避免使用fo:block-container,并使用普通的fo:block元素。

page-break-before="always"元素上的属性fo:block具有在该块的内容之前放置分页符的效果,这正是您试图避免的内容

解决方案:删除break属性。

使用建议的更改标题和表格是正常内容流程的一部分,其内容会连续放置在页面中。