pdfreplacecoldfusioncfdocument

ColdFusion: Replacing String with a cfdocumentitem tag


I have following situation: I create a PDF with the cfdocument tag but the documents value is generated by some other cf functions. Now I need some pagebreaks at specific points but it logically won't work with the cfdocumentitem (pagebreak) tag because it is not nested in a cfdocument tag. I tried to mark the points where I need these pagebreaks with a specific string and replace them somehow with the cfdocumentitem tag.. but as expected it doesn't work..

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

I also looked at evalAtPrint attribute but it doesn't work either.. so has anybody an idea to solve my problem? Thanks =)


Solution

  • I don't think you can do this with replace.

    We use a special character to denote pagebreaks. Then treat the content as a list, with this character as a delimiter. Then loop through the 'list', and for each iteration of the loop, display the chunk of text, and then insert the cfdocumentitem tag e.g.

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