IText: преобразование HTML в PDF с нумерацией страниц

Мы работаем над программой, похожей на корзину для покупок, на Java. Одним из требований является то, что квитанция, отправляемая пользователям, должна быть в формате pdf и может состоять из нескольких страниц, поэтому требуется нумерация страниц. Мы используем iText для создания PDF-файла и HTML для создания макета квитанции.

Я знаю, что могу добавить нижний колонтитул с помощью PageEvents и добавить HTML-код нижнего колонтитула в метод onEndPage().

Мне было интересно, есть ли способ добавить разбивку на страницы в HTML-текст нижнего колонтитула квитанции, которую получат наши пользователи. (Страница 1 из n, Страница 2 из n, ... Страница n из n).

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

Например:

Нижний колонтитул клиента А для его квитанции может быть следующим:

<div class="left-footer companyLogo">...</div>
<div class="center-footer pagination">PAGINATION</div>
<div class="right-footer companyName">...</div>

В то время как нижний колонтитул клиента B может быть:

<div class="left-footer Disclaimer">...</div> 
<br/>
<div class="left-footer pagination">PAGINATION</div>
<div class="right-footer date-footer">$dateToday</div> 

И тогда $variableName будет проанализирован пользовательским парсером шаблонов.


person Abraham Miguel Espiritu    schedule 08.03.2016    source источник
comment
Возможный дубликат нумерации страниц в ItextPdf   -  person Amedee Van Gasse    schedule 08.03.2016
comment
Да, это возможно. Справочник @ AmedeeVanGasse показывает, как это можно сделать в целом. Но почему-то вы, кажется, хотите описать, что ваша ситуация не соответствует указанному ответу. В таком случае проиллюстрируйте. Пример короткого кода иногда может очень помочь...   -  person mkl    schedule 08.03.2016
comment
Не уверен, что это более понятно, но я добавил возможный HTML-код для нижних колонтитулов. Но, как я уже сказал, клиент может захотеть настроить его еще больше, даже удалить нумерацию страниц. Но для тех, кто хочет нумерацию страниц, я больше не знаю, как с этим справиться.   -  person Abraham Miguel Espiritu    schedule 08.03.2016
comment
@AbrahamMiguelEspiritu Хорошо, поэтому первое, что вам нужно сделать, это какие переменные вы хотите поддерживать, в частности, какие переменные с нетривиальным поведением (PAGINATION нетривиальна, потому что она зависит от текущего состояния создания PDF, в то время как $dateToday является тривиальным, поскольку его можно определить один раз, а затем считать фиксированным). PAGINATION единственная нетривиальная?   -  person mkl    schedule 08.03.2016
comment
@mkl Да, нумерация страниц - единственная нетривиальная. Другие переменные будут извлечены из базы данных, поэтому мы можем легко их вставить.   -  person Abraham Miguel Espiritu    schedule 09.03.2016
comment
Хорошо, тогда должна быть возможность использовать вывод onEndPage HTML с помощью XMLWorker. Однако, насколько я знаю, вам нужно будет реализовать собственный тег, который вставляет шаблон, в который в конце обработки документа записывается общее количество страниц в документе. Я не так глубоко разбираюсь в использовании XMLWorker, поэтому, возможно, кто-то еще может дать более подробные советы?   -  person mkl    schedule 09.03.2016
comment
Я изменил теги с pagination на нумерация страниц, так как ваша проблема заключается не в распределении контента на несколько страниц, а в добавлении номеров страниц и итоговых номеров страниц.   -  person mkl    schedule 09.03.2016