Skip to content
ComPDF
Guides

编辑操作回调

概述

在内容编辑模式下,ComPDF SDK 提供了丰富的数据回调接口,用于监听用户在 PDF 文档中的编辑操作,包括文本、图片、表单等内容的编辑状态、撤销/重做操作以及编辑结束事件。通过这些回调,开发者可以实现自定义 UI 更新、操作记录或操作权限控制。

说明

本章节主要介绍内容编辑模式下的编辑回调及操作方法。注释操作的回调请参阅前述章节。

1. 获取编辑管理器

CPDFEditManager 是内容编辑模式下的核心管理器,用于管理编辑操作、撤销重做历史及编辑状态。

java
CPDFEditManager editManager = readerView.getEditManager();
val editManager = readerView.editManager

2. 编辑状态回调

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 -> {
            // 选中的路径区域,可显示路径属性编辑或删除操作
        }
    }
}