处理意见

Aspose.Words允许用户使用注释-Aspose.Words中的文档中的注释由Comment类表示。 还可以使用CommentRangeStartCommentRangeEnd类指定应与注释关联的文本区域。

添加评论

Aspose.Words允许您以多种方式添加注释:

  1. 使用Comment
  2. 使用CommentRangeStartCommentRangeEnd

下面的代码示例演示如何使用Comment类向段落添加注释:

下面的代码示例演示如何使用文本区域以及CommentRangeStartCommentRangeEnd类向段落添加注释:

提取或删除注释

在Word文档中使用注释(除了跟踪更改之外)是审阅文档时的常见做法,特别是当有多个审阅者时。 在某些情况下,您需要从文档中获得的唯一内容是注释。 假设您想生成一个审查结果列表,或者您已经从文档中收集了所有有用的信息,并且您只想删除不必要的评论。 您可能希望查看或删除特定审阅者的注释。

在本示例中,我们将介绍一些简单的方法,既可以从文档中的注释中收集信息,也可以从文档中删除注释。 具体来说,我们将介绍如何:

  • 从文档中提取所有注释或仅提取特定作者的注释。
  • 从文档中或仅从特定作者中删除所有注释。

如何提取或删除注释

此示例中的代码实际上非常简单,所有方法都基于相同的方法。 Word文档中的注释由Aspose.Words文档对象模型中的Comment对象表示。 要收集文档中的所有注释,请使用第一个参数设置为NodeType.CommentGetChildNodes方法。 确保GetChildNodes方法的第二个参数设置为true:这会强制GetChildNodes递归地从所有子节点中进行选择,而不是只收集直接子节点。

为了说明如何从文档中提取和删除注释,我们将执行以下步骤:

  1. 使用Document类打开Word文档
  2. 将文档中的所有注释获取到集合中
  3. 提取评论:
    1. 使用foreach运算符浏览集合
    2. 提取并列出所有评论的作者姓名,日期和时间以及文本
    3. 提取并列出作者姓名,日期和时间以及特定作者撰写的评论文本,在这种情况下,作者’ks'
  4. 删除注释:
    1. 使用for the operator向后遍历集合
    2. 删除评论
  5. 保存更改

如何提取所有评论

GetChildNodes方法非常有用,您可以在每次需要获取任何类型的文档节点列表时使用它。 生成的集合不会立即产生开销,因为只有在枚举或访问其中的项时,才会将节点选择到此集合中。

下面的代码示例演示如何提取文档中所有注释的作者姓名、日期和时间以及文本:

如何提取指定作者的评论

在将注释节点选择到集合中后,您所要做的就是提取所需的信息。 在此示例中,作者姓名缩写、日期、时间和注释的纯文本组合成一个字符串;您可以选择以其他方式存储它。

从特定作者提取注释的重载方法几乎相同,它只是在将信息添加到数组之前检查作者的姓名。

下面的代码示例演示如何提取指定作者的作者姓名、日期和时间以及注释的文本:

如何删除评论

如果要删除所有注释,则无需逐个删除注释;您可以通过在comments集合上调用NodeCollection.Clear来删除它们。

下面的代码示例演示如何删除文档中的所有注释:

当您需要有选择地删除注释时,该过程变得更加类似于我们用于注释提取的代码。

下面的代码示例演示如何删除指定作者的注释:

这里要强调的要点是使用for运算符。 与简单的提取不同,在这里您要删除注释。 一个合适的技巧是将集合从最后一个注释向后迭代到第一个注释。 这样做的原因如果您从末尾开始并向后移动,则前面项目的索引保持不变,并且您可以工作回到集合中的第一个项目。

下面的代码示例演示注释提取和删除的方法:

如何删除CommentRangeStart和CommentRangeEnd之间的注释

使用Aspose.Words还可以删除CommentRangeStartCommentRangeEnd节点之间的注释。

下面的代码示例演示如何删除CommentRangeStartCommentRangeEnd之间的文本:

添加和删除评论的回复

AddReply方法将回复添加到此注释。 请注意,由于现有的Microsoft Office限制,文档中仅允许1级别的回复。 如果对现有回复注释调用此方法,则会引发InvalidOperationException类型的异常。

您可以使用RemoveReply方法删除对此注释的指定回复。

下面的代码示例演示如何向注释添加回复并删除注释的回复:

阅读评论的回复

Replies属性返回Comment对象的集合,这些对象是指定注释的直接子项。

下面的代码示例演示如何遍历注释的回复并解析它们: