1

我有一个包含三列的表格,我试图让一些长段落从第一列动态流入第二列,然后再流入第三列。目前,当第一列溢出而不是移动到第二列时,该表将在下一页继续,因此我得到几页仅填充一列的数据。我怎样才能解决这个问题?这是我的代码(我在其中编辑了细节),其中 text1-text8 是文本的动态段落:

<fo:table table-layout="fixed" width="100%" border-collapse="collapse">
    <fo:table-column column-width="33.333%" column-number="1"/>
    <fo:table-column column-width="33.333%" column-number="2"/>
    <fo:table-column column-width="33.333%" column-number="3"/>
    <fo:table-body>
        <fo:table-row>
            <fo:table-cell padding="2pt">
                <fo:block>
                    <fo:inline font-weight="bold" font-size="10pt">TEXT</fo:inline>
                </fo:block>
                <fo:block font-weight="bold" font-size="10pt">TEXT</fo:block>
                <fo:block font-weight="bold" font-size="10pt">TEXT</fo:block>
                <fo:block font-weight="bold" font-size="10pt">
                    <xsl:value-of select="@day"/>
                    <xsl:text> </xsl:text>
                    <xsl:value-of select="@month"/>
                    <xsl:text> </xsl:text>
                    <xsl:value-of select="@year"/>
                    <xsl:text> </xsl:text>
                </fo:block>
            </fo:table-cell>
            <fo:table-cell padding="2pt">
                <fo:block text-align="right" font-size="14pt"> *</fo:block>
            </fo:table-cell>
            <fo:table-cell padding="2pt">
                <fo:block>
                    <fo:inline font-weight="bold" font-size="14pt">TEXT</fo:inline>
                    <fo:inline font-weight="bold" font-size="14pt">
                        <xsl:value-of select="@data"/>
                    </fo:inline>
                </fo:block>
                <fo:block>&#x00A0;</fo:block>
                <fo:block>&#x00A0;</fo:block>
                <fo:block>
                    <fo:inline font-weight="bold" font-size="12pt">TEXT</fo:inline>
                    <fo:inline font-weight="bold" font-size="12pt">
                        <xsl:value-of select="@day"/>
                        <xsl:text> </xsl:text>
                        <xsl:value-of select="@month"/>
                        <xsl:text> </xsl:text>
                        <xsl:value-of select="@year"/>
                    </fo:inline>
                </fo:block>
            </fo:table-cell>
        </fo:table-row>

        <fo:table-row height="18px">
            <fo:table-cell padding="2pt">
                <fo:block/>
            </fo:table-cell>
            <fo:table-cell padding="2pt">
                <fo:block/>
            </fo:table-cell>
            <fo:table-cell padding="2pt">
                <fo:block/>
            </fo:table-cell>
        </fo:table-row>

        <fo:table-row>
            <fo:table-cell padding="2pt" number-columns-spanned="3">
                <fo:block text-align="center" font-size="12pt" font-weight="bold">
                    <xsl:value-of select="data"/>
                </fo:block>
            </fo:table-cell>
        </fo:table-row>

        <fo:table-row>
            <fo:table-cell padding="2pt">
                <fo:block/>
            </fo:table-cell>
            <fo:table-cell padding="2pt">
                <fo:block/>
            </fo:table-cell>
            <fo:table-cell padding="2pt">
                <fo:block/>
            </fo:table-cell>
        </fo:table-row>

        <fo:table-row>
            <fo:table-cell padding="2pt" number-columns-spanned="3">
                <fo:block text-align="center" font-size="14pt" font-weight="bold">
                    <xsl:value-of select="moredata"/>
                </fo:block>
            </fo:table-cell>
        </fo:table-row>

        <fo:table-row>
            <fo:table-cell padding="2pt" number-columns-spanned="3">
                <fo:block>
                    <fo:leader leader-pattern="rule" leader-length="100%"/>
                </fo:block>
            </fo:table-cell>
        </fo:table-row>

        <fo:table-row>
            <fo:table-cell padding="2pt">
                <fo:block>
                    <fo:external-graphic content-width="217.429px" scaling="uniform">
                        <xsl:attribute name="src">
                            <xsl:text>url("</xsl:text>
                            <xsl:value-of select="image"/>
                            <xsl:text>.png")</xsl:text>
                        </xsl:attribute>
                    </fo:external-graphic>
                </fo:block>
                <fo:block>
                    <fo:leader leader-pattern="rule" leader-length="100%"/>
                    <fo:inline font-size="10pt" font-weight="bold">TEXT</fo:inline>
                    <fo:inline font-size="10pt" fo:font-weight="normal">
                        <xsl:value-of select="text1"/>
                    </fo:inline>
                </fo:block>
                <fo:block/>
                <fo:block>
                    <fo:inline font-size="10pt" font-weight="bold">TEXT</fo:inline>
                    <fo:inline font-size="10pt">
                        <xsl:value-of select="text2"/>
                    </fo:inline>
                </fo:block>
                <fo:block/>
                <fo:block>
                    <fo:inline font-weight="bold" font-size="10pt">TEXT</fo:inline>
                    <fo:inline font-size="10pt">
                        <xsl:value-of select="text3"/>
                    </fo:inline>
                </fo:block>
                <fo:block>
                    <fo:inline font-size="10pt" font-weight="bold">TEXT</fo:inline>
                    <fo:inline font-size="10pt">
                        <xsl:value-of select="text4"/>
                    </fo:inline>
                </fo:block>
                <fo:block>
                    <fo:inline font-size="10pt" font-weight="bold">TEXT</fo:inline>
                    <fo:inline font-size="10pt">
                        <xsl:value-of select="text5"/>
                    </fo:inline>
                </fo:block>
                <fo:block>&#x00A0;</fo:block>
                <fo:block>
                    <fo:inline font-size="10pt" font-weight="bold">TEXT</fo:inline>
                    <fo:inline font-size="10pt">
                        <xsl:value-of select="text6"/>
                    </fo:inline>
                </fo:block>
                <fo:block>&#x00A0;</fo:block>
                <fo:block>
                    <fo:inline font-size="10pt" font-weight="bold">TEXT</fo:inline>
                    <fo:inline font-size="10pt">
                        <xsl:value-of select="text7"/>
                    </fo:inline>
                </fo:block>
                <fo:block>&#x00A0;</fo:block>
                <fo:block>
                    <fo:inline font-size="10pt" font-weight="bold">TEXT</fo:inline>
                    <fo:inline font-size="10pt">
                        <xsl:value-of select="text8"/>
                    </fo:inline>
                </fo:block>
            </fo:table-cell>
        </fo:table-row>

        <fo:table-row>
            <fo:table-cell padding="2pt" number-columns-spanned="3">
                <fo:block>
                    <fo:leader leader-pattern="rule" leader-length="100%"/>
                </fo:block>
            </fo:table-cell>
        </fo:table-row>
    </fo:table-body>
</fo:table>
4

3 回答 3

0

与 HTML 一样,XSL-FO 中的表格用于表格数据。您想在页面正文中使用列以使文本继续:

    <fo:simple-page-master master-name="blarg">
        <fo:region-body column-count="3" column-gap="0.5in"/>
    </fo:simple-page-master>
于 2009-11-14T00:15:25.173 回答
0

要使文本包含列,您需要指定正文以包含列。然后<fo:block span=all>用于需要跨越所有列的元素。

对于您的文档,最好为需要列的部分创建单独的 simple-page-master,以最大限度地减少将元素设置为跨越所有列的需要。

于 2009-11-17T21:42:56.470 回答
0

您可以使用

<fo:simple-page-master master-name="blarg">
    <fo:region-body column-count="3" column-gap="0.5in"/>
</fo:simple-page-master>

主要fo:flow有以下内容:

<fo:block span="all>Some text that will span across all columns</fo:block>
<fo:block>some code that will flow in 3 columns</fo:block>
<fo:block span="all>Some text that will (again) span across all columns</fo:block>

如果您在同一页面上同时需要 2 列和 3 列,您将需要来自供应商之一的扩展。如果您需要,请告诉我,我会尽力为您找到。

于 2010-01-16T17:51:24.777 回答