Microsoft Word le brinda la posibilidad de agregar comentarios a los documentos de Word. Los comentarios pueden ser útiles en casos como sugerir mejoras en documentos o compartir ideas sobre el texto. Puede haber situaciones en las que necesite administrar los comentarios mediante programación. Con ese fin, este artículo le enseñará cómo trabajar con comentarios en documentos de Word usando C++.

API de C++ para trabajar con comentarios en documentos de Word

Aspose.Words for C++ es una biblioteca nativa de C++ que le permite crear, leer, modificar y convertir documentos de Microsoft Word. Además, también admite trabajar con comentarios en archivos DOCX y DOC. Puede instalar la API a través de NuGet o descargarla directamente desde la sección Descargas.

PM> Install-Package Aspose.Words.Cpp

Agregar comentarios a documentos de Word usando C++

Aspose.Words for C++ API ofrece la posibilidad de agregar comentarios con el nombre del autor, las iniciales y la fecha/hora. Los siguientes son los pasos para agregar comentarios a los documentos de Word.

El siguiente código de ejemplo muestra cómo agregar comentarios a documentos de Word mediante C++.

// Rutas de directorio.
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";

// Cargue el archivo de Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"Sample 1.docx");

// Crear una instancia de la clase DocumentBuilder
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

// Agregar comentario
System::SharedPtr<Comment> comment = System::MakeObject<Comment>(doc, u"Aspose", u"AFFA", System::DateTime::get_Today());
builder->get_CurrentParagraph()->AppendChild(comment);
comment->get_Paragraphs()->Add(System::MakeObject<Paragraph>(doc));
comment->get_FirstParagraph()->get_Runs()->Add(System::MakeObject<Run>(doc, u"Comment text."));

// Guarde el documento.
doc->Save(outputDataDir + u"AddCommentsToExistingDoc.docx");

La siguiente es la imagen de la salida generada por el código de ejemplo.

Imagen de la salida generada por el código de muestra

Leer comentarios de un documento de Word

Los siguientes son los pasos para leer comentarios de documentos de Word.

El siguiente es el código de muestra para leer comentarios de un documento de Word usando C++.

// Rutas de directorio.
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";

// Cargue el archivo de Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"SampleComments.docx");

// Recuperar comentarios
System::SharedPtr<NodeCollection> comments = doc->GetChildNodes(NodeType::Comment, true);

// Recorrer todos los comentarios
for (System::SharedPtr<Comment> comment : System::IterateOver<System::SharedPtr<Comment>>(comments))
{
	// Imprimir información del comentario
	std::cout << comment->get_Author() + u" " + comment->get_DateTime() + u" " + System::StaticCast<Node>(comment)->ToString(SaveFormat::Text);
}

Modificar comentarios en un documento de Word usando C++

Para modificar un comentario, recupérelo usando el método NodeCollection->idxget(int32t index) y cámbielo según sus necesidades. Los siguientes son los pasos para modificar comentarios en un documento de Word.

El siguiente código de ejemplo muestra cómo modificar comentarios en un documento de Word usando C++.

// Rutas de directorio.
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";

// Cargue el archivo de Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"SampleComments.docx");

// Recuperar comentarios
System::SharedPtr<NodeCollection> comments = doc->GetChildNodes(NodeType::Comment, true);

// Obtener comentario
System::SharedPtr<Comment> comment = System::DynamicCast<Comment>(comments->idx_get(0));

// Actualizar el texto del comentario
comment->SetText(u"Updated Text");

// Guarde el documento.
doc->Save(outputDataDir + u"UpdatedComment.docx");

Eliminar comentarios de un documento de Word usando C++

La API de Aspose.Words for C++ proporciona varias formas de eliminar comentarios de documentos de Word. En esta sección, aprenderá cómo eliminar un comentario específico, comentarios por autor y todos los comentarios usando C++.

Eliminar un comentario específico

Los siguientes son los pasos para eliminar un comentario específico.

El siguiente código de ejemplo muestra cómo eliminar un comentario específico de un documento de Word mediante C++.

// Rutas de directorio.
System::String sourceDataDir = u"D:\\Work\\Aspose\\01_SourceDirectory\\";
System::String outputDataDir = u"D:\\Work\\Aspose\\02_OutputDirectory\\";

// Cargue el archivo de Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"SampleComments.docx");

// Recuperar comentarios
System::SharedPtr<NodeCollection> comments = doc->GetChildNodes(NodeType::Comment, true);

// Obtener comentario
System::SharedPtr<Comment> comment = System::DynamicCast<Comment>(comments->idx_get(2));

// Eliminar comentario
comment->Remove();

// Guarde el documento.
doc->Save(outputDataDir + u"DeleteSpecificComments.docx");

Eliminación de comentarios por autor

Los siguientes son los pasos para eliminar comentarios por autor.

El siguiente es el código de muestra para eliminar comentarios por autor usando C++.

// Rutas de directorio.
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";

// Cargue el archivo de Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"SampleComments.docx");

// Recuperar comentarios
System::SharedPtr<NodeCollection> comments = doc->GetChildNodes(NodeType::Comment, true);

// Recorra todos los comentarios y elimine los escritos por el autor de "Aspose".
for (int32_t i = comments->get_Count() - 1; i >= 0; i--)
{
	System::SharedPtr<Comment> comment = System::DynamicCast<Comment>(comments->idx_get(i));
	if (comment->get_Author() == u"Aspose")
	{
		comment->Remove();
	}
}

// Guarde el documento.
doc->Save(outputDataDir + u"DeleteCommentsByAuthor.docx");

Eliminar todos los comentarios

En lugar de eliminar comentarios individuales, puede eliminar todos los comentarios a la vez usando el método NodeCollection->Clear(). Los siguientes son los pasos para eliminar todos los comentarios de un documento de Word.

El siguiente código de ejemplo muestra cómo eliminar todos los comentarios de un documento de Word mediante C++.

// Rutas de directorio.
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";

// Cargue el archivo de Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"SampleComments.docx");

// Recuperar comentarios
System::SharedPtr<NodeCollection> comments = doc->GetChildNodes(NodeType::Comment, true);

// Eliminar todos los comentarios.
comments->Clear();

// Guarde el documento.
doc->Save(outputDataDir + u"DeleteAllComments.docx");

Obtenga una licencia gratis

Puede probar la API sin limitaciones de evaluación solicitando una licencia temporal gratuita.

Conclusión

En este artículo, ha aprendido a trabajar con comentarios en documentos de Word usando C++. En concreto, ha aprendido a añadir, leer, editar y eliminar comentarios. Además, ha visto cómo eliminar un comentario específico, comentarios por autor y todos los comentarios usando Aspose.Words for C++. La API proporciona una gran cantidad de funciones adicionales para automatizar sus tareas relacionadas con Word. Puede explorar la API en detalle visitando la documentación oficial. Si tiene alguna pregunta, no dude en comunicarse con nosotros en nuestro foro de soporte gratuito.

Ver también