Skip to content

注释回复

注释回复功能使您和其他用户能够直接在文档中进行书面讨论。ComPDFKit 为访问文档中的回复提供了方便的 API,同时还提供了用于查看和编辑回复的用户界面(UI)组件。

创建文本回复

文本回复功能可以在注释下添加文本回复,常用于对注释的书面讨论。

创建文本回复的步骤如下:

  1. 从 CPDFDocument 上获取到需要创建文本回复的页面对象。

  2. 在页面对象上获取注释

  3. 在注释上创建文本回复注释,并添加回复内容

以下是创建文本回复的示例代码:

swift
// 获取需要创建便签的页面对象
if let page = document?.page(at: 0) {
  // 在页面中获取注释
  let annotation = page.annotations[0]
  
  // 创建注释回复并添加回复内容
  let reply = annotation?.createReply()
  reply?.contents = "ComPDFKit"
}
objective-c
// 获取需要创建便签的页面对象
CPDFPage *page = [document pageAtIndex:0];

// 在页面中获取注释
CPDFAnnotation *annotation = page.annotations[0];

// 创建注释回复并添加回复内容
 CPDFAnnotation *reply = [annotation createReplyAnnotation];
reply.contents = @"ComPDFKit";

创建状态回复

状态回复功能可以标记注释的状态,分为勾选状态和评论状态,可通过CPDFAnnotationState枚举类型区分状态类型。

创建状态回复的步骤如下:

  1. 从 CPDFDocument 上获取到需要创建状态回复的页面对象。

  2. 在页面对象上获取注释

  3. 在注释上创建勾选状态回复注释和评论状态回复注释

以下是创建状态回复的示例代码:

swift
// 获取需要创建便签的页面对象
if let page = document?.page(at: 0) {
  // 在页面中获取注释
  let annotation = page.annotations[0]
  
  // 创建勾选状态回复
  let mark = annotation?.createReplyStateAnnotation(.marked)
  // 创建评论状态回复
  let mark = annotation?.createReplyStateAnnotation(.rejected)
}
objective-c
// 获取需要创建便签的页面对象
CPDFPage *page = [document pageAtIndex:0];

// 在页面中获取注释
CPDFAnnotation *annotation = page.annotations[0];

// 创建勾选状态回复
CPDFAnnotation *mark = [annotation createReplyStateAnnotation:CPDFAnnotationStateMarked];
// 创建评论状态回复
CPDFAnnotation *review = [annotation createReplyStateAnnotation:CPDFAnnotationStateRejected];

状态回复注释类型枚举

NameDescription
CPDFAnnotationStateMarked勾选状态,用于勾选状态回复
CPDFAnnotationStateUnMarked非勾选状态,用于勾选状态回复
CPDFAnnotationStateAccepted接受状态,用于评论状态回复
CPDFAnnotationStateRejected拒绝状态,用于评论状态回复
CPDFAnnotationStateCanceled取消状态,用于评论状态回复
CPDFAnnotationStateCompleted完成状态,用于评论状态回复
CPDFAnnotationStateNone无状态,用于评论状态回复
CPDFAnnotationStateError状态错误

获取所有回复

获取所有回复功能可以获取注释下的所有回复,包括文本回复和状态回复,可通过CPDFReplyAnnotationType枚举类型区分回复类型。

获取所有回复的步骤如下:

  1. 从 CPDFDocument 上获取到需要的页面对象。
  2. 在页面对象上获取注释
  3. 获取注释的所有回复,并区分回复类型

以下是创建状态回复的示例代码:

swift
// 获取需要创建便签的页面对象
if let page = document?.page(at: 0) {
  // 在页面中获取注释
  let annotation = page.annotations[0]
  
  // 获取注释的所有回复
  let replies = annotation.replyAnnotations ?? []
  for reply in replies {
      if reply.replyAnnotationType == .reply {
          // 文本回复注释类型
      } else if reply.replyAnnotationType == .mark {
          // 勾选状态回复注释类型
      } else if reply.replyAnnotationType == .review {
          // 评论状态回复注释类型
      }
  }
}
objective-c
// 获取需要创建便签的页面对象
CPDFPage *page = [document pageAtIndex:0];

// 在页面中获取注释
CPDFAnnotation *annotation = page.annotations[0];

  // 获取注释的所有回复
NSArray<CPDFAnnotation *> *replies = [annotation replyAnnotations];
for (CPDFAnnotation *reply in replies) {
    if (reply.replyAnnotationType == CPDFReplyAnnotationTypeReply) {
				// 文本回复注释类型
    } else if (reply.replyAnnotationType == CPDFReplyAnnotationTypeMark) {
				// 勾选状态回复注释类型
    } else if (reply.replyAnnotationType == CPDFReplyAnnotationTypeReview) {
				// 评论状态回复注释类型
    }
}

注释的回复类型枚举

NameDescription
CPDFReplyAnnotationTypeNone非回复注释类型,用于区分回复注释和普通注释
CPDFReplyAnnotationTypeReply文本回复注释类型
CPDFReplyAnnotationTypeMark勾选状态回复注释类型
CPDFReplyAnnotationTypeReview评论状态回复注释类型