PDF 文件中的文本链接是如何定义的?

在查看 PDF 文件时,你可能会注意到其中有 蓝色的可点击链接,类似于网页中的超链接。这些链接在 PDF 中有两种定义方式:

1. 由 PDF 查看器自动生成的链接

一些 PDF 查看器会 自动识别页面上的文本,如果文本以 "http://" 或 "www." 开头,它们会 自动添加超链接。

但需要注意:

1 这种链接 并不存储在 PDF 文件本身,而是 查看器的临时解析结果。

2 不同的 PDF 查看器 处理方式不同,有的会识别多行 URL,而有的可能不会。

3 这种方法 不够精准,容易出现遗漏或错误。

2. PDF 文件中实际存在的链接

PDF 文件 可以包含真正的超链接,但这些链接 不是存储在文本中,而是作为 Annotations(注释对象) 存储的。这些注释对象是 PDF 文件中的独立对象,由 PDF 查看器渲染并绘制到页面上。

PDF 文件中的 Annotation(注释对象)

在 每个 PDF 页面 上,可能会有一个 注释对象列表(如果没有注释对象,则此列表为空)。注释对象使 PDF 能够支持 动画、交互、超链接 等功能。

PDF 有 多种类型的 Annotation(注释对象),但这里我们主要关注 /Subtype 为 Link 的注释对象(即超链接)。

PDF 超链接的原始数据示例

在 PDF 的内部数据中,链接可能如下所示:

23 0 obj<<

/F 4 /A<</URI(http://www.jpedal.org/link.html)/Type/Action/S/URI>>

/BS<</W 0>>

/Subtype/Link

/StructParent 1

/Rect60.72 684 86.88 696

>>

endobj

关键字段解析

1 /Subtype:

1 指定了注释的类型,这里是 "Link"(超链接)。

2 PDF 还支持 视频、音频、表单、弹出注释 等其他类型的注释。

2

/Rect:

1 这是 PDF 坐标,定义了一个 矩形区域。

2 当用户点击该区域时,超链接将被激活。

/A(Action):

1 这里定义了 链接的具体动作。

2 在这个示例中,/A 字段指向 一个 URL(http://www.jpedal.org/link.html)。

3 PDF 查看器会 在浏览器中打开该链接。

如何提取 PDF 文件中的超链接?

超链接数据可以 直接从 Annotation(注释对象)中提取。这正是我们的 JPedal 所提供的功能之一。

正如前文提到的:

1 PDF 的文本和超链接是分开存储的,因此要解析页面文本,必须 解析整个 PDF 页面。

2 由于 PDF 的 存储方式复杂,无法直接通过坐标精确定位文本,必须 解析整个页面内容 才能确定超链接周围的文本信息。

我们的主页:PDF 转 HTML5、Java 图像库、Java PDF SDK - IDRsolutions

相关推荐
珍珠先生7 小时前
第10章 JDK 17 新特性:语法糖与新能力
java
熊野君7 小时前
第 7 章 AI时代产品经理新增能力
大数据·人工智能·经验分享·职场和发展·产品经理
梁辰兴7 小时前
软件工程:白盒测试
软件工程·白盒测试·应用场景·梁辰兴·路径覆盖·逻辑覆盖技术·路径测试
吴声子夜歌8 小时前
ApacheCommons——commons-text(模板替换与文本算法)
java·开发语言·算法·apache
恒锐丰科技林技术员8 小时前
EG1191 宽压降压 DC‑DC 芯片解析:高性价比工业电源方案
经验分享·嵌入式硬件·硬件工程
Haooog8 小时前
Agent 开发中的 Memory:State、短期记忆、长期记忆与 Memory Retrieval
java·agent·memory
砚底藏山河8 小时前
【量化纯GET实战 #23】多股票相关性:用收益率看板块联动
java·数据库·python·金融·数据分析
JSCircuit8 小时前
高校材料工艺实验室采购真空甲酸炉的深度分析与选型指南
人工智能·经验分享·ai写作
抠脚小弟8 小时前
Spring Cache 使用详解:从入门到实战
java·spring
ZGG0038 小时前
MySQL 索引详解:B+ 树、聚簇索引与最左前缀
java·数据库·mysql