我正在使用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页开始,第一页上的剩余区域保持空白。
我希望我的表从前面的块容器之后的第一页开始。
答案 0 :(得分:1)
您通过使用该属性指定您想要之前的分页符。只需远程使用page-break-before属性。
答案 1 :(得分:0)
我在您的模板中看到了一些影响表格放置和破坏的问题。
&#34;标题&#34;段落放置在绝对定位的块内:这意味着在处理过程中它们被取出正常流程,并且它们对后来的兄弟姐妹(see the XSL-FO recommendation)的布局没有影响。
解决方案:删除position="absolute" top="..." left="..."
并改为使用空格/边距(请注意表格周围top
上的left
和fo:block-container
属性没有效果,因为该块没有绝对定位)。您可以完全避免使用fo:block-container
,并使用普通的fo:block
元素。
page-break-before="always"
元素上的属性fo:block
具有在该块的内容之前放置分页符的效果,这正是您试图避免的内容
解决方案:删除break属性。
使用建议的更改标题和表格是正常内容流程的一部分,其内容会连续放置在页面中。