使用NetSuite BFO PDF报告实施的页面没有中断

时间:2017-04-20 22:04:50

标签: css xml pdf netsuite bfo

我试图修改现有的XML模板,以便与NetSuite的BFO PDF报告生成器实现一起使用。基本结构是一个包含两行和两列的表,其中第一行执行列合并。在第二行中,一列填充数据,另一列填充图像。图像很小,显示适合第一页。但是,数据列提供了不同数量的信息,并且一些信息以HTML格式提供(例如无序列表)。问题是,有时会有很多数据,并且它会在没有分页符的情况下运行。在某些情况下,我能够重构数据或执行一些神奇的技巧,以减小大小或中断第二页的块添加力。但是,在无序列表的情况下,我无法做任何事情。

我尝试在 TR 标记周围强制使用 TBODY 标记,尝试强制使用page-break-inside属性。似乎没什么用。例如,这是我得到的长列表:

enter image description here

您可以看到内容与页脚重叠的方式。 这就是我对所讨论的表格行的看法:

<tbody page-break-inside="auto">
    <tr style="border-top:4px solid; padding-bottom:10px;" page-break-inside="auto">

内容也封装在 DIV 标记中:

<div id="itemDetails" style="min-width: 0px; max-width:545px;">

使用此特定示例,源记录中有两个内容字段,包含HTML格式的无序列表,并且都没有应用任何样式。这里是较小的源块(恰好是从显示页面的底部切掉):

<ul>
  <li>All the Advantages of Altivar 31 Drive</li>
  <li>Excellent Resistance to Harsh Environments (50° C)</li>
  <li>Coated Cards as Standard (IEC 60721-3-3 Classes 3c2 and 3s2)</li>
  <li>Excellent Resistance to Power Supply and Motor Interference</li>
  <li>0.25 HP to 20 HP</li>
  <li>Single-Phase 200 V to 240 V, Three-Phase 200 V to 240 V, Three-Phase 380 V to 500 V, Three-Phase 525 V to 600 V</li>
  <li>Integrated Class 2 Emc Filter for Radiated and Conducted Emissions</li>
  <li>Din Rail Mounting</li>
</ul>

有关什么可能有助于将此数据分页的任何建议?我觉得这是一个我没想过的明显的解决方案。

1 个答案:

答案 0 :(得分:0)

在尝试过去一周解决相同的问题之后,如果列表中的信息长于单个页面上的信息,我决定在列出信息时进行分页。 OP的评论指出了我的方向 - 您需要使用/省略嵌套元素将其拉下来。

如果我要显示的数据长度小于单个页面上的数据长度,则我使用divpage-break-inside: avoid;。否则我省略div并只使用表格 - 这允许表格行分成多个页面。

对于以下示例,我的主数据对象是searchResults。它包含valueArr的属性,这是我需要在打印输出中显示的哈希数组。对于此类打印输出,我将styleObj.maxCoilsPerPage设置为30;您需要将此更改为适合您案例中单个页面的行数。

CSS片段:

.nopagebreak {
    page-break-inside: avoid;
}

HTML片段:

<#list searchResults.valueArr as item>
    <#if (item.valueArr?size lte styleObj.maxCoilsPerPage?number)>
        <div class="nopagebreak">
    </#if>
        <table>
            <tr>
                <td width="70%">${item.itemName}</td>
                ...other table data...
        </table>
    <#if (item.valueArr?size lte styleObj.maxCoilsPerPage?number)>
        </div>
    </#if>
</#list>