如何获取PDF文件中链接的目标页面?附iText相关实现代码
如何获取PDF文件中超链接对应的目标页面?
如果你想用iText来处理PDF里的超链接,不管是获取目标页面还是调整链接的缩放级别都很容易。这里我给你一段针对GoTo类型目标的实现代码参考:
PdfReader reader = new PdfReader(src); // 获取第11页的字典对象(注意iText里对外页码从1开始计数) PdfDictionary page = reader.getPageN(11); // 获取该页面上的所有注释集合 PdfArray annots = page.getAsArray(PdfName.ANNOTS); for (int i = 0; i < annots.size(); i++) { PdfDictionary annotation = annots.getAsDict(i); // 判断当前注释是否为链接类型 if (PdfName.LINK.equals(annotation.getAsName(PdfName.SUBTYPE))) { // 提取链接的目标信息,原代码截断部分对应PDF规范里的目标字段PdfName.DEST PdfArray destArray = annotation.getAsArray(PdfName.DEST); if (destArray != null) { // 对于GoTo内部跳转目标,destArray第一个元素通常是目标页码(PDF内部页码从0开始) int targetPage = destArray.getAsNumber(0).intValue() + 1; // 转换为iText对外的1起始页码 System.out.println("该链接的目标页面:" + targetPage); } } }
简单理下逻辑:
- 先用
PdfReader加载目标PDF文件 - 定位到你要检查的页面,提取页面上的所有注释
- 遍历注释筛选出链接类型的条目
- 从链接的目标字段里解析出对应的页码
另外要注意:PDF的链接类型不止GoTo内部跳转,如果是外部URL链接,需要去A字典里找URI字段,处理逻辑会不一样。
内容的提问来源于stack exchange,提问作者menteith
相关产品推荐
相关产品推荐

