Я создаю PDF-файл, используя itext 2.1.7 и Java-сервлеты, где я вставляю верхний и нижний колонтитулы, переопределяя PdfpageEvents на onEndPage
и onCloseDocument
, и я успешно могу поместить страницу v X из Y в заголовок /Нижний колонтитул
Теперь я хочу рассчитать стоимость страниц (т.е. стоимость печати).Так что для этого мне нужно найти нет.страниц в pdf (т. е. предположим, что печать страницы стоит 3 Мне нужно рассчитать сумму (3 * общее количество страниц в pdf) для всего pdf), и выгода составляет Мне также нужно отобразить стоимостьна первой странице и только на первой странице того же pdf .
Я пытался напечатать его в onCloseDocument
, но это напечатало стоимость на каждой странице
Какя могу это сделать, есть ли что-то, что я делаю неправильно?
Здесь код файла сервлета, который создает файл PDF
Document document = new Document(PageSize.A4, 20, 20, 20, 50);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(request.getRealPath("/") +"NoticeReports/"+filename+".pdf"));
MyPageEvents events = new MyPageEvents();
writer.setPageEvent(events);
document.open();
/*
* put some content in the pdf
*
*/
document.close();
Я ссылаюсь на класс MyPageEvents, который имеет следующееметоды:
int costofpage=3;
// we override the onEndPage method
public void onEndPage(PdfWriter writer, Document document) {
int pageN = writer.getPageNumber();
String text = "Page " + pageN + " of ";
float len = bf.getWidthPoint(text, 8);
cb.beginText();
cb.setFontAndSize(bf, 8);
cb.setTextMatrix(280, 20);
cb.showText(text);
cb.endText();
cb.moveTo(0, 30);
cb.lineTo(600, 30);
cb.moveTo(0, 820);
cb.lineTo(600, 820);
cb.stroke();
cb.addTemplate(template, 280 + len, 20);
}
// we override the onCloseDocument method
public void onCloseDocument(PdfWriter writer, Document document) {
template.beginText();
template.setFontAndSize(bf, 8);
template.showText(String.valueOf(writer.getPageNumber() - 1));
template.endText();
}
Что я должен сделать, чтобы получить (общее количество страниц * costofpage) на первой странице pdf?Где я должен поставить код для достижения этого?