XSL:如何将表输出限制为一页

时间:2013-08-23 19:18:32

标签: xslt pdf

我有一个业务需求,我在PDF中呈现表数据。要求是表的内容不得超过一页,包括页眉/页脚。表格的每一行都可以在高度上变化,因此它不像仅限制输出的行数那么简单。它现在的工作原理是表格内容溢出到渲染表所需的页数。

有谁知道如何将表的输出限制为只有一页?顺便说一下,我对xsl和xsl-fo很新。

非常感谢!

1 个答案:

答案 0 :(得分:1)

如果你没有明确说明你想要什么,如果你只想切断溢出,你有几种方法。由于它只有一页,我根本不会打扰页眉/页脚区域。我会将所有内容放在绝对定位的块容器中,大小与您希望的大小相同。

对于“中间”一个,将表放在块容器中并在其上设置overflow =“hidden”。

我使用RenderX XEP和Apache FOP进行了测试,非常适合剪掉溢出。

像这样:

<fo:page-sequence master-reference="first">
    <fo:flow flow-name="xsl-region-body">
        <fo:block-container position="absolute" top="3in" left="1in" height="1in" width="7in" overflow="hidden" border="1pt solid black">
            <fo:block>
                <fo:table border="solid 1pt blue">
                    <fo:table-column column-number="1" column-width="1.25in"/>
                    <fo:table-column column-number="2" column-width="3in"/>
                    <fo:table-body>
                        <fo:table-row border="solid 1pt red">
                            <fo:table-cell >
                                <fo:block>1.25in</fo:block>
                            </fo:table-cell>
                            <fo:table-cell>
                                <fo:block>3in</fo:block>
                            </fo:table-cell>
                        </fo:table-row>
                        <fo:table-row>
                            <fo:table-cell>
                                <fo:block>1.25in</fo:block>
                            </fo:table-cell>
                            <fo:table-cell>
                                <fo:block>3in</fo:block>
                            </fo:table-cell>
                        </fo:table-row>
                        <fo:table-row>
                            <fo:table-cell>
                                <fo:block>1.25in</fo:block>
                            </fo:table-cell>
                            <fo:table-cell>
                                <fo:block>3in</fo:block>
                            </fo:table-cell>
                        </fo:table-row>
                        <fo:table-row>
                            <fo:table-cell>
                                <fo:block>1.25in</fo:block>
                            </fo:table-cell>
                            <fo:table-cell>
                                <fo:block>3in</fo:block>
                            </fo:table-cell>
                        </fo:table-row>
                        <fo:table-row>
                            <fo:table-cell>
                                <fo:block>1.25in</fo:block>
                            </fo:table-cell>
                            <fo:table-cell>
                                <fo:block>3in</fo:block>
                            </fo:table-cell>
                        </fo:table-row>
                        <fo:table-row>
                            <fo:table-cell>
                                <fo:block>1.25in</fo:block>
                            </fo:table-cell>
                            <fo:table-cell>
                                <fo:block>3in</fo:block>
                            </fo:table-cell>
                        </fo:table-row>
                        <fo:table-row>
                            <fo:table-cell>
                                <fo:block>1.25in</fo:block>
                            </fo:table-cell>
                            <fo:table-cell>
                                <fo:block>3in</fo:block>
                            </fo:table-cell>
                        </fo:table-row>
                        <fo:table-row>
                            <fo:table-cell>
                                <fo:block>1.25in</fo:block>
                            </fo:table-cell>
                            <fo:table-cell>
                                <fo:block>3in</fo:block>
                            </fo:table-cell>
                        </fo:table-row>
                        <fo:table-row>
                            <fo:table-cell>
                                <fo:block>1.25in</fo:block>
                            </fo:table-cell>
                            <fo:table-cell>
                                <fo:block>3in</fo:block>
                            </fo:table-cell>
                        </fo:table-row>
                    </fo:table-body>
                </fo:table>
            </fo:block>

        </fo:block-container>
    </fo:flow>
</fo:page-sequence>