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, но он тоже не работает ... так что у кого-нибудь есть идея решить мою проблему? Спасибо =)


person noah    schedule 03.07.2014    source источник
comment
Моя идея — cfsavecontent.   -  person Dan Bracuk    schedule 03.07.2014
comment
Что делает ваш код? Вы видите строку <cfdocumentitem type='pagebreak'/> в своем PDF-документе?   -  person Miguel-F    schedule 03.07.2014
comment
@DanBracuk dashboardHTML — это cdsavecontent, в котором я вызываю «некоторую функцию»   -  person noah    schedule 03.07.2014
comment
@Miguel-F Нет, я все еще вижу пометку forpagebreak...   -  person noah    schedule 03.07.2014


Ответы (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>
person TheLifeOfBri_    schedule 03.07.2014
comment
Это очень хорошая идея, но, к сожалению, она все еще не работает.. теперь отображается специальный символ, а не разрыв страницы.. - person noah; 03.07.2014
comment
Работает для нас... попробуйте сначала действительно простой разделитель, чтобы исключить любые проблемы с кодировкой. (например, звездочка). Затем убедитесь, что numPageBreaks дает вам ожидаемое значение. Если это так, это должно сработать. - person TheLifeOfBri_; 03.07.2014
comment
Ой.. Я совершил ужасную ошибку.. У меня была замена перед этим, чтобы повлиять на некоторые другие вещи, и я не сохранил новое содержимое в переменную.. поэтому я работал со старым... Большое спасибо! - person noah; 03.07.2014