页眉页脚
2025/5/10大约 2 分钟pdfbox模块页眉页脚
页眉
说明
- 坐标原点为页眉高度左上角。
- 默认宽度为页面宽度。
- 必须设置页眉高度。
- 支持多个任意组件。
- 仅添加到新页面。
- 仅需执行一次渲染方法,后续新页面会自动添加。
示例
// 创建文档
Document document = PdfHandler.getDocumentHandler().create();
// 创建页面
Page page = new Page(document);
// 创建页眉
PageHeader pageHeader = new PageHeader(document.getCurrentPage());
// 设置页眉高度
pageHeader.setHeight(100F);
// 创建文本
Textarea headerText = new Textarea(pageHeader.getPage());
// 设置文本内容
headerText.setText("页眉");
// 设置组件
pageHeader.setComponents(headerText);
// 绘制
pageHeader.render();
// 添加页面
document.appendPage(page);
// 保存文档
document.save("E:\\PDF\\pdfbox\\pageHeader\\test.pdf");
// 关闭文档
document.close();

页脚
说明
- 坐标原点为页脚高度左上角。
- 默认宽度为页面宽度。
- 必须设置页脚高度。
- 支持多个任意组件。
- 仅添加到新页面。
- 仅需执行一次渲染方法,后续新页面会自动添加。
示例
// 创建文档
Document document = PdfHandler.getDocumentHandler().create();
// 创建页面
Page page = new Page(document);
// 创建页脚
PageFooter pageFooter = new PageFooter(document.getCurrentPage());
// 设置页脚高度
pageFooter.setHeight(100F);
// 创建文本
Textarea footerText = new Textarea(pageFooter.getPage());
// 设置文本内容
footerText.setText("页脚");
// 设置组件
pageFooter.setComponents(footerText);
// 绘制
pageFooter.render();
// 添加页面
document.appendPage(page);
// 保存文档
document.save("E:\\PDF\\pdfbox\\pageFooter\\test.pdf");
// 关闭文档
document.close();

当前页码
说明
在文本组件中,设置文本内容为页码占位符,渲染时会自动替换。
示例
// 创建文档
Document document = PdfHandler.getDocumentHandler().create();
// 创建页面
Page page = new Page(document);
// 创建页脚
PageFooter pageFooter = new PageFooter(document.getCurrentPage());
// 设置页脚高度
pageFooter.setHeight(100F);
// 创建文本
Textarea footerText = new Textarea(pageFooter.getPage());
// 设置文本内容
footerText.setText("当前页:" + Constants.CURRENT_PAGE_PLACEHOLDER);
// 设置组件
pageFooter.setComponents(footerText);
// 绘制
pageFooter.render();
// 添加页面
document.appendPage(page);
// 保存文档
document.save("E:\\PDF\\pdfbox\\pageFooter\\test.pdf");
// 关闭文档
document.close();

总页码
说明
使用原创的虚拟渲染(只计算坐标),可以高效的获取文档总页数。
示例
/**
* 创建文档
*/
private Document create(Integer totalPage) {
// 创建文档
Document document = PdfHandler.getDocumentHandler().create();
// 创建页面
Page page = new Page(document);
// 创建页脚
PageFooter pageFooter = new PageFooter(document.getCurrentPage());
// 设置页脚高度
pageFooter.setHeight(100F);
// 创建文本
Textarea footerText = new Textarea(pageFooter.getPage());
// 设置文本内容
footerText.setText("共" + totalPage + "页");
// 设置组件
pageFooter.setComponents(footerText);
if (Objects.isNull(totalPage)) {
// 虚拟渲染
pageFooter.virtualRender();
} else {
// 真实渲染
pageFooter.render();
}
// 添加页面
document.appendPage(page);
// 返回文档
return document;
}
// 创建临时文档
Document document = create(null);
// 获取总页数
int totalPageNumber = document.getTotalPageNumber();
// 关闭临时文档
document.close();
// 创建正式文档
document = create(totalPageNumber);
// 保存文档
document.save("E:\\PDF\\pdfbox\\pageFooter\\test.pdf");
// 关闭文档
document.close();
