NetSuite Advanced PDF采购订单如何添加条款附录及设置分页
NetSuite Advanced PDF采购订单模板追加条款附录配置方案
核心分页(Page Break)实现逻辑
NetSuite Advanced PDF 基于BFO渲染引擎+Freemarker语法,分页控制靠标准CSS分页属性实现,不存在独立的专用分页标签,经过大量场景验证最稳定的写法是用空段落标签承载分页样式:
<p style="page-break-after: always; margin:0; padding:0; height:1px; line-height:0;"></p>
注意不要给这个分页标签设置
display:none或者0高度,否则渲染引擎会直接跳过分页指令;不要把分页标签放在浮动块、绝对定位块、表格行<tr>内部,会导致分页失效、布局错乱。
可行配置方案
方案1:直接在主模板内嵌条款(适合条款固定、极少更新的场景)
这是配置成本最低的方案,操作步骤如下:
- 先把原有PO表单的所有内容(表头、采购行明细表、合计栏、签字栏等)用一个块级元素完整包裹,确认主表单内容渲染正常、无串页问题
- 在主表单内容容器的闭合标签后,插入前面给出的分页代码,强制后续内容从新页面开始渲染
- 分页代码后直接追加2页左右的条款与条件内容即可,渲染引擎会自动根据内容长度完成后续分页,不需要手动给每一页插分页标签。如果有特殊要求(比如某类免责条款必须单独占页),只需要在对应段落的标签上加
style="page-break-before: always;"就能强制该段从新页开始 - 适配页眉页脚:如果不希望附录页显示PO主表单的专属表头(比如PO编号、供应商名称、收货地址这类只在表单页需要的内容),直接在页眉宏里加页码判断即可:
页脚默认会连续计算全文档页码,不需要额外调整,如果需要区分表单页和附录页的页码标识,同理用页码判断做区分即可。<#if .page_number lte 主表单总页数> <!-- 这里放原有PO表单的页眉内容 --> <#else> <p style="text-align:center;font-weight:bold;">采购订单条款与条件</p> </#if>
方案2:子模板引入条款(适合条款多模板复用、需要频繁更新的场景)
如果你的PO条款需要同时应用到请购单、入库单等其他单据模板,或者条款内容需要采购团队定期调整不想每次改主模板,用子模板引入的方式更易维护:
- 先单独创建一个Advanced PDF模板,只放条款内容,不需要配置PO专属的表头表尾,记录好这个模板的内部ID
- 如果条款内容是存在自定义记录/交易头自定义长文本字段里,直接在模板里通过字段取值即可,不需要单独做模板
- 回到PO主模板,在主表单内容末尾插入分页代码,之后用Freemarker的include指令引入条款模板/输出字段内容:
<!-- 分页代码 --> <p style="page-break-after: always; margin:0; padding:0; height:1px; line-height:0;"></p> <!-- 引入独立条款模板,替换成你自己的模板ID --> <#include "custtmpl_purchase_terms_template"> <!-- 如果是取自定义字段内容就用下面的写法 ${record.custbody_po_terms_content} --> - 这种方案后续更新条款只需要修改独立的条款模板/更新对应自定义记录的字段值,所有引用该条款的单据模板会自动同步,不会误改PO主表单的布局。
常见问题排查
- 分页失效:检查分页标签是否处于正常文档流,不要把分页标签放在表格内部、浮动元素内部,尽量放在和主表单容器同级的位置
- 附录内容串到主表单最后一页:给主表单的最后一个元素加
margin-bottom:20px;,避免主表单内容太贴页脚导致渲染引擎判断错误把后续内容挤到上一页 - 富文本条款格式错乱:存条款的长文本字段要开启“富文本”属性,不要直接粘贴从Word复制的带复杂嵌套格式的内容,先清掉冗余格式再粘贴,避免渲染兼容问题。
内容的提问来源于stack exchange,提问作者Morgan Wray
相关产品推荐
相关产品推荐

