Netsuite PDF Templating: получить количество страниц в качестве атрибута

Я создаю шаблоны в Netsuite с помощью freemarker и хочу отображать нижний колонтитул только на последней странице. Я проводил некоторые исследования, но не смог найти решение (так как похоже, что среда не позволяет мне включать или импортировать библиотеки), поэтому я подумал, что просто сравниваю количество страниц с общим количеством страниц в теге if было бы хорошим и простым обходным путем. Я уже знаю, как отображать числа с помощью <pagenumber/> а также <totalpages/> теги, но все еще не может получить их как значения, поэтому я могу использовать их следующим образом:

<#if (pagenumber == totalpages) >
    ... footer html...
</#if>

Любые идеи о том, как или где я могу получить эти ценности?

2 ответа

Решение

Подход, который вы пробуете, не сработает, потому что вы смешиваете синтаксис BFO и Freemarker. NETsuite использует два разных "движка" для обработки PDF-шаблонов. Первым шагом является Freemarker, который объединяет поля записи с вашим шаблоном и создает файл XML, который затем конвертируется BFO в файл PDF. <totalpages/> Элемент не имеет смысла для Freemarker, так как он будет преобразован в число только BFO позже.

К сожалению, возможность добавить нижний колонтитул только на последнюю страницу документа в настоящее время является ограничением для BFO, согласно BFO FAQ:

В настоящее время у нас нет возможности явно назначить нижний колонтитул или верхний колонтитул последней странице документа, когда количество страниц неизвестно.

Вы МОЖЕТЕ добавить его после разрыва страницы - и поставить разрыва страницы в конце тела

<pbr footer="nlfooter" footer-height="25%"></pbr>
</body>

Проблема здесь в том, что при выводе одной страницы вы получите минимум 2 страницы... это всегда добавит страницу для отказа от ответственности / нижнего колонтитула...

Другие вопросы по тегам