我在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)
答案 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>
有效,你知道为什么......