SuperAPI AI 工具集

pdf-annotations

办公与效率

查看项目

更新于 10-16 01:12

技能介绍

用途:在 Android 平台上读取、添加、更新和删除 PDF 标注(高亮、自由文本、图章)以及页面对象(路径、文本、图片)。平台自 API 36.1 起原生支持 PDF 标注编辑,此前仅支持渲染。

入口与版本门槛:两条渲染路径暴露相同编辑接口。PdfRenderer.Page 需 API 36.1+;PdfRendererPreV.Page 需 SDK 扩展 18,可在 API 31+ 且 PDF 模块已更新的设备使用,需通过 SdkExtensions.getExtensionVersion(Build.VERSION_CODES.S) 在运行时判断。

工作流:打开可 seek 的文件描述符后,用 PdfRenderer 或 PdfRendererPreV 打开页面,调用 getPageAnnotations、addPageAnnotation、updatePageAnnotation、removePageAnnotation,最后在 close 之前调用 write 写入另一个可写 fd。

约定与限制:addPageAnnotation 成功返回 id,失败返回 -1,需检查返回值;同一标注实例在文档范围内只能附加一次,重复添加会抛异常;更新和删除按 id 而非列表位置;同一时间只能打开一个页面;write 必须在 close 之前执行。返回的 Pair 是 android.util.Pair,不支持 Kotlin 解构,需用 .first/.second。

渲染:标注仅在 RenderParams.renderFlags 包含对应标志时才显示。图章和自由文本预览不显示通常是缺少渲染标志,而非添加失败。PdfRendererPreV.Page 没有渲染模式常量,需通过 RenderParams 指定。

页面对象:页面对象同样支持 addPageObject、getPageObjects、updatePageObject、removePageObject,并带变换矩阵。可用 getTopPageObjectAtPosition 做点击命中测试。

范围之外:从零创建 PDF、表单填写、文本提取与搜索、嵌入查看器 UI 均属其他接口;仅当低于版本门槛或所需标注类型未被组件 API 建模时才考虑第三方 SDK。