ColdFusion: замена строки тегом cfdocumentitem

У меня следующая ситуация: я создаю PDF с тегом cfdocument, но значение документа генерируется некоторыми другими функциями cf. Теперь мне нужны некоторые разрывы страниц в определенных точках, но по логике он не будет работать с тегом cfdocumentitem (pagebreak), потому что он не вложен в тег cfdocument. Я попытался пометить точки, где мне нужны эти разрывы страниц, конкретной строкой и как-то заменить их тегом 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, но он тоже не работает.. так есть у кого-нибудь идея решить мою проблему? Спасибо =)

1 ответ

Решение

Я не думаю, что вы можете сделать это с заменой.

Мы используем специальный символ для обозначения разрывов страниц. Затем обработайте содержимое как список с этим символом в качестве разделителя. Затем выполните цикл по "списку", и для каждой итерации цикла отобразите фрагмент текста, а затем вставьте тег 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>
Другие вопросы по тегам