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>