PDF 生成目录和页码 点击跳转

本文介绍了如何在使用iTextPDF库创建PDF文档时,处理目录的锚点链接和页码同步问题。特别提到解决目录页码固定的矛盾方法,以及使用PdfBox包处理文件复制导致的大文件问题和更新的PDF生成目录与页码跳转功能。
摘要由CSDN通过智能技术生成
		<dependency>
			<groupId>com.itextpdf</groupId>
			<artifactId>itextpdf</artifactId>
			<version>${itextpdf.version}</version>
		</dependency>
<itextpdf.version>5.4.3</itextpdf.version>

 目录:

Chunk chunk = new Chunk("目录展示文本");
chunk.setLocalGoto("锚点位置字符串");

 要跳转的地方 加下面这个东西

Anchor anchor = new Anchor("标题或者文本或者啥东西", new Font(Font.FontFamily.HELVETICA, 16, Font.BOLD));

anchor.setName("锚点位置字符串 跟Chunk那个对应上");

 给这个跳转 加事件

PdfAction action = PdfAction.gotoLocalPage("锚点位置字符串", false);
writer.setOpenAction(action);
上面这一套 就是一个目录。

然后页码:

页码有个矛盾的点,目录是放在文章前面的,但页码是写入文档时才能取到的。

        通过 document.add(目录); 把目录写到文档 就不能更改目录中的页码了。

页码是通过   int pageNumber = writer.getPageNumber(); 取到的

PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("document.pdf"));
// 获取页码
int pageNumber = writer.getPageNumber();

解决办法 : 先写内容 ,获取 页码 后,插入目录。

再读文件 调整顺序。pdf page 的顺序 把目录移到前面,保存成新的 正确的 文件

(这步使用 pdfbox 这个包做的 如果有复制完文件,文件大小变得超级大的问题

见我另一篇文章:pdfbox 复制文件 文件变大-CSDN博客

更新: PDF 生成目录和页码 点击跳转(新)-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值