COLDFUSION:cfdocument并强制进行分页

时间:2010-01-21 21:00:31

标签: pdf coldfusion page-break cfdocument

我在ColdFusion中创建动态PDF并遇到“pagebreak”问题。有问题的页面可能有1条记录,或最多60条记录。每条记录显示在一个表的两行中。一些返回的记录在页面之间分割(第一行位于第一页的末尾,第二行是下一行的顶行)。

显示的HTML中的示例记录:

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

根据客户请求,我正在尝试显示=&lt;每页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 个答案:

答案 0 :(得分:8)

您正在隐藏第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>

答案 1 :(得分:1)

在打开和关闭这个问题几个月之后,我发现用td({。div)包裹<tr><td><div>Cell Contents</div></td></tr>的内容会阻止页面在行内部。使用此设置,通常在页面之间拆分行的分页符将在行之前落入,在第一页的末尾创建一些额外的空格并将行放在行的开头下一页。

注意有多个单元格的行:单个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>

答案 2 :(得分:0)

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

例如,

<tr style="page-break-inside: avoid;">
   <td>#Title#</td><td>#Price#</td>
   <td colspan="2">#Description#</td>
</tr>

答案 3 :(得分:0)

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

  • 包装非分页符

    <div>...</div>

  • 但是在新行之后的超级简单<br>(在代码中) e.g。

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

有效,你知道为什么......