0

テーブル データを PDF にレンダリングするビジネス要件があります。要件は、表の内容がヘッダー/フッターを含めて 1 ページを超えてはならないということです。テーブルの各行の高さが異なる場合があるため、出力する行数を制限するだけでは簡単ではありません。現在の仕組みは、テーブルの内容が、テーブルをレンダリングするために必要な数のページにスピルオーバーすることです。

テーブルの出力を 1 ページに制限する方法を知っている人はいますか? ところで、私は xsl と xsl-fo にはかなり慣れていません。

どうもありがとう!

4

1 に答える 1

1

オーバーフローを遮断したいだけの場合は、明示的に何を望んでいるかを述べることなく、いくつかの方法があります。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>
于 2013-08-24T17:28:18.957 に答える