本页内容
创建、移动、删除文本,图像和路径
ComPDFKit 提供了完整丰富的创建、移动、删除文本,图像和路径的方法。
通过CPDFReaderView
操作
CPDFReaderView
默认提供基本的交互能力,允许用户创建和删除文本,图像和路径,拖拽移动图片,文字块和路径位置,调整图片,文字块和路径大小等,实现类似在常见文字处理软件中的操作。
设置上下文菜单
如果需要复制、粘贴、剪切或删除文本,图片或路径,可以通过CPDFReaderView
的setContextMenuShowListener
事件在上下文菜单中添加这些操作方法。
以下是如何在上下文菜单中添加复制、粘贴、删除等操作的示例代码:
edit_text_area_menu_layout.xml:
xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/edit_copy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12sp"
android:gravity="center"
android:text="copy" />
<TextView
android:id="@+id/edit_paste"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12sp"
android:gravity="center"
android:text="paste" />
<TextView
android:id="@+id/edit_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12sp"
android:gravity="center"
android:text="delete" />
</LinearLayout>
java
public class DemoContextMenuHelper extends CPDFContextMenuShowHelper {
public DemoContextMenuHelper(CPDFReaderView cpdfReaderView) {
super(cpdfReaderView);
}
@Override
public View getEditTextAreaContentView(CPDFPageView cpdfPageView, LayoutInflater layoutInflater, CPDFEditSelections cpdfEditSelections) {
View contentView = layoutInflater.inflate(R.layout.edit_text_area_menu_layout, null);
invokeOnClickListener(contentView, v -> {
try {
int id = v.getId();
if (id == R.id.edit_copy) {
pageView.operateEditTextArea(CPDFPageView.EditTextAreaFuncType.COPY);
} else if (id == R.id.edit_paste) {
pageView.operateEditText(CPDFPageView.EditTextFuncType.PASTE);
} else if (id == R.id.edit_delete) {
pageView.operateEditTextArea(CPDFPageView.EditTextAreaFuncType.DELETE);
}
} finally {
dismissContextMenu();
}
}, R.id.edit_copy, R.id.edit_paste, R.id.edit_delete);
return contentView;
}
}
...
// 初始化CPDFReaderView
CPDFReaderView readerView = findViewById(R.id.readerView);
CPDFDocument document = new CPDFDocument(context);
document.open(pdfPath);
readerView.setPDFDocument(document);
// 设置自定义的上下文菜单
readerView.setContextMenuShowListener(new DemoContextMenuHelper(readerView));
kotlin
class DemoContextMenuHelper(cpdfReaderView: CPDFReaderView) :
CPDFContextMenuShowHelper(cpdfReaderView) {
override fun getEditTextAreaContentView(
cpdfPageView: CPDFPageView,
layoutInflater: LayoutInflater,
cpdfEditSelections: CPDFEditSelections
): View {
val contentView: View = layoutInflater.inflate(R.layout.edit_text_area_menu_layout, null)
invokeOnClickListener(contentView, { v: View ->
try {
val id = v.id
if (id == R.id.edit_copy) {
pageView.operateEditTextArea(CPDFPageView.EditTextAreaFuncType.COPY)
} else if (id == R.id.edit_paste) {
pageView.operateEditText(CPDFPageView.EditTextFuncType.PASTE)
} else if (id == R.id.edit_delete) {
pageView.operateEditTextArea(CPDFPageView.EditTextAreaFuncType.DELETE)
}
} finally {
dismissContextMenu()
}
}, R.id.edit_copy, R.id.edit_paste, R.id.edit_delete)
return contentView
}
}
...
// 初始化CPDFReaderView
val readerView = findViewById<CPDFReaderView>(R.id.readerView)
val document = CPDFDocument(context)
document.open(pdfPath)
readerView.pdfDocument = document
// 设置自定义的上下文菜单
readerView.contextMenuShowListener = DemoContextMenuHelper(readerView)
插入文字和图片
您可以通过CPDFEditManager
的beginEdit
方法来指定是否可以插入文字和图片块。下面的代码将向您展示如何执行此操作:
java
CPDFEditManager editManager = cpdfReaderView.getEditManager();
// 允许插入图片。
editManager.beginEdit(CPDFEditPage.LoadImage);
// 允许插入文字。
editManager.beginEdit(CPDFEditPage.LoadText);
// 允许取消插入内容状态
editManager.beginEdit(CPDFEditPage.LoadNone);