Guides
编辑操作回调
概述
在内容编辑模式下,ComPDF SDK 提供了丰富的数据回调接口,用于监听用户在 PDF 文档中的编辑操作,包括文本、图片、表单等内容的编辑状态、撤销/重做操作以及编辑结束事件。通过这些回调,开发者可以实现自定义 UI 更新、操作记录或操作权限控制。
说明
本章节主要介绍内容编辑模式下的编辑回调及操作方法。注释操作的回调请参阅前述章节。
1. 获取编辑管理器
CPDFEditManager 是内容编辑模式下的核心管理器,用于管理编辑操作、撤销重做历史及编辑状态。
java
CPDFEditManager editManager = readerView.getEditManager();
val editManager = readerView.editManager2. 编辑状态回调
OnEditStatusChangeListener 用于监听编辑状态的变化,包括开始编辑、撤销/重做更新以及退出编辑模式。
方法说明
| 方法名 | 中文说明 | 触发场景 |
|---|---|---|
| onBegin(int pageIndex) | 开始编辑,返回当前编辑页面索引 | 用户首次进入编辑模式 |
| onUndoRedo(int pageIndex, boolean canUndo, boolean canRedo) | 撤销/重做状态变化 | 编辑过程中调用 undo/redo 时触发 |
| onExit() | 退出编辑模式 | 用户结束编辑或调用 endEdit() |
java
editManager.addEditStatusChangeListener(new OnEditStatusChangeListener() {
@Override
public void onBegin(int pageIndex) {
// 编辑开始,可用于高亮当前编辑页
}
@Override
public void onUndoRedo(int pageIndex, boolean canUndo, boolean canRedo) {
// 更新撤销/重做按钮状态
}
@Override
public void onExit() {
// 编辑结束,可用于隐藏编辑工具栏或保存状态
}
});kotlin
editManager.addEditStatusChangeListener(object : OnEditStatusChangeListener {
override fun onBegin(pageIndex: Int) {
// 编辑开始,可用于高亮当前编辑页
}
override fun onUndoRedo(pageIndex: Int, canUndo: Boolean, canRedo: Boolean) {
// 更新撤销/重做按钮状态
}
override fun onExit() {
// 编辑结束,可用于隐藏编辑工具栏或保存状态
}
})3. 撤销与重做操作
CPDFEditManager 提供了撤销和重做接口,可在编辑模式下回退或恢复用户操作。
java
editManager.undo(); // 撤销操作
editManager.redo(); // 重做操作
boolean canUndo = editManager.canUndo(); // 是否可撤销
boolean canRedo = editManager.canRedo(); // 是否可重做kotlin
editManager.undo() // 撤销操作
editManager.redo() // 重做操作
val canUndo = editManager.canUndo() // 是否可撤销
val canRedo = editManager.canRedo() // 是否可重做4. 启用/禁用编辑管理器
java
editManager.enable(); // 启用编辑
editManager.disable(); // 禁用编辑
boolean isEnabled = editManager.isEnabled(); // 是否启用kotlin
editManager.enable() // 启用编辑
editManager.disable() // 禁用编辑
val isEnabled = editManager.isEnabled() // 是否启用5. 结束编辑
编辑完成后,可调用 endEdit() 退出编辑模式并触发 onExit() 回调。
java
editManager.endEdit();kotlin
editManager.endEdit()编辑区域选中回调
在内容编辑模式下,用户可以选择文档中的文本、图片或路径区域。OnSelectEditAreaChangeListener 用于监听用户选择的编辑区域变化,从而在选中不同类型的区域时执行自定义操作,如显示工具栏、更新属性面板或触发编辑逻辑。
方法说明
| 方法名 | 中文说明 | 触发场景 |
|---|---|---|
| onSelectEditAreaChange(int type) | 编辑区域变化回调 | 用户选中或取消选中文档区域时触发 |
type 类型说明
| 类型值 | 中文说明 |
|---|---|
| 0 | 无选中区域(None) |
| 1 | 文本区域(Text) |
| 2 | 图片区域(Image) |
| 3 | 路径区域(Path,如绘制的线条或图形) |
获取选中的编辑区域
通过 readerView.getSelectEditArea() 可获取当前选中的编辑区域对象,并根据类型进行操作:
- CPDFEditTextArea:文本区域
- CPDFEditImageArea:图片区域
- CPDFEditPathArea:路径区域
java
readerView.setSelectEditAreaChangeListener(new OnSelectEditAreaChangeListener() {
@Override
public void onSelectEditAreaChange(int type) {
// type: 0 None, 1 text, 2 image, 3 path
CPDFEditArea editArea = readerView.getSelectEditArea();
if (editArea instanceof CPDFEditTextArea){
// 选中的文本区域,可显示文本工具栏或属性面板
} else if (editArea instanceof CPDFEditImageArea){
// 选中的图片区域,可显示图片编辑工具或操作按钮
} else if (editArea instanceof CPDFEditPathArea){
// 选中的路径区域,可显示路径属性编辑或删除操作
}
}
});kotlin
readerView.setSelectEditAreaChangeListener { type ->
// type: 0 None, 1 text, 2 image, 3 path
val editArea = readerView.selectEditArea
when (editArea) {
is CPDFEditTextArea -> {
// 选中的文本区域,可显示文本工具栏或属性面板
}
is CPDFEditImageArea -> {
// 选中的图片区域,可显示图片编辑工具或操作按钮
}
is CPDFEditPathArea -> {
// 选中的路径区域,可显示路径属性编辑或删除操作
}
}
}