Zarządzanie komentarzami prezentacji na Androidzie
Przegląd
Ten artykuł wyjaśnia, jak zarządzać komentarzami w prezentacji w Aspose.Slides. Pokazuje główne typy związane z komentarzami oraz demonstruje, jak dodawać komentarze do slajdów, uzyskiwać dostęp do istniejących komentarzy, pracować z odpowiedziami, korzystać z nowoczesnych komentarzy i usuwać komentarze z prezentacji.
Przykłady koncentrują się na typowych scenariuszach przeglądu i współpracy w PowerPoint, takich jak przypisywanie komentarzy autorom, odczytywanie treści i metadanych komentarzy, budowanie łańcuchów odpowiedzi oraz czyszczenie wszystkich komentarzy lub usuwanie wybranych.
W PowerPoint komentarz pojawia się jako notatka lub adnotacja na slajdzie. Po kliknięciu komentarza jego zawartość lub wiadomości są wyświetlane.
Dlaczego dodawać komentarze do prezentacji?
Możesz chcieć używać komentarzy, aby przekazywać opinie lub komunikować się z współpracownikami podczas przeglądania prezentacji.
- Klasa Presentation, która zawiera kolekcje autorów (z interfejsu ICommentAuthorCollection). Autorzy dodają komentarze do slajdów.
- Interfejs ICommentCollection, który zawiera kolekcję komentarzy dla poszczególnych autorów.
- Klasa IComment, która zawiera informacje o autorach i ich komentarzach: kto dodał komentarz, kiedy został dodany, pozycję komentarza itp.
- Klasa CommentAuthor, która zawiera informacje o poszczególnych autorach: nazwę autora, jego inicjały, komentarze powiązane z nazwą autora itp.
Dodaj komentarz do slajdu
Ten kod w języku Java pokazuje, jak dodać komentarz do slajdu w prezentacji PowerPoint:
// Tworzy instancję klasy Presentation
Presentation pres = new Presentation();
try {
// Dodaje pusty slajd
pres.getSlides().addEmptySlide(pres.getLayoutSlides().get_Item(0));
// Dodaje autora
ICommentAuthor author = pres.getCommentAuthors().addAuthor("Jawad", "MF");
// Ustawia pozycję dla komentarzy
Point2D.Float point = new Point2D.Float(0.2f, 0.2f);
// Dodaje komentarz slajdu dla autora na slajdzie 1
author.getComments().addComment("Hello Jawad, this is slide comment", pres.getSlides().get_Item(0), point, new Date());
// Dodaje komentarz slajdu dla autora na slajdzie 2
author.getComments().addComment("Hello Jawad, this is second slide comment", pres.getSlides().get_Item(1), point, new Date());
// Uzyskuje dostęp do ISlide 1
ISlide slide = pres.getSlides().get_Item(0);
// Gdy jako argument przekazany jest null, komentarze od wszystkich autorów są pobierane do wybranego slajdu
IComment[] Comments = slide.getSlideComments(author);
// Uzyskuje dostęp do komentarza o indeksie 0 dla slajdu 1
String str = Comments[0].getText();
pres.save("Comments_out.pptx", SaveFormat.Pptx);
if (Comments.length > 0)
{
// Wybiera kolekcję komentarzy autora o indeksie 0
ICommentCollection commentCollection = Comments[0].getAuthor().getComments();
String Comment = commentCollection.get_Item(0).getText();
}
} finally {
if (pres != null) pres.dispose();
}
Uzyskaj dostęp do komentarzy slajdu
Ten kod w języku Java pokazuje, jak uzyskać dostęp do istniejącego komentarza na slajdzie w prezentacji PowerPoint:
// Tworzy instancję klasy Presentation
Presentation pres = new Presentation("Comments1.pptx");
try {
for (ICommentAuthor commentAuthor : pres.getCommentAuthors())
{
CommentAuthor author = (CommentAuthor) commentAuthor;
for (IComment comment1 : author.getComments())
{
Comment comment = (Comment) comment1;
System.out.println("ISlide :" + comment.getSlide().getSlideNumber() + " has comment: " + comment.getText() +
" with Author: " + comment.getAuthor().getName() + " posted on time :" + comment.getCreatedTime() + "\n");
}
}
} finally {
if (pres != null) pres.dispose();
}
Odpowiadanie na komentarze
Komentarz nadrzędny to górny lub oryginalny komentarz w hierarchii komentarzy lub odpowiedzi. Używając metod getParentComment lub setParentComment (z interfejsu IComment), możesz ustawić lub pobrać komentarz nadrzędny.
Ten kod w języku Java pokazuje, jak dodawać komentarze i pobierać odpowiedzi do nich:
Presentation pres = new Presentation();
try {
// Dodaje komentarz
ICommentAuthor author1 = pres.getCommentAuthors().addAuthor("Author_1", "A.A.");
IComment comment1 = author1.getComments().addComment("comment1", pres.getSlides().get_Item(0), new Point2D.Float(10, 10), new Date());
// Dodaje odpowiedź do comment1
ICommentAuthor author2 = pres.getCommentAuthors().addAuthor("Autror_2", "B.B.");
IComment reply1 = author2.getComments().addComment("reply 1 for comment 1", pres.getSlides().get_Item(0), new Point2D.Float(10, 10), new Date());
reply1.setParentComment(comment1);
// Dodaje kolejną odpowiedź do comment1
IComment reply2 = author2.getComments().addComment("reply 2 for comment 1", pres.getSlides().get_Item(0), new Point2D.Float(10, 10), new Date());
reply2.setParentComment(comment1);
// Dodaje odpowiedź do istniejącej odpowiedzi
IComment subReply = author1.getComments().addComment("subreply 3 for reply 2", pres.getSlides().get_Item(0), new Point2D.Float(10, 10), new Date());
subReply.setParentComment(reply2);
IComment comment2 = author2.getComments().addComment("comment 2", pres.getSlides().get_Item(0), new Point2D.Float(10, 10), new Date());
IComment comment3 = author2.getComments().addComment("comment 3", pres.getSlides().get_Item(0), new Point2D.Float(10, 10), new Date());
IComment reply3 = author1.getComments().addComment("reply 4 for comment 3", pres.getSlides().get_Item(0), new Point2D.Float(10, 10), new Date());
reply3.setParentComment(comment3);
// Wyświetla hierarchię komentarzy w konsoli
ISlide slide = pres.getSlides().get_Item(0);
IComment[] comments = slide.getSlideComments(null);
for (int i = 0; i < comments.length; i++)
{
IComment comment = comments[i];
while (comment.getParentComment() != null)
{
System.out.print("\t");
comment = comment.getParentComment();
}
System.out.println(comments[i].getAuthor().getName() + " : " + comments[i].getText());
System.out.println();
}
pres.save("parent_comment.pptx",SaveFormat.Pptx);
// Usuwa comment1 i wszystkie odpowiedzi do niego
comment1.remove();
pres.save("remove_comment.pptx",SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Uwaga
- Gdy metoda Remove (z interfejsu IComment) jest używana do usunięcia komentarza, odpowiedzi na ten komentarz również zostają usunięte.
- Jeśli ustawienie setParentComment powoduje referencję cykliczną, zostanie zgłoszony wyjątek PptxEditException.
Dodaj nowoczesny komentarz
W 2021 roku Microsoft wprowadził nowoczesne komentarze w PowerPoint. Funkcja nowoczesnych komentarzy znacznie usprawnia współpracę w PowerPoint. Dzięki nowoczesnym komentarzom użytkownicy PowerPoint mogą rozwiązywać komentarze, przypinać je do obiektów i tekstu oraz znacznie łatwiej wchodzić w interakcje niż wcześniej.
Aspose.Slides obsługuje nowoczesne komentarze przy pomocy klasy ModernComment. Do klasy CommentCollection dodano metody addModernComment i insertModernComment.
Ten kod w języku Java pokazuje, jak dodać nowoczesny komentarz do slajdu w prezentacji PowerPoint:
Presentation pres = new Presentation();
try {
ICommentAuthor newAuthor = pres.getCommentAuthors().addAuthor("Some Author", "SA");
IModernComment modernComment = newAuthor.getComments().addModernComment("This is a modern comment", pres.getSlides().get_Item(0), null, new Point2D.Float(100, 100), new Date());
pres.save("pres.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Usuń komentarz
Usuń wszystkie komentarze i autorów
Ten kod w języku Java pokazuje, jak usunąć wszystkie komentarze i autorów w prezentacji:
Presentation presentation = new Presentation("example.pptx");
try {
// Usuwa wszystkie komentarze z prezentacji
for (ICommentAuthor author : presentation.getCommentAuthors())
{
author.getComments().clear();
}
// Usuwa wszystkich autorów
presentation.getCommentAuthors().clear();
presentation.save("example_out.pptx", SaveFormat.Pptx);
} finally {
if (presentation != null) presentation.dispose();
}
Usuń określone komentarze
Ten kod w języku Java pokazuje, jak usunąć wybrane komentarze na slajdzie:
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
// dodaj komentarze...
ICommentAuthor author = presentation.getCommentAuthors().addAuthor("Author", "A");
author.getComments().addComment("comment 1", slide, new Point2D.Float(0.2f, 0.2f), new Date());
author.getComments().addComment("comment 2", slide, new Point2D.Float(0.3f, 0.2f), new Date());
// usuń wszystkie komentarze zawierające tekst "comment 1"
for (ICommentAuthor commentAuthor : presentation.getCommentAuthors())
{
ArrayList<IComment> toRemove = new ArrayList<IComment>();
for (IComment comment : slide.getSlideComments(commentAuthor))
{
if (comment.getText().equals("comment 1"))
{
toRemove.add(comment);
}
}
for (IComment comment : toRemove)
{
commentAuthor.getComments().remove(comment);
}
}
presentation.save("pres.pptx", SaveFormat.Pptx);
} finally {
if (presentation != null) presentation.dispose();
}
FAQ
Czy Aspose.Slides obsługuje status, taki jak „rozwiązany”, dla nowoczesnych komentarzy?
Tak. Nowoczesne komentarze udostępniają metodę setStatus; możesz ustawić stan komentarza (na przykład oznaczyć go jako rozwiązany), a stan ten jest zapisywany w pliku i rozpoznawany przez PowerPoint.
Czy obsługiwane są dyskusje wątkowe (łańcuchy odpowiedzi) i czy istnieje limit zagnieżdżenia?
Tak. Każdy komentarz może odwoływać się do swojego komentarza nadrzędnego, umożliwiając dowolnie długie łańcuchy odpowiedzi. API nie definiuje określonego limitu głębokości zagnieżdżenia.
W jakim systemie współrzędnych definiowana jest pozycja znacznika komentarza na slajdzie?
Pozycja jest przechowywana jako punkt zmiennoprzecinkowy w systemie współrzędnych slajdu. Dzięki temu możesz umieścić znacznik komentarza dokładnie w wybranym miejscu.