XSL-FO表固定高度

时间:2012-06-13 11:37:04

标签: xsl-fo apache-fop

我尝试使用带有FOP的XSL-FO生成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>

1 个答案:

答案 0 :(得分:1)

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

  1. 在每张桌子的空间上记下你的笔记 页
  2. 计算可以适合的表格的行数 空间
  3. 在循环中为每个页面创建一个新表,提供数量 每个页面将保留的行
  4. 请记住,只能构建表格的标题 仅适用于第一页,其他页面的表必须 无头地建造