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
- Agregar comentarios a documentos de Word usando C++
- Leer comentarios de un documento de Word
- Modificar comentarios en un documento de Word usando C++
- Eliminar comentarios de un documento 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.
- En primer lugar, cargue el documento de Word utilizando la clase Document.
- Cree una instancia de la clase DocumentBuilder pasando el objeto Document creado en el paso anterior.
- Cree el comentario utilizando la clase Comment.
- Agregue el comentario al documento usando DocumentBuilder->getCurrentParagraph()->AppendChild(System::SharedPtrAspose::Words::Node nuevoNiño) método.
- Finalmente, guarde el documento usando el método Document->Save(System::String fileName).
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.
Leer comentarios de un documento de Word
Los siguientes son los pasos para leer comentarios de documentos de Word.
- Cargue el documento de Word utilizando la clase Document.
- Recupere los comentarios usando el método Document->GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep).
- Repita los comentarios y recupere la información de los comentarios individuales.
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.
- En primer lugar, cargue el documento de Word utilizando la clase Document.
- Recupere los comentarios usando el método Document->GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep).
- Obtenga el comentario deseado usando el método NodeCollection->idxget(int32t index) y envíe el resultado a Comment.
- Actualiza el comentario.
- Finalmente, guarde el documento usando el método Document->Save(System::String fileName).
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.
- Cargue el documento de Word utilizando la clase Document.
- Recupere los comentarios usando el método Document->GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep).
- Obtenga el comentario que desea eliminar utilizando el método NodeCollection->idxget(int32t index) y transmita el resultado a Comment.
- Elimine el comentario utilizando el método Comment->Remove().
- Guarde el documento usando el método Document->Save(System::String fileName).
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.
- En primer lugar, cargue el documento de Word utilizando la clase Document.
- Recupere los comentarios usando el método Document->GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep).
- Recorre los comentarios.
- Dentro del bucle, recupere el comentario y compare su autor. Si el autor coincide, elimina el comentario.
- Finalmente, guarde el documento usando el método Document->Save(System::String fileName).
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.
- Cargue el documento de Word utilizando la clase Document.
- Recupere los comentarios usando el método Document->GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep).
- Elimina todos los comentarios usando el método NodeCollection->Clear().
- Finalmente, guarde el documento usando el método Document->Save(System::String fileName).
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.