2014-07-03 71 views
1

我有以下情况:我使用cfdocument标记创建PDF,但文档值由其他一些cf函数生成。现在,我需要在特定点处进行一些分页,但从逻辑上讲,它不会与cfdocumentitem(pagebreak)标记一起工作,因为它不嵌套在cfdocument标记中。我想,以纪念我需要这些pagebreaks与特定字符串的点,并与cfdocumentitem标签在某种程度上取代他们..但预期它不工作..ColdFusion:用cfdocumentitem标记替换字符串

<some function> 
    <table>blablahtml</table> 

    <cfif pdfreport>markedforpagebreak</cfif> 

    <table>blablahtml</table> 
    . 
    . 
    . 
</some function> 

<other function> 
    <cfdocument> 
    #replace(dashboardHTML,"markedforpagebreak","<cfdocumentitem type='pagebreak'/>","all")# 
    </cfdocument> 
</other function> 

我也看了evalAtPrint属性,但它任何人都不能解决我的问题吗? 谢谢=)

+0

我的想法是cfsavecontent。 –

+0

你的代码在做什么?你在你的PDF文档中看到字符串''吗? –

+0

@DanBracuk dashboardHTML是我称之为“<一些功能>” – noah

回答

3

我不认为你可以用replace来做到这一点。

我们使用特殊字符来表示分页符。然后将该内容视为一个列表,将此字符作为分隔符。然后遍历“列表”,并为循环的每次迭代显示文本块,然后插入cfdocumentitem标记,例如

<cfdocument> 
<cfset numPageBreaks = listlen(email_message_text,'¶') /> 
    <cfloop from="1" to="#numPageBreaks#" index="thisPageBreak"> 
     #listgetat(email_message_text,thisPageBreak,'¶')# 
     <cfif thisPageBreak lt numPageBreaks> 
     <cfdocumentitem type="pagebreak" /> 
     </cfif> 
    </cfloop> 
</cfdocument> 
+0

这是一个非常不错的主意,但遗憾的是它仍然无法正常工作..现在specialcharacter显示而不是分页符.. – noah

+0

为我们工作......第一次尝试一个非常简单的分隔符,以排除任何编码问题。 (例如星号)。然后检查numPageBreaks是否给你预期的值。如果是这样,这应该工作。 –

+0

哎哟..我做了一个可怕的错误。我有一个替换之前影响到一些其他的东西,我没有新的内容保存到一个变量..所以我用旧的......多谢合作! – noah