Trabajar con comentarios

Aspose.Words permite a los usuarios trabajar con comentarios: los comentarios en un documento en Aspose.Words están representados por la clase Comment. Utilice también las clases CommentRangeStart y CommentRangeEnd para especificar la región de texto que debe asociarse con un comentario.

Añadir un comentario

Aspose.Words le permite agregar comentarios de varias maneras:

  1. Usando la clase Comment
  2. Usando las clases CommentRangeStart y CommentRangeEnd

El siguiente ejemplo de código muestra cómo agregar un comentario a un párrafo usando la clase Comment:

El siguiente ejemplo de código muestra cómo agregar un comentario a un párrafo usando una región de texto y las clases CommentRangeStart y CommentRangeEnd:

Extraer o eliminar comentarios

El uso de comentarios en un documento de Word (además del seguimiento de cambios) es una práctica común al revisar documentos, especialmente cuando hay varios revisores. Puede haber situaciones en las que lo único que necesitas de un documento son los comentarios. Supongamos que desea generar una lista de resultados de la revisión, o quizás ha recopilado toda la información útil del documento y simplemente desea eliminar comentarios innecesarios. Es posible que desee ver o eliminar los comentarios de un revisor en particular.

En este ejemplo veremos algunos métodos simples tanto para recopilar información de los comentarios dentro de un documento como para eliminar comentarios de un documento. Específicamente cubriremos cómo:

  • Extraer todos los comentarios de un documento o solo los realizados por un autor en particular.
  • Eliminar todos los comentarios de un documento o solo de un autor en particular.

Cómo extraer o eliminar comentarios

El código de este ejemplo es bastante simple y todos los métodos se basan en el mismo enfoque. Un comentario en un documento de Word está representado por un objeto Comment en el modelo de objetos del documento Aspose.Words. Para recopilar todos los comentarios de un documento, utilice el método get_child_nodes con el primer parámetro establecido en NodeType.COMMENT. Asegúrese de que el segundo parámetro del método get_child_nodes esté establecido en verdadero: esto obliga al get_child_nodes a seleccionar entre todos los nodos secundarios de forma recursiva, en lugar de recopilar solo los nodos secundarios inmediatos.

Para ilustrar cómo extraer y eliminar comentarios de un documento, seguiremos los siguientes pasos:

  1. Abra un documento de Word usando la clase Document.
  2. Obtenga todos los comentarios del documento en una colección.
  3. Para extraer comentarios:
  4. Revisa la colección usando el operador foreach.
  5. Extraiga y enumere el nombre del autor, la fecha y hora y el texto de todos los comentarios.
  6. Extraiga y enumere el nombre del autor, la fecha y hora y el texto de los comentarios escritos por un autor específico, en este caso el autor ‘ks’
  7. Para eliminar comentarios:
  8. Retroceda por la colección usando el operador for
  9. Eliminar comentarios
  10. Guarde los cambios

Cómo extraer todos los comentarios

El método get_child_nodes es muy útil y puedes usarlo cada vez que necesites obtener una lista de nodos de documentos de cualquier tipo. La colección resultante no crea una sobrecarga inmediata porque los nodos se seleccionan en esta colección solo cuando enumera o accede a los elementos que contiene.

El siguiente ejemplo de código muestra cómo extraer el nombre del autor, la fecha y hora y el texto de todos los comentarios del documento:

Cómo extraer comentarios de un autor específico

Una vez que haya seleccionado nodos Comment en una colección, todo lo que tiene que hacer es extraer la información que necesita. En este ejemplo, las iniciales del autor, la fecha, la hora y el texto sin formato del comentario se combinan en una sola cadena; en su lugar, puede optar por almacenarlo de otras formas.

El método sobrecargado que extrae los comentarios de un autor en particular es casi el mismo, solo verifica el nombre del autor antes de agregar la información a la matriz.

El siguiente ejemplo de código muestra cómo extraer el nombre del autor, la fecha y hora y el texto de los comentarios del autor especificado:

Cómo eliminar comentarios

Si está eliminando todos los comentarios, no es necesario desplazarse por la colección eliminando los comentarios uno por uno; puedes eliminarlos llamando a clear en la colección de comentarios.

El siguiente ejemplo de código muestra cómo eliminar todos los comentarios del documento:

Cuando necesita eliminar comentarios de forma selectiva, el proceso se vuelve más similar al código que utilizamos para la extracción de comentarios.

El siguiente ejemplo de código muestra cómo eliminar comentarios del autor especificado:

El punto principal a destacar aquí es el uso del operador for. A diferencia de la extracción simple, aquí desea eliminar un comentario. Un truco adecuado es iterar la colección hacia atrás desde el último Comment hasta el primero. La razón de esto es que si comienza desde el final y avanza hacia atrás, el índice de los elementos anteriores permanece sin cambios y puede regresar al primer elemento de la colección.

El siguiente ejemplo de código muestra los métodos para la extracción y eliminación de comentarios:

Cómo eliminar un comentario entre CommentRangeStart y CommentRangeEnd

Usando Aspose.Words también puedes eliminar comentarios entre los nodos CommentRangeStart y CommentRangeEnd.

El siguiente ejemplo de código muestra cómo eliminar texto entre CommentRangeStart y CommentRangeEnd:

# Open the document.
doc = aw.Document(docs_base.my_dir + "Comments.docx")

commentStart = doc.get_child(aw.NodeType.COMMENT_RANGE_START, 0, True).as_comment_range_start()
commentEnd = doc.get_child(aw.NodeType.COMMENT_RANGE_END, 0, True).as_comment_range_end()

currentNode = commentStart
isRemoving = True
while (currentNode != None and isRemoving) :
    if (currentNode.node_type == aw.NodeType.COMMENT_RANGE_END) :
        isRemoving = False

    nextNode = currentNode.next_pre_order(doc)
    currentNode.remove()
    currentNode = nextNode

# Save the document.
doc.save(docs_base.artifacts_dir + "WorkingWithComments.remove_region_text.docx")

Agregar o eliminar la respuesta del comentario

El método add_reply agrega una respuesta a este comentario. Tenga en cuenta que debido a las limitaciones existentes de Microsoft Office, solo se permite 1 nivel de respuestas en el documento. Se generará una excepción de tipo InvalidOperationException si se llama a este método en el comentario de respuesta existente.

Puede utilizar el método remove_reply para eliminar la respuesta especificada a este comentario.

El siguiente ejemplo de código muestra cómo agregar una respuesta a un comentario y eliminar la respuesta del comentario:

Leer la respuesta del comentario

La propiedad replies devuelve una colección de objetos Comment que son hijos inmediatos del comentario especificado.

El siguiente ejemplo de código muestra cómo iterar a través de las respuestas de un comentario y resolverlas: