# PDF Action API 迁移指南
本章节主要介绍 PDF Action 相关接口从旧版本迁移到新版本的方式,旨在帮助开发者顺利完成代码升级。
# Action 获取与操作接口变更
# 旧版本
// 获取 Additional Action 对象
Widget#getAdditionalAction(type)
// 获取 Action 对象
Widget#getAction();
// 删除 Link 上的 Additional Action 对象
Link#removeAction(trigger, action);
// 删除 Screen 的 Additional Action 对象
Screen#removeAction(trigger, action);
# 新版本
// 注意, 这里的 Annot 指 Widget, Screen, Link 以及 Sound
// 获取 Action 信息
await Annot#getActionData();
// 获取所有 Action 信息(包括 Additional Action 和普通 Action)
await Annot#getAllActionData();
// 更新指定 Action
await Annot#updateAction(targetActionObjNumber, actionData);
// 移除指定 Action
await Annot#removeAction(targetActionObjNumber);
// 获取 AdditionalAction 对象
const additionalAction = await Annot#getAdditionalAction();
// 根据触发事件类型和 Action 对象序号移除 Additional Action
await additionalAction.removeAction(trigger, targetActionObjNumber);
// 添加新的 Action
await additionalAction.addAction(trigger, actionSpec);
// 更新指定的 Action 信息
await additionalAction.updateActionData(trigger, targetActionObjNumber, actionData);
// 覆盖指定触发事件类型的所有 Action
await additionalAction.setAction(trigger, actionSpec);
# 主要变更说明
旧版本通过
Widget#getAction
和Widget#getAdditionalAction(type)
方法获取 Action。新版本统一通过
Annot
对象(包括 Widget、Screen、Link、Sound)的异步方法来获取和操作 Action。新增了批量获取、更新、移除等更细粒度的 Action 操作能力。
对于 AdditionalAction 的操作,新版本需要先通过
Annot#getAdditionalAction()
方法获取 AdditionalAction 对象,然后再进行增、删、改、查等操作。
# ActionCallbackManager.setEmbeddedGotoCallback 回调参数变更
# 旧版本
旧版本回调参数为 EmbeddedGotoAction
(opens new window) 对象:
const actionCallbackManager = actionpdfviewer.getActionCallbackManager();
actionCallbackManager.setEmbeddedGotoCallback(async (action) => {
console.log(action.getDestination());
});
# 新版本
新版本回调参数为 ExecuteActionOptions
(opens new window) 对象:
const actionCallbackManager = actionpdfviewer.getActionCallbackManager();
actionCallbackManager.setEmbeddedGotoCallback(async (options) => {
console.log(
options.data,
options.doc,
options.ownerQuery,
options.pdfViewer,
options.trigger
);
});
# 主要变更说明
- 新版本的回调参数更加丰富,包括 action 数据、文档对象以及触发来源等信息,便于开发者实现更复杂的业务逻辑。
- 具体字段请参考 API 文档 (opens new window)。
如需了解更多详细信息,请查阅 API 参考文档 (opens new window)。