为 NETSuite 的 PDF 模板中的表添加分页符

Adding page breaks to tables in PDF templates for NETSuite

SuiteBuilder Customisation Guide 的第 176/177 页,Oracle 解释了如何向模板中的表添加分页符。

给出的例子是:

<!-- start of item table in transaction -->
<#list record.item as item>
    <#if item_index==0> <!-- Header Definition -->
        <tr>
            <th>${item.field1@label}</th>
            <th>${item.long_text_field@label}</th>
            <th>${item.field2@label}</th>
            <!-- ... -->
        </tr>
    </#if>
    <#list item.long_text_field?split("<br />") as paragraph>
        <#if desc_index==0>
            <tr>
                <td>${item.field1}</td>
                <td>${paragraph}</td>
                <td>${item.field2}</td>
                <!-- ... -->
            </tr>
        <#else>
            <tr>
                <td></td>
                <td>${paragraph}</td>
                <td></td>
                <!-- ... -->
            </tr>
        </#if>
    </#list>
</#list>
<!-- end of item table in transaction -->

但是这会导致以下错误:

desc_index 一词似乎无法评估,此外,除此处外,该词未出现在任何其他 NETSuite 相关文档中。

这是 bug/typo/deprecated 代码吗?

这是示例中的错字。

Freemarker 中的列表索引是通过将列表名称与“_index”连接起来引用的。因此,在此示例中,desc_index 应替换为 paragraph_index.

他们似乎从列表名称为 'desc'(可能是 'description')的另一个片段改编了这个示例,但忽略了更新索引引用以匹配。

当然,您需要将 long_text_fieldfield1field2 更改为模板可用的真实字段,它才能工作。

正在解决您的问题标题...

您可以使用 <pbr> 标签添加实际的分页符。您还可以设置新的页面布局。有关详细信息,请参阅 BFO 文档。但是,您可能不想使用它来直接拆分 table,除非您有逻辑关闭并重新创建 table 数据的延续。 https://bfo.com/products/pdf/docs/userguide.pdf

分割 table 时,您想像 page-break-inside: avoid; 一样使用 CSS https://developer.mozilla.org/en-US/docs/Web/CSS/page-break-inside