如何在生成pdf时处理大表数据并防止数据中断

时间:2019-05-15 12:54:24

标签: pdf-generation xsl-fo apache-fop

我的项目使用Apache-FOP版本0.20生成PDF。

现在我面临一个问题:我们有一张桌子,如果我在一个字段中添加太大的数据而不是生成新页面,则该字段下的数据将被截断。

如何在FOP中处理此问题?

现在我已将FOP更新为2.2版本,但分页符仍然无法正常工作

<Document><Page>以及使用的标记的示例:

 <xsl:template match="Document">
        <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
            <fo:layout-master-set>
                <fo:simple-page-master page-break-inside="avoid" font-family="Verdana" master-name="simpleA4" page-height="297mm" page-width="210mm" margin-top="10mm" margin-bottom="0mm" margin-left="25mm" margin-right="25mm">
                    <fo:region-body/>
                </fo:simple-page-master>
            </fo:layout-master-set>

            <xsl:apply-templates/>
        </fo:root>
    </xsl:template>

    <xsl:template match="Page">
        <fo:page-sequence master-reference="simpleA4">
            <xsl:if test="(@class) = 'page'">
                <xsl:attribute name="break-after">page</xsl:attribute>
            </xsl:if>
            <fo:flow flow-name="xsl-region-body">
                <xsl:apply-templates/>
            </fo:flow>
        </fo:page-sequence>
    </xsl:template>`

<xsl:template match="Table">
    <fo:block-container height="20cm" width="150mm" top="60mm" left="0mm" position="absolute">
        <fo:block font-size="8pt" font-family="Verdana">
            <fo:table table-layout="fixed" width="100%" >
                <fo:table-column column-width="51mm"/>
                <fo:table-column column-width="4mm"/>
                <fo:table-column column-width="proportional-column-width(1)"/>
                <fo:table-body>
                    <xsl:apply-templates/>
                </fo:table-body>
            </fo:table>
        </fo:block>
    </fo:block-container>
</xsl:template>

添加生成的FO以便更加清楚:

                空缺

            <References>
                <lbl></lbl>
                <div>Nouwens</div>
                <lbl>Vacnummer</lbl>
                <div>11</div>
                <lbl>Date</lbl>
                <div>7 juli 2006</div>
                <lbl>Page</lbl>
                <div>2/3</div>
            </References>

            <Vacancies>
                <tr>
                    <th>Function</th>
                    <td>
                        <empty/>
                    </td>
                    <td>
                        <empty/>
                    </td>
                </tr>
                <tr>
                    <td>
                        <lbl>Function</lbl>
                    </td>
                    <td>
                        <empty/>
                    </td>
                    <td>Test Vac 11</td>
                </tr>

                <tr>
                    <td>
                        <lbl>Reaction voor</lbl>
                    </td>
                    <td>
                        <empty/>
                    </td>
                    <td>7 july 2006</td>
                </tr>
            </Vacancies>

0 个答案:

没有答案