Лучший способ сделать это - использовать событие ячейки.
Я не готовый пример, но вы могли бы составить его самостоятельно, комбинируя следующие примеры:
В MovieCountries1 примере, Я решил «Страница X из Y» проблемы. Вы всегда знаете значение X, но пока вы все еще создаете документ, вы не знаете значения Y (общее количество страниц). В вашем случае у вас есть аналогичная проблема. Вы хотите добавить «часть X of Y».
Вы можете достичь этого, добавив ячейку emptry, для которой вы создаете пользовательский PdfPCellEvent
. Вы можете найти несколько примеров с событиями ячеек, ища ключевые слова PdfPCell > events на официальном сайте iText.
Давайте посмотрим на RunLengthEvent примере, где мы используем пользовательский PdfPCellEvent
с именем PressPreview
:
class PressPreview implements PdfPCellEvent {
public BaseFont bf;
public PressPreview() throws DocumentException, IOException {
bf = BaseFont.createFont();
}
public void cellLayout(PdfPCell cell, Rectangle rect,
PdfContentByte[] canvas) {
PdfContentByte cb = canvas[PdfPTable.TEXTCANVAS];
cb.beginText();
cb.setFontAndSize(bf, 12);
cb.showTextAligned(Element.ALIGN_RIGHT, "PRESS PREVIEW",
rect.getRight() - 3, rect.getBottom() + 4.5f, 0);
cb.endText();
}
}
В этом примере текст «ПРЕСС-АНОНС» добавляется ко всем клеткам, к которому вы добавили это событие вот так:
PdfPCellEvent press = new PressPreview();
PdfPCell cell = new PdfPCell();
cell.setCellEvent(press);
В вашем случае вы должны добавить к пользовательскому событию две переменные-члены. Один PdfTemplate
, на который вы напишете значение Y. Один int
, который отслеживает количество срабатываний события. Это X. Когда полная таблица будет добавлена в документ, вы Y будете равны X, и вы можете заполнить это значение на PdfTemplate
.
Подведено: что вы хотите не невозможно, но это не тривиально.
Событие на клетке сделало трюк. Однако я не использовал PdfPTemplate. Я сохранил ссылку на событие и установил общее количество страниц позже. Это позволяет мне принимать решения в зависимости от этого числа, т. Е. Я не хочу добавлять 1/1, если таблица соответствует одной странице. – Cryn
Отлично, рад, что мой ответ помог вам и поблагодарил вас за его принятие! –