PDF底层格式之注释对象(Annot)

61 阅读3分钟

在 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 /DAPDF 表单核心
/Watermark水印/Rect /AP /F页面背景或前景标记
/PrinterMark印刷标记/Rect /Subtype出版印刷用
/TrapNet陷印网络/Rect /TrapNet高级印刷用途
/3D三维对象/Rect /3DD /3DV /3DAPDF 1.6+ 引入