Guides
注释操作回调
本章节介绍 CPDFReaderView 在注释模式下提供的回调接口,包括注释的选择、取消选择、添加等事件。通过这些回调,开发者可以监听用户对注释的操作,并执行自定义逻辑或 UI 更新,为注释交互功能提供更丰富的控制能力。本章节将持续更新,覆盖高亮、手写、印章、表单等各种注释类型的回调接口。
选中注释回调
CPDFSelectAnnotCallback 用于监听用户对 PDF 注释的选择和取消选择事件。通过该回调,开发者可以在注释被选中或取消选中时执行自定义操作,例如显示属性面板、修改样式或触发其他 UI 更新。
接口方法说明
| 方法名 | 中文说明 | 触发场景 |
|---|---|---|
| onAnnotationSelected | 注释被选中 | 用户点击或框选注释时触发 |
| onAnnotationDeselected | 注释取消选择 | 用户点击空白区域或选中其他注释时触发 |
java
readerView.setSelectAnnotCallback(new CPDFSelectAnnotCallback() {
@Override
public void onAnnotationSelected(CPDFPageView cpdfPageView,
CPDFBaseAnnotImpl<CPDFAnnotation> cpdfBaseAnnot) {
// 注释被选中,可显示属性面板或高亮选中状态
}
@Override
public void onAnnotationDeselected(CPDFPageView cpdfPageView,
@Nullable CPDFBaseAnnotImpl<CPDFAnnotation> cpdfBaseAnnot) {
// 注释取消选择,可隐藏属性面板或取消高亮
}
});kotlin
readerView.setSelectAnnotCallback(object : CPDFSelectAnnotCallback {
override fun onAnnotationSelected(
cpdfPageView: CPDFPageView,
cpdfBaseAnnot: CPDFBaseAnnotImpl<CPDFAnnotation>
) {
// 注释被选中,可显示属性面板或高亮选中状态
}
override fun onAnnotationDeselected(
cpdfPageView: CPDFPageView,
cpdfBaseAnnot: CPDFBaseAnnotImpl<CPDFAnnotation>?
) {
// 注释取消选择,可隐藏属性面板或取消高亮
}
})创建注释回调
CPDFAddAnnotCallback 用于监听用户在文档中添加注释的事件。通过该回调,开发者可以在注释创建后执行自定义逻辑,例如记录日志、更新数据库或对新注释进行样式设置。
接口方法说明
| 方法名 | 中文说明 | 触发场景 |
|---|---|---|
| onAddAnnotation | 注释被添加到文档中 | 用户完成添加注释操作后触发 |
java
readerView.setPdfAddAnnotCallback(new CPDFAddAnnotCallback() {
@Override
public void onAddAnnotation(CPDFPageView cpdfPageView,
CPDFBaseAnnotImpl<CPDFAnnotation> cpdfBaseAnnot) {
// 新注释添加完成,可执行自定义逻辑,如高亮或记录日志
}
});kotlin
readerView.setPdfAddAnnotCallback(object : CPDFAddAnnotCallback {
override fun onAddAnnotation(
cpdfPageView: CPDFPageView,
cpdfBaseAnnot: CPDFBaseAnnotImpl<CPDFAnnotation>
) {
// 新注释添加完成,可执行自定义逻辑,如高亮或记录日志
}
})撤销与重做回调
CPDFReaderView 提供了撤销与重做管理器 CPDFUndoManager,用于跟踪用户在 PDF 文档上的操作历史,包括注释添加、删除、属性修改等。通过监听撤销历史变化或直接调用撤销/重做方法,开发者可以实现自定义的撤销重做功能、界面状态更新或操作记录。
说明
撤销管理器适用于注释编辑、表单填写、手绘等操作,能够帮助开发者精确控制用户的操作历史。
1. 获取撤销管理器
java
CPDFUndoManager manager = readerView.getUndoManager();2. 撤销历史变化回调
OnUndoHistoryChangeListener 用于监听操作历史变化,包括插入、删除、修改或清空操作。
操作类型枚举 Operation
| 枚举值 | 中文说明 | 触发场景 |
|---|---|---|
| INSERT | 插入操作 | 新增注释或表单元素 |
| REMOVE | 删除操作 | 删除注释或表单元素 |
| ATTRIBUTE | 属性修改 | 修改注释颜色、透明度、大小等属性 |
| REMOVE_ALL | 清空所有操作 | 清空文档中所有可撤销操作 |
方法示例
java
manager.addOnUndoHistoryChangeListener(new OnUndoHistoryChangeListener() {
@Override
public void onUndoHistoryChanged(@NonNull CPDFUndoManager cpdfUndoManager,
Operation operation,
Type type) {
// operation: 当前操作类型,例如 INSERT、REMOVE
// type: 操作对象类型(注释、表单)
Log.d("UndoManager", "操作类型: " + operation + ", 对象类型: " + type);
}
});kotlin
manager.addOnUndoHistoryChangeListener(object : OnUndoHistoryChangeListener {
override fun onUndoHistoryChanged(cpdfUndoManager: CPDFUndoManager,
operation: Operation,
type: Type) {
// operation: 当前操作类型,例如 INSERT、REMOVE
// type: 操作对象类型(注释、表单)
Log.d("UndoManager", "操作类型: $operation, 对象类型: $type")
}
})3. 启用/禁用撤销管理器
java
manager.enable(true); // 启用撤销管理
boolean isEnabled = manager.isEnable(); // 查询是否启用kotlin
manager.enable(true) // 启用撤销管理
val isEnabled = manager.isEnable() // 查询是否启用4. 撤销与重做操作
java
manager.undo(); // 执行撤销
manager.redo(); // 执行重做
boolean canRedo = manager.canRedo(); // 是否可重做
boolean canUndo = manager.canUndo(); // 是否可撤销kotlin
manager.undo() // 执行撤销
manager.redo() // 执行重做
val canRedo = manager.canRedo() // 是否可重做
val canUndo = manager.canUndo() // 是否可撤销5. 清空操作历史
java
manager.clearHistory(); // 清空撤销/重做历史kotlin
manager.clearHistory() // 清空撤销/重做历史