Comentarios de Presentación
En PowerPoint, un comentario aparece como una nota o una anotación en una diapositiva. Cuando se hace clic en un comentario, se revelan su contenido o mensajes.
¿Por qué agregar comentarios a las presentaciones?
Puede que desee usar comentarios para proporcionar retroalimentación o comunicarse con sus colegas cuando revise presentaciones.
Para permitirle usar comentarios en las presentaciones de PowerPoint, Aspose.Slides para C++ proporciona
- La clase Presentation, que contiene las colecciones de autores (del método get_CommentAuthors()). Los autores agregan comentarios a las diapositivas.
- La interfaz ICommentCollection, que contiene la colección de comentarios para autores individuales.
- La clase IComment, que contiene información sobre los autores y sus comentarios: quién agregó el comentario, la hora en que se agregó el comentario, la posición del comentario, etc.
- La clase CommentAuthor, que contiene información sobre autores individuales: el nombre del autor, sus iniciales, comentarios asociados con el nombre del autor, etc.
Agregar Comentario a la Diapositiva
Este código C++ le muestra cómo agregar un comentario a una diapositiva en una presentación de PowerPoint:
// Instancia la clase Presentation
auto presentation = System::MakeObject<Presentation>();
// Agrega una diapositiva vacía
presentation->get_Slides()->AddEmptySlide(presentation->get_LayoutSlides()->idx_get(0));
// Agrega un autor
auto author = presentation->get_CommentAuthors()->AddAuthor(u"Jawad", u"MF");
// Establece la posición para los comentarios
PointF point;
point.set_X(0.2f);
point.set_Y(0.2f);
// Accede a ISlide 1
auto slide1 = presentation->get_Slides()->idx_get(0);
// Accede a ISlide 2
auto slide2 = presentation->get_Slides()->idx_get(1);
// Agrega un comentario de diapositiva para un autor en la diapositiva 1
author->get_Comments()->AddComment(u"Hola Jawad, este es un comentario de diapositiva", slide1, point, DateTime::get_Now());
// Agrega un comentario de diapositiva para un autor en la diapositiva 2
author->get_Comments()->AddComment(u"Hola Jawad, este es el segundo comentario de diapositiva", slide2, point, DateTime::get_Now());
// Cuando se pasa null como argumento, se traen los comentarios de todos los autores a la diapositiva seleccionada
auto comments = slide1->GetSlideComments(author);
// Accede al comentario en el índice 0 para la diapositiva 1
String str = comments[0]->get_Text();
presentation->Save(u"Comentarios_salida.pptx", SaveFormat::Pptx);
if (comments->GetLength(0) > 0)
{
// Selecciona la colección de comentarios del autor en el índice 0
auto commentCollection = comments[0]->get_Author()->get_Comments();
String Comment = commentCollection->idx_get(0)->get_Text();
}
Acceder a Comentarios de Diapositivas
Este código C++ le muestra cómo acceder a un comentario existente en una diapositiva en una presentación de PowerPoint:
// Instancia la clase Presentation
auto presentation = System::MakeObject<Presentation>(u"Comentarios1.pptx");
for (auto&& commentAuthor : presentation->get_CommentAuthors())
{
auto author = System::ExplicitCast<CommentAuthor>(commentAuthor);
for (auto&& comment1 : System::IterateOver(author->get_Comments()))
{
SmartPtr<Comment> comment = System::ExplicitCast<Comment>(comment1);
Console::WriteLine(String(u"ISlide :")
+ comment->get_Slide()->get_SlideNumber()
+ u" tiene comentario: " + comment->get_Text()
+ u" con Autor: " + comment->get_Author()->get_Name()
+ u" publicado a la hora :" + comment->get_CreatedTime() + u"\n");
}
}
Responder Comentarios
Un comentario padre es el comentario original o superior en una jerarquía de comentarios o respuestas. Usando la propiedad ParentComment (de la interfaz IComment), puede establecer o obtener un comentario padre.
Este código C++ le muestra cómo agregar comentarios y obtener respuestas a ellos:
auto pres = System::MakeObject<Presentation>();
// Accede a ISlide 1
auto slide1 = pres->get_Slides()->idx_get(0);
// Agrega un comentario
auto author1 = pres->get_CommentAuthors()->AddAuthor(u"Autor_1", u"A.A.");
auto comment1 = author1->get_Comments()->AddComment(u"comentario1", slide1, PointF(10.0f, 10.0f), DateTime::get_Now());
// Agrega una respuesta a comment1
auto author2 = pres->get_CommentAuthors()->AddAuthor(u"Autor_2", u"B.B.");
auto reply1 = author2->get_Comments()->AddComment(u"respuesta 1 para comentario 1", slide1, PointF(10.0f, 10.0f), DateTime::get_Now());
reply1->set_ParentComment(comment1);
// Agrega otra respuesta a comment1
auto reply2 = author2->get_Comments()->AddComment(u"respuesta 2 para comentario 1", slide1, PointF(10.0f, 10.0f), DateTime::get_Now());
reply2->set_ParentComment(comment1);
// Agrega una respuesta a respuesta existente
auto subReply = author1->get_Comments()->AddComment(u"subrespuesta 3 para respuesta 2", slide1, PointF(10.0f, 10.0f), DateTime::get_Now());
subReply->set_ParentComment(reply2);
auto comment2 = author2->get_Comments()->AddComment(u"comentario 2", slide1, PointF(10.0f, 10.0f), DateTime::get_Now());
auto comment3 = author2->get_Comments()->AddComment(u"comentario 3", slide1, PointF(10.0f, 10.0f), DateTime::get_Now());
auto reply3 = author1->get_Comments()->AddComment(u"respuesta 4 para comentario 3", slide1, PointF(10.0f, 10.0f), DateTime::get_Now());
reply3->set_ParentComment(comment3);
// Muestra la jerarquía de comentarios en la consola
auto comments = slide1->GetSlideComments(nullptr);
for (int32_t i = 0; i < comments->get_Length(); i++)
{
auto comment = comments[i];
while (comment->get_ParentComment() != nullptr)
{
Console::Write(u"\t");
comment = comment->get_ParentComment();
}
Console::Write(u"{0} : {1}", comments[i]->get_Author()->get_Name(), comments[i]->get_Text());
Console::WriteLine();
}
pres->Save(u"comentario_padre.pptx", SaveFormat::Pptx);
// Elimina comment1 y todas las respuestas a él
comment1->Remove();
pres->Save(u"eliminar_comentario.pptx", SaveFormat::Pptx);
Atención
- Cuando se utiliza el método Remove (de la interfaz IComment) para eliminar un comentario, las respuestas al comentario también se eliminan.
- Si la configuración ParentComment resulta en una referencia circular, se lanzará una PptxEditException.
Agregar Comentario Moderno
En 2021, Microsoft introdujo comentarios modernos en PowerPoint. La función de comentarios modernos mejora significativamente la colaboración en PowerPoint. A través de comentarios modernos, los usuarios de PowerPoint pueden resolver comentarios, anclar comentarios a objetos y textos, y participar en interacciones de manera mucho más fácil que antes.
En Aspose Slides para C++ 21.11, implementamos soporte para comentarios modernos al agregar la clase ModernComment. Se añadieron los métodos AddModernComment y InsertModernComment a la clase CommentCollection.
Este código C++ le muestra cómo agregar un comentario moderno a una diapositiva en una presentación de PowerPoint:
auto pres = System::MakeObject<Presentation>();
// Accede a ISlide 1
auto slide1 = pres->get_Slides()->idx_get(0);
auto newAuthor = pres->get_CommentAuthors()->AddAuthor(u"Algún Autor", u"SA");
auto modernComment = newAuthor->get_Comments()->AddModernComment(u"Este es un comentario moderno", slide1, nullptr, PointF(100.0f, 100.0f), DateTime::get_Now());
pres->Save(u"pres.pptx", SaveFormat::Pptx);
Eliminar Comentario
Eliminar Todos los Comentarios y Autores
Este código C++ le muestra cómo eliminar todos los comentarios y autores en una presentación:
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System::Drawing;
auto presentation = System::MakeObject<Presentation>(u"ejemplo.pptx");
// Elimina todos los comentarios de la presentación
for (auto author : presentation->get_CommentAuthors())
{
author->get_Comments()->Clear();
}
// Elimina todos los autores
presentation->get_CommentAuthors()->Clear();
presentation->Save(u"ejemplo_salida.pptx", SaveFormat::Pptx);
Eliminar Comentarios Específicos
Este código C++ le muestra cómo eliminar comentarios específicos en una diapositiva:
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System::Drawing;
auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slides()->idx_get(0);
// agregar comentarios...
auto author = presentation->get_CommentAuthors()->AddAuthor(u"Autor", u"A");
author->get_Comments()->AddComment(u"comentario 1", slide, PointF(0.2f, 0.2f), System::DateTime::get_Now());
author->get_Comments()->AddComment(u"comentario 2", slide, PointF(0.3f, 0.2f), System::DateTime::get_Now());
// eliminar todos los comentarios que contienen el texto "comentario 1"
for (auto commentAuthor : presentation->get_CommentAuthors())
{
auto toRemove = System::MakeObject<System::Collections::Generic::List<System::SharedPtr<IComment>>>();
for (auto comment : slide->GetSlideComments(commentAuthor))
{
if (comment->get_Text() == u"comentario 1")
{
toRemove->Add(comment);
}
}
for (auto comment : toRemove)
{
commentAuthor->get_Comments()->Remove(comment);
}
}
presentation->Save(u"pres.pptx", SaveFormat::Pptx);