1

我正在尝试修改现有的 XML 模板以与 NetSuite 的 BFO PDF 报告生成器实现一起使用。基本结构是一个两行两列的表格,其中第一行进行列合并。在第二行中,一列填充数据,另一列填充图像。图像很小,显示适合第一页。但是,数据列提供了不同数量的信息,其中一些信息以 HTML 格式提供(例如无序列表)。问题是有时有很多数据并且它在没有分页符的情况下从页面运行。在某些情况下,我可以重组数据或执行一些魔术来减小大小或中断块添加第二页。但是,在无序列表之类的情况下,我无能为力。

我尝试在TR标签周围强制使用TBODY标签,尝试强制使用 page-break-inside 属性。似乎没有任何效果。例如,这是我从一长串列表中得到的:

在此处输入图像描述

您可以看到内容如何与页脚重叠。这就是我有问题的表格行:

<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>

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

4

1 回答 1

0

在过去一周尝试解决相同的问题后,如果列表中的信息比单个页面上的信息长,我决定在列出信息时进行分页。OP 的评论为我指明了这个方向——你需要使用/省略嵌套元素来实现它。

如果要显示的数据长度小于单个页面的长度,我将使用divwith 。page-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>
于 2018-05-15T14:06:10.257 回答