基于Adobe Embed API获取PDF预置标注用户反馈的方案咨询
以下方案均适配Sized Container嵌入模式,且不需要开放用户自建标注权限,完全符合你的业务规则:
方案1:监听标注点击事件+自定义浮层(优先推荐,实现成本最低)
初始化PDF嵌入实例时,先在配置项里把enableAnnotationTools设为false,从根源上禁用所有用户自建、编辑、删除标注的工具入口,这个配置不会影响你对预置标注的事件监听。
之后注册annotationClicked事件回调,这个回调会返回被点击标注的唯一ID、所在页码、在PDF视口内的相对坐标。你提前把通过addAnnotationsInPDF写入时给每个预置标注分配的自定义ID,和业务侧存储的标注元数据做映射表,事件触发时拿到annotationId匹配到对应标注,再根据返回的坐标,在PDF容器的对应位置弹出自定义写的反馈浮层就行——浮层里可以放反馈选项、文本输入框、提交按钮,提交时把标注ID、页码、用户填写的内容传给后端即可,全程不调用Adobe的标注修改接口,完全不会产生用户自建标注。方案2:复用原生评论面板,减少自定义UI开发量
如果你不想自己写反馈浮层,可以在最开始调用addAnnotationsInPDF写入预置标注时,给每个标注绑定一个空的评论线程占位。PDF初始化时配置showAnnotationPanel: true,同时在权限配置里单独开启「预置标注下发表评论」的权限,其余标注创建、编辑、删除权限全部关闭。
用户点击预置标注时会自动唤起Adobe原生的侧边评论面板,你只要监听annotationCommentAdded事件,就能拿到用户在对应标注下提交的评论文本,直接作为反馈数据上传后端即可。这个方案的缺点是UI自定义程度低,没法自定义反馈选项,只能收集文本类反馈。方案3:扩展自定义右键菜单作为反馈入口
如果你不希望点击标注就直接触发反馈流程,可以调用API的customContextMenuItems配置项,给PDF的右键菜单新增「提交该标注反馈」选项,配置菜单项的显示规则:仅当用户右键选中的元素是你写入的预置标注时才展示这个选项。用户点击菜单项后再唤起反馈表单,后续数据提交逻辑和方案1完全一致。
避坑提醒:不要尝试先开放标注创建权限再通过前端事件拦截阻止用户自建标注,Sized Container模式下部分原生标注操作的事件冒泡存在延迟,很容易出现拦截失效的情况,直接通过初始化配置锁死非必要的标注操作权限是最稳妥的做法。
内容的提问来源于stack exchange,提问作者Akash Sharma

