在 PDF 中,**注释(Annotation)**是一类特殊对象,用来在页面上叠加额外的信息或交互功能。它们独立于页面内容,但与某一页绑定,通常通过 Page 对象的 /Annots 数组来引用。
注释的基本结构
如果对PDF的结构和对象等概念不太了解,请参照之前文档
一个常规的注释对象如下所示
187 0 obj
<<
/Type /Annot
/Subtype /Ink
/CreationDate (D:20250925014811)
/Rect [157.33 579.12 385.78 639.49]
/InkList [[161.1 633.6 173.7 625.8 186.9 622.2 311.1 594.6 317.7 593.4 326.7 590.4 332.1 589.2 336.9 588 339.3 587.4 342.9 586.8 346.5 586.2 349.5 585.6 353.7 585 356.1 585 358.5 585 360.9 586.2 365.1 586.2 372.3 586.2 378.3 587.4 381.9 588 384.3 588.6 384.3 588.6]]
/F 4
/Rotate 0
/IT /InkHighlight
/BS << /W 12>>
/C [1 1 0.6]
/CA 1
/AP << /N 188 0 R>>
>>
endobj
- 每个注释是一个 Annotation Dictionary(字典对象),关键字段包括:
/Type /Annot:标识对象是注释。/Subtype:具体注释类型(如/Text、/Link等)。/Rect:矩形区域,定义注释在页面上的位置。/Contents:注释的内容文字,或是辅助说明。/NM:注释的唯一名称。/M:修改日期。/F:标志位(是否可见、是否打印等)。/AP:外观流(appearance stream),用于渲染注释的可视化外观。
2. 注释的分类
根据 PDF 1.7 标准,常见的注释类型如下:
-
文字类(Markup Annotations)
- Text(文字便签)
- FreeText(自由文本)
- Highlight(高亮)、Underline(下划线)、Squiggly(波浪线)、StrikeOut(删除线)
- Line(直线)、Square(矩形)、Circle(圆形)、Polygon/Polyline(多边形/折线)
- Stamp(图章)、Caret(插入符)、Ink(手写墨迹)
- FileAttachment(文件附件)
-
多媒体与交互类
- Link(链接)
- Popup(弹出窗)
- Sound(声音)、Movie(视频)、Screen(多媒体屏幕)、3D(3D 对象)
- Widget(表单字段)
- PrinterMark(印刷标记)、TrapNet(陷印网络)、Watermark(水印)
3. Markup 注释的特性
- 主要用于标记或评论文档。
- 通常带有
/Contents作为显示内容,可以在“评论”面板中查看。 - 可能有弹出窗(/Popup)用于显示和编辑文字。
- 支持分组(如一条评论下的多条回复)。
- 支持透明度(/CA)、作者信息(/T)、主题(/Subj)等扩展属性。
4. PDF 注释类型与关键字段汇总
| 注释类型 | 说明 | 常用关键字段 | 备注 |
|---|---|---|---|
| /Text | 文本便签(小图标+弹出窗文字) | /Rect /Contents /Open /Name | 最常见的评论注释 |
| /Link | 超链接(区域可跳转/打开URL) | /Rect /A /Dest /Border | 不可见或有边框 |
| /FreeText | 自由文本,直接在页面显示文字 | /Rect /Contents /DA /Q | 类似直接写字 |
| /Line | 直线注释 | /Rect /L /LE /IC | /LE 指定箭头/符号 |
| /Square | 矩形标注 | /Rect /IC /BS | 可有边框和内部颜色 |
| /Circle | 圆形标注 | /Rect /IC /BS | 用途同矩形 |
| /Polygon | 多边形 | /Rect /Vertices /IC | 节点由 /Vertices 定义 |
| /Polyline | 折线 | /Rect /Vertices /IC | 开放式多边形 |
| /Highlight | 高亮文本 | /Rect /QuadPoints /Contents | /QuadPoints 定义文本位置 |
| /Underline | 下划线标记 | /Rect /QuadPoints | 与高亮类似 |
| /StrikeOut | 删除线标记 | /Rect /QuadPoints | 用于划掉文字 |
| /Squiggly | 波浪线标记 | /Rect /QuadPoints | 用于特殊标记 |
| /Stamp | 图章(预定义或自定义图片) | /Rect /Name /AP | 比如“已批准”印章 |
| /Caret | 插入符号(^) | /Rect /RD | 常见于校对标记 |
| /Ink | 手写墨迹 | /Rect /InkList /BS | /InkList 存笔迹路径 |
| /Popup | 弹出窗,附属其他注释 | /Rect /Parent /Open | 不单独使用 |
| /FileAttachment | 附件文件 | /Rect /FS /Name | 可携带文件数据 |
| /Sound | 声音注释 | /Rect /Sound /Name | 可录音播放 |
| /Movie | 视频注释 | /Rect /Movie /A | 播放嵌入或外部视频 |
| /Screen | 多媒体播放(视频/动画) | /Rect /AA /AP | 比 /Movie 更灵活 |
| /Widget | 表单控件(按钮、复选框等) | /Rect /FT /V /DA | PDF 表单核心 |
| /Watermark | 水印 | /Rect /AP /F | 页面背景或前景标记 |
| /PrinterMark | 印刷标记 | /Rect /Subtype | 出版印刷用 |
| /TrapNet | 陷印网络 | /Rect /TrapNet | 高级印刷用途 |
| /3D | 三维对象 | /Rect /3DD /3DV /3DA | PDF 1.6+ 引入 |