注释概述
福昕 PDF SDK(Web)支持在 PDF 页面上读取、创建、编辑、删除和导入导出注释。常见注释包括便笺、自由文本、文本标记、高亮、下划线、删除线、图章、墨迹、形状、链接、屏幕注释、文件附件和密文标记等。
如果使用完整 UI(UIExtension),常用注释工具通常已内置在工具栏、右键菜单、属性面板和注释列表中,用户可以直接创建和编辑注释。需要通过代码批量处理注释、接入业务权限、定制注释 UI 或实现自定义数据同步时,可使用 PDFPage、Annot 及相关注释接口。
相关接口包括:
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 | 自由文本注释,可用于文本框、打字机等场景。 |
highlight、underline、strikeout、squiggly | 文本标记注释,通常基于文本选择创建。 |
ink | 墨迹注释,用于手写或自由绘制。 |
square、circle、line、polygon、polyline | 形状类注释。 |
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) 用于创建注释。不同注释类型需要的属性不同,常见字段包括 type、rect、contents、color、coords 等。
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 文件。