Skip to content
ComPDF
Guides

自定义上下文菜单

ComPDF React Native SDK 2.6.0 起,SDK 支持 自定义上下文菜单(Context Menu)项,并提供对应的 点击事件回调机制,用于响应用户点击自定义菜单按钮的操作。

关于如何配置并添加自定义上下文菜单项,请参考上下文菜单

监听自定义上下文菜单点击事件

在创建 CPDFReaderView 时,可通过设置

onCustomContextMenuItemTapped 回调来监听自定义上下文菜单项的点击事件。例如:

tsx
<CPDFReaderView
  ref={pdfReaderRef}
  document={samplePDF}
  configuration={ComPDFKit.getDefaultConfig({
    modeConfig: {
      initialViewMode: "annotations",
    },
  })}
  onCustomContextMenuItemTapped={(identifier : string, event: any) => {
    // 在此处理自定义上下文菜单项的点击逻辑
  }}

  />

回调函数说明

onCustomContextMenuItemTapped 的函数签名如下:

tsx
(identifier: string, event: any) => void;
参数名类型说明
identifierString被点击的自定义菜单项的唯一标识符。在配置菜单项时通过 CPDFContextMenuItem 指定。
eventdynamic点击事件携带的上下文数据(payload)。不同菜单上下文及菜单类型返回的数据结构不同。

event 数据结构说明

说明: event 通常以 Map<String, dynamic> 的形式返回。 当返回值中包含 CPDFAnnotation、CPDFWidget 等对象时,可通过对应对象的 API 进一步获取详细属性信息。


1)Global

screenshot(截图相关菜单)

tsx
event = {
  "identifier": string,
  "image": string,
};
字段类型说明
identifierstring菜单项标识符
imagestring截图的图像Base64数据

2)View Mode

textSelect(查看模式下文本选中)

tsx
event = {
  "identifier": String,
  "text": String,
  "rect": CPDFRectF,
  "pageIndex": int,
};
字段类型说明
identifierstring菜单项标识符
textstring被选中的文本内容
rectCPDFRectF文本选区在页面中的区域
pageIndexint文本所在页面索引

3)Annotation Mode

textSelect(注释模式下文本选中)

tsx
event = {
  "identifier": string,
  "text": string,
  "rect": CPDFRectF,
  "pageIndex": int,
};

longPressContent(长按页面内容)

tsx
event = {
  "identifier": string,
  "point": any,
  "pageIndex": int,
};

markupContent / soundContent / inkContent / shapeContent / freeTextContent / signStampContent / stampContent / linkContent

当上下文菜单对应的是某一注释对象(如高亮、墨迹、图形、自由文本、签名/图章、链接等)时,event 将返回对应的注释实例:

tsx
event = {
  "annotation": CPDFAnnotation,
};

4)Content Editor Mode

editTextAreaContent / editSelectTextContent

(内容编辑:文本区域 / 选中文本)

tsx
event = {
  "editArea": CPDFEditTextArea,
};

imageAreaContent(内容编辑:图片区域)

tsx
event = {
  "imageArea": CPDFEditImageArea,
};

editPathContent(内容编辑:路径 / 图形区域)

tsx
event = {
  "editArea": CPDFEditPathArea,
};

longPressWithEditTextMode / longPressWithEditImageMode / longPressWithAllMode

(内容编辑模式下的长按操作)

tsx
event = {
  "point": any,
  "pageIndex": int,
};

5)Form Mode

textField / checkBox / radioButton / listBox / comboBox / signatureField / pushButton

(表单模式下的表单字段相关菜单)

tsx
event = {
  "widget": CPDFWidget,
};