4

我正在尝试通过将 XSL-FO 与 FOP 结合使用来生成 pdf 文件。

我想显示一个固定高度的表格。该表可以放在几页上,我希望它在每一页上都具有相同的高度。

我什至无法在单个页面上为表格定义固定高度。

我已经尝试在桌子和桌子主体上设置高度、最小高度、最大高度,但似乎没有考虑任何内容。我也尝试过使用不同的 XSL-FO 处理器,但没有任何运气。

小样本:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <xsl:template match="/">
        <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
            <fo:layout-master-set>
                <fo:simple-page-master master-name="simpleA4" page-height="29.7cm" page-width="21cm" margin-top="1cm" margin-bottom="1cm" margin-left="2cm" margin-right="2cm">
                    <fo:region-body margin-bottom="20mm"/>
                    <fo:region-after extent="10mm"/>
                </fo:simple-page-master>
            </fo:layout-master-set>
            <fo:page-sequence master-reference="simpleA4">
                <fo:flow flow-name="xsl-region-body">
                    <fo:block>
                        <fo:table table-layout="fixed" width="100%" height="10cm" border-style="solid" border-width="0.02cm">
                            <fo:table-column column-width="20%"/>
                            <fo:table-column column-width="20%"/>
                            <fo:table-column column-width="60%"/>
                            <fo:table-body>
                                <fo:table-row>
                                    <fo:table-cell>
                                        <fo:block>Col1</fo:block>
                                    </fo:table-cell>
                                    <fo:table-cell>
                                        <fo:block>Col2</fo:block>
                                    </fo:table-cell>
                                    <fo:table-cell>
                                        <fo:block>Col3</fo:block>
                                    </fo:table-cell>
                                </fo:table-row>
                            </fo:table-body>
                        </fo:table>
                    </fo:block>
                </fo:flow>
            </fo:page-sequence>
        </fo:root>
    </xsl:template>
</xsl:stylesheet>
4

1 回答 1

2

FOP你需要<fo:table-cell单独工作,高度,字体大小......等。您需要执行以下操作:

  1. 记下您将为每一页的表格提供的空间
  2. 计算在那个空间可以装的表格行数
  3. 在循环中为每个页面创建一个新表,提供每个页面将包含的行数
  4. 请记住,表格的标题只会为第一页构建,其他页面的表格必须无头构建
于 2012-06-29T12:26:11.363 回答