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

		<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博客

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iText 是一种流行的 Java 库,用于生成 PDF 文件。你可以使用 iText 库在 PDF 中创建超链接并到指定的页码。 以下是一个示例代码: ```java import java.io.FileOutputStream; import com.itextpdf.text.Anchor; import com.itextpdf.text.Document; import com.itextpdf.text.Element; import com.itextpdf.text.Phrase; import com.itextpdf.text.pdf.PdfAction; import com.itextpdf.text.pdf.PdfWriter; public class PDFHyperlinkExample { public static void main(String[] args) { try { // 创建PDF文件 Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("HyperlinkExample.pdf")); document.open(); // 添加链接 Anchor anchor = new Anchor(new Phrase("到第3页")); anchor.setReference("#page3"); document.add(anchor); // 添加目标页 document.newPage(); document.newPage(); document.newPage(); Anchor target = new Anchor("", null); target.setName("page3"); document.add(target); document.close(); System.out.println("PDF文件已生成!"); } catch (Exception e) { e.printStackTrace(); } } } ``` 在这个例子中,我们创建了一个名为“HyperlinkExample.pdf”的 PDF 文件,并添加了一个超链接,该超链接指向第3页。我们还添加了一个名为“page3”的目标页,以便超链接可以到该页。 注意,我们使用 Anchor 类在 PDF 中创建超链接,setReference() 方法用于指定目标(在本例中是“#page3”)。setName() 方法用于指定目标页的名称。 你可以根据自己的需求修改这个例子,并使用 iText 库来生成具有超链接和到特定页码PDF 文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值