java itext pdf 添加页码
一、页码添加,重写事件,直接上代码:
public class PdfPageXofYEventHelper extends PdfPageEventHelper {public PdfTemplate total;public BaseFont baseFont;/*** 重写PdfPageEventHelper中的onOpenDocument方法*/@Overridepublic void onOpenDocument(PdfWriter writer, Document document) {// 得到文档的内容并为该内容新建一个模板total = writer.getDirectContent().createTemplate(500, 500);try {ClassPathResource cpr = new ClassPathResource("arial.ttf");baseFont = BaseFont.createFont(cpr.getPath(),BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);} catch (Exception e) {throw new ExceptionConverter(e);}}/*** 重写PdfPageEventHelper中的onEndPage方法*/@Overridepublic void onEndPage(PdfWriter writer, Document document) {// 新建获得用户页面文本和图片内容位置的对象PdfContentByte pdfContentByte = writer.getDirectContent();// 保存图形状态pdfContentByte.saveState();String text = writer.getPageNumber() + "/";// 获取点字符串的宽度float textSize = baseFont.getWidthPoint(text, 9);pdfContentByte.beginText();// 设置随后的文本内容写作的字体和字号pdfContentByte.setFontAndSize(baseFont, 9);// 定位'X/'
// float x = (document.right() + document.left()) / 2;float x = document.right();float y = 20f;pdfContentByte.setTextMatrix(x, y);pdfContentByte.showText(text);pdfContentByte.endText();// 将模板加入到内容(content)中- // 定位'Y'pdfContentByte.addTemplate(total, x + textSize, y);pdfContentByte.restoreState();}/*** 重写PdfPageEventHelper中的onCloseDocument方法*/@Overridepublic void onCloseDocument(PdfWriter writer, Document document) {total.beginText();try {ClassPathResource cpr = new ClassPathResource("arial.ttf");baseFont = BaseFont.createFont(cpr.getPath(),BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);total.setFontAndSize(baseFont, 9);} catch (DocumentException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}total.setTextMatrix(0, 0);// 设置总页数的值到模板上,并应用到每个界面total.showText(String.valueOf(writer.getPageNumber() - 1));total.endText();}
}
重写完事件之后,在写pdf时添加上即可:
。。。
// 1.新建document对象
document = new Document(PageSize.A4);
// 2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。
writer = PdfWriter.getInstance(document, os);//--------------------------页码添加---------------------------
// 设置页面布局
writer.setViewerPreferences(PdfWriter.PageLayoutOneColumn);
// 为这篇文档设置页面事件(X/Y)
writer.setPageEvent(new PdfPageXofYEventHelper());
//--------------------------页码添加---------------------------// 3.打开文档
document.open();
效果图:
二、页脚添加
public class Footer extends PdfPageEventHelper {public static PdfPTable footer;@SuppressWarnings("static-access")public Footer(PdfPTable footer) {this.footer = footer;}@Overridepublic void onEndPage(PdfWriter writer, Document document) {//把页脚表格定位footer.writeSelectedRows(0, -1, 38, 50, writer.getDirectContent());}/*** 页脚是文字* @param writer* @param songti09*/public void setTableFooter(PdfWriter writer, Font songti09) {PdfPTable table = new PdfPTable(1);table.setTotalWidth(520f);PdfPCell cell = new PdfPCell();cell.setBorder(1);String string = "地址: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 网址: www.xxxxxxx.com 咨询热线: 400x-xxx-xxx";Paragraph p = new Paragraph(string, songti09);cell.setPaddingLeft(10f);cell.setPaddingTop(-2f);cell.addElement(p);table.addCell(cell);Footer event = new Footer(table);writer.setPageEvent(event);}
}
写pdf时添加上即可:
// 3.打开文档
document.open();PdfPTable pdfPTable1 = new PdfPTable(1);
// 自己重写的Footer 类
Footer footerTable = new Footer(pdfPTable1);
footerTable.setTableFooter(writer, PdfCommon.createFont(9f));
document.add(pdfPTable1);
效果图:
也可参考 :https://www.bbsmax.com/A/rV5702oLdP/
java itext pdf 添加页码相关推荐
- JAVA实现 PDF转换 常用工具类(html转PDF、PDF添加页码、PDF文件下载、PDF添加印章或者水印)
JAVA实现 PDF转换 常用工具类(html转PDF.PDF添加页码.PDF文件下载.PDF添加印章或者水印)可直接使用 package com.bestvike.util; import com. ...
- PDF添加页码的工具有什么 PDF添加页码的小窍门
大家在制作PDF文件时,每次结束时都需要给整份PDF文件都添加准确的页码数.以此来方便后期的检查文件工作以及阅读者可更加清晰明了的翻阅文件,找寻自己需要的内容. 那么给PDF添加页码的工具有什么? 其 ...
- 利用PDF编辑软件给PDF添加页码的操作全过程
还记得小时候,在微机电脑课时.老师在教给大家一项操作的时候,老师肯定会详细的,一步一步的将操作全过程展示给大家.老师们如此严谨其,目的也就是为了防止学生们再操作中因为细小的问题,而导致全盘皆错.一步一 ...
- PDF怎么添加页码?PDF添加页码的方法
PDF怎么添加页码呢?现在我们对PDF文件的了解也是比较多的,但是想要给PDF文件添加页码还是比较难得,给PDF添加页码就可以使用迅捷PDF编辑器,下面小编就为大家操作一下PDF添加页码的操作方法. ...
- 如何给pdf添加页码?
很多人将文件生成pdf格式后,发现pdf格式的文件并没有页码显示,这非常不利于查看,这时候大家会想着给pdf格式的文件添加页码显示,在pdf格式文件中如何添加页码呢?不少人对这一问题并不清楚,今天我们 ...
- java获取Pdf文件页码
java获取Pdf文件页码步骤如下: 引入依赖: <dependency><groupId>org.apache.pdfbox</groupId><artif ...
- C# Pdf添加页码(iTextSharp)
通过Nuget添加iTextSharp引用,具体代码如下 /// <summary>/// 添加页码/// </summary>/// <param name=" ...
- 在Mac上使用或不使用Acrobat的3种向PDF添加页码的方法
当面对没有页码的大型PDF文件时,大多数人会感到茫然,尤其是在项目上进行协作时.要在Mac上的PDF中添加页码,跟踪信息将变得更加实用和简单.您可能知道如何在Word文档中插入页码,但是PDF与Wor ...
- Java iText PDF:用 iText 包生成简单的 pdf 文件
有点兴趣想要看看 Java 怎么生成 PDF 文件,搜索了一下,据说 iText 包比较好,到 这里下载 iText.jar 包,顺便把源代码.文档都一起下载了吧.但是,仅仅有这么一些材料想要写代码生 ...
- Java给PDF添加图片水印,且可以文字定位
这两天公司开发需要对PDF增加特定图片,类似于电子印章效果,试了许多网上的方式,经过测试PDF只可以插入图片或者通过RSA实现专属签章,我觉得插入图片好用一些,效果如下: 这是定位了<盖章> ...
最新文章
- min聚合函数查询带有额外字段sql|dense_rank()over(partition)|+班级学生成绩最高
- HDU 3033 I love sneakers! (分组背包变形)
- ThinkPHP的易忽视点小结
- 配置管理漫漫谈之CCB
- Py之Kivy:Python库之Kivy的简介、安装、使用方法之详细攻略
- 组态王延时启动程序_怎样用组态王软件实现延时功能?比如按下按钮4秒之后,一个指示灯亮,再过5秒,指示灯闪烁(闪烁4S)。谢谢...
- [Linux]Linux下经常会用到的简单实例(持续更新)
- sid图像数据_实战材料信息学:使用skimage处理扫描电子显微镜(SEM)图像数据
- object C php,关于消息推送的补充,主要介绍服务端的实现,包含object c 版本 c 版本 java 版本 php 版本 (转)...
- DBA/运维人员近期直播活动日历
- 二本学医还是学计算机,二本医学院毕业的医学生,最后都去了哪里?看完莫名心酸!...
- 不要为了“分库分表”而“分库分表”!
- 最常见的电脑数据恢复软件有几种
- 【高等数学笔记】二元函数连续、可微、偏导数存在、偏导数连续、任意方向导数存在的关系
- 预备期:全通卫浴、宝龙橱柜、宏星地板、三夏地板
- iphonex 序列号_iPhoneX序列号在哪?苹果iPhoneX序列号怎么看?
- 25个最适合Crossfit的WordPress主题(2020)
- (2) [保护模式]段描述符
- SEO流量增长10倍:筛选导航优化
- pyspider创建淘女郎图片爬虫任务--出师不利