我创建了一个带有页眉和表格的 .PDF,我的问题是,当显示它时,它只显示最后两页的页码和总页数,例如,如果我有一个 5 页的文档,它只显示最后两页中的第 4 页(共 5 页)、第 4 页和第 5 页中的第 5 页(共 5 页),但它不显示第 1、2 和 3 页上的任何内容。我该如何解决这个问题?
document.add(headerTable)
document.add(font18)
document.add(listaClientes)
val totalPages = pdfDocument.getNumberOfPages()
val handler = PageNumberHandler(pdfDocument, totalPages)
pdfDocument.addEventHandler(PdfDocumentEvent.END_PAGE, handler)
document.add(
Paragraph(
"\nListado enviado el: ${
LocalDate.now().toString()
.let { reformatDate(it).replaceFirstChar(Char::titlecase) }
} "
).setTextAlignment(TextAlignment.CENTER)
)
document.close()
我的 PageNumberHandler
class PageNumberHandler(val pdfDocument: PdfDocument, val totalPages: Int) : IEventHandler {
override fun handleEvent(event: Event) {
val docEvent = event as PdfDocumentEvent
val pdfDoc = docEvent.document
val page = docEvent.page
val pageNumber = pdfDocument.getPageNumber(page)
val pageSize = page.pageSize
val x = pageSize.width - 50
val y = 20f // Ajusta este valor según la altura deseada del pie de página
val canvas = Canvas(page, pageSize)
val paragraph = Paragraph("Página $pageNumber de $totalPages")
.setTextAlignment(TextAlignment.RIGHT)
.setHorizontalAlignment(HorizontalAlignment.RIGHT)
canvas.showTextAligned(
paragraph,
x,
y,
pageNumber,
TextAlignment.RIGHT,
VerticalAlignment.BOTTOM,
0f
)
canvas.close()
}
事件处理程序只有在向事件生成类注册后才能处理事件。
在您的代码中,仅在向文档添加内容后才注册事件监听器:
因此,您的事件监听器只能在添加事件处理程序时尚未完成的页面上工作。
为了解决这个问题,您显然必须尽早添加处理程序。