Skip to content

注释概述

福昕 PDF SDK(Web)支持在 PDF 页面上读取、创建、编辑、删除和导入导出注释。常见注释包括便笺、自由文本、文本标记、高亮、下划线、删除线、图章、墨迹、形状、链接、屏幕注释、文件附件和密文标记等。

如果使用完整 UI(UIExtension),常用注释工具通常已内置在工具栏、右键菜单、属性面板和注释列表中,用户可以直接创建和编辑注释。需要通过代码批量处理注释、接入业务权限、定制注释 UI 或实现自定义数据同步时,可使用 PDFPageAnnot 及相关注释接口。

相关接口包括:

  • PDFPage.getAnnots()PDFPage.getAnnotCountAsync():读取页面注释。
  • PDFPage.addAnnot():在页面上创建注释。
  • PDFPage.removeAnnotById()PDFPage.removeAnnotByObjectNumber():删除注释。
  • PDFPage.flatten()PDFPage.flattenAnnot():扁平化注释或表单控件。
  • Annot.getType()Annot.getRect()Annot.setRect()Annot.getContent()Annot.setContent()Annot.getFlags()Annot.setFlags():读取或修改注释通用属性。
  • PDFPage.getAnnotIdAtDevicePoint():按设备坐标命中注释。

注释类型

WebSDK 支持的注释类型以实际 API Reference 为准。常见类型如下:

类型说明
note便笺注释,用于评论和批注。
freetext自由文本注释,可用于文本框、打字机等场景。
highlightunderlinestrikeoutsquiggly文本标记注释,通常基于文本选择创建。
ink墨迹注释,用于手写或自由绘制。
squarecirclelinepolygonpolyline形状类注释。
stamp图章注释。
link链接注释。
fileattachment文件附件注释。
screen屏幕/媒体相关注释。
redact密文标记,应用脱敏前属于注释;应用后会永久移除标记区域下方内容。

水印说明

PDF 规范中的 Watermark 注释与页面内容形式的水印不是同一类能力。WebSDK 文档中的 水印 介绍的是写入 PDF 或 Viewer 渲染级显示的水印能力。

读取页面注释

javascript
const page = await pdfDoc.getPageByIndex(0);
const annots = await page.getAnnots();

annots.forEach((annot) => {
    console.log(annot.getType(), annot.getRect());
});

如果只需要数量,可使用:

javascript
const count = await page.getAnnotCountAsync();

创建注释

PDFPage.addAnnot(annotJson) 用于创建注释。不同注释类型需要的属性不同,常见字段包括 typerectcontentscolorcoords 等。

javascript
const annots = await page.addAnnot({
    type: 'note',
    rect: {
        left: 100,
        right: 130,
        top: 700,
        bottom: 670
    },
    contents: '请确认这里的内容'
});

const note = annots[0];

文本标记注释通常需要基于文本选区或搜索结果生成 coords。如果使用完整 UI,可优先使用内置文本选择工具。

修改注释属性

javascript
const annot = annots[0];

await annot.setContent('更新后的注释内容');
await annot.setRect({
    left: 120,
    right: 180,
    top: 720,
    bottom: 680
});

修改注释属性后,如需保存到文件,应按文档保存流程导出 PDF。

删除和扁平化注释

javascript
const annotId = annot.getUniqueID();
await page.removeAnnotById(annotId);

扁平化会把注释外观写入页面内容,注释对象本身将不再作为可编辑注释存在。

javascript
await page.flattenAnnot(annot);

与其它注释文档的关系

注意事项

  • 注释坐标通常使用 PDF 坐标,和 Viewer 的 device pixels 不同。
  • 创建、修改、删除或扁平化注释通常需要相应文档权限。
  • 如果需要保存注释变更,应在操作完成后导出或保存 PDF 文件。