8

我正在 ColdFusion 中创建动态 PDF,但遇到“分页符”问题。有问题的页面可能有 1 条记录,或多达 60 条以上的记录。每条记录显示在表格的 2 行中。一些返回的记录在页面之间拆分(第一行在第一页的末尾,第二行是下一个的顶行)。

显示的 HTML 中的示例记录:

<tr>
  <td>Title</td><td>Price</td>
  <td colspan="2">Description</td>
</tr>

根据客户请求,我试图每页显示 =< 9 条记录

这是我尝试过的一个简化示例:

<cfdocument format="PDF">
<cfoutput query = "sqllookup">
<cfset loopcount = loopcount + 1>
<cfif loopcount EQ '9'>
 <cfdocumentitem type="pagebreak" />
<cfelse>
<tr>
  <td>#Title#</td><td>#Price#</td>
  <td colspan="2">#Description#</td>
</tr>
</cfif>
</cfoutput>
</cfdocument>

这不起作用,(它只隐藏第 9 条记录)。我尝试了几种不同的想法,目前我很困惑。我在看东西吗?

提前致谢。

ColdFusion MX 7。(我还针对文本截断问题运行了热修复程序 。http: //kb2.adobe.com/cps/402/kb402093.html

4

4 回答 4

11

您正在隐藏第 9 条记录,因为您在显示它和显示它之间进行选择:

if 9th record
    break page
else
    show record
end if

你想要的更像是:

<cfoutput query = "sqllookup">
    <!--- this is the 9th row, because 9 mod 9 is 0 --->
    <cfif not sqllookup.currentrow mod 9>
        <cfdocumentitem type="pagebreak" />
    </cfif>
    <tr>
        <td>#Title#</td><td>#Price#</td>
        <td colspan="2">#Description#</td>
    </tr>
</cfoutput>
于 2010-01-22T00:53:32.500 回答
1

在断断续续地解决这个问题几个月后,我发现td用 a div(ie. <tr><td><div>Cell Contents</div></td></tr>) 包装 a 的内容可以防止在行内出现分页符。使用此设置,通常会在页面之间拆分行的分页符将改为落在行之前,在第一页的末尾创建一点额外的空白并将该行放置在下一页的开头。

请注意具有多个单元格的行:单个 td 嵌套 div 足以导致整行出现上述行为。

<tr>
    <td>Blah blah blah blah blah</td>
    <td>Gnar gnar gnar gnar gnar</td>
    <td><div>Soda POP soda POP soda POP</div></td>    <!--- the fix --->
    <td>Stellar!</td>
</tr>
于 2012-05-17T07:59:24.430 回答
0

尝试将 a 添加style="page-break-inside: avoid;"到您不想在 2 页之间拆分的任何元素。

例如,

<tr style="page-break-inside: avoid;">
   <td>#Title#</td><td>#Price#</td>
   <td colspan="2">#Description#</td>
</tr>
于 2010-01-21T21:06:56.937 回答
0

对我来说,在尝试了所有技巧和论坛提示等之后 - 在 cf8 中用于较大代码块(包括图像、表格、div 块等)的唯一方法是:

  • <div>...</div>

  • <br>但是在新行(在代码中)之后的超级简单,例如

    <div> ... your stuff ... </div> <br>

这有效,地狱知道为什么......

于 2017-04-28T09:12:06.680 回答