Gestire i commenti della presentazione su Android
Panoramica
Questo articolo spiega come gestire i commenti di presentazione in Aspose.Slides. Mostra i principali tipi correlati ai commenti e dimostra come aggiungere commenti alle diapositive, accedere ai commenti esistenti, lavorare con le risposte, utilizzare i commenti moderni e rimuovere i commenti da una presentazione.
Gli esempi si concentrano su scenari comuni di revisione e collaborazione in PowerPoint, come assegnare commenti agli autori, leggere il contenuto e i metadati dei commenti, costruire catene di risposta e cancellare tutti i commenti o eliminarne di selezionati.
In PowerPoint, un commento appare come una nota o un’annotazione su una diapositiva. Quando si fa clic su un commento, ne vengono rivelati i contenuti o i messaggi.
Perché aggiungere commenti alle presentazioni?
Potresti voler utilizzare i commenti per fornire feedback o comunicare con i colleghi durante la revisione delle presentazioni.
Per consentirti di utilizzare i commenti nelle presentazioni PowerPoint, Aspose.Slides per Android via Java fornisce
- La classe Presentation che contiene le raccolte di autori (dall’interfaccia ICommentAuthorCollection). Gli autori aggiungono commenti alle diapositive.
- L’interfaccia ICommentCollection che contiene la raccolta di commenti per singoli autori.
- La classe IComment che contiene informazioni sugli autori e i loro commenti: chi ha aggiunto il commento, l’ora in cui è stato aggiunto, la posizione del commento, ecc.
- La classe CommentAuthor che contiene informazioni sugli autori individuali: nome dell’autore, le sue iniziali, i commenti associati al nome dell’autore, ecc.
Aggiungere un commento a una diapositiva
Questo codice Java mostra come aggiungere un commento a una diapositiva in una presentazione PowerPoint:
// Istanzia la classe Presentation
Presentation pres = new Presentation();
try {
// Aggiunge una diapositiva vuota
pres.getSlides().addEmptySlide(pres.getLayoutSlides().get_Item(0));
// Aggiunge un autore
ICommentAuthor author = pres.getCommentAuthors().addAuthor("Jawad", "MF");
// Imposta la posizione per i commenti
Point2D.Float point = new Point2D.Float(0.2f, 0.2f);
// Aggiunge un commento alla diapositiva per un autore sulla diapositiva 1
author.getComments().addComment("Hello Jawad, this is slide comment", pres.getSlides().get_Item(0), point, new Date());
// Aggiunge un commento alla diapositiva per un autore sulla diapositiva 2
author.getComments().addComment("Hello Jawad, this is second slide comment", pres.getSlides().get_Item(1), point, new Date());
// Accede a ISlide 1
ISlide slide = pres.getSlides().get_Item(0);
// Quando si passa null come argomento, i commenti di tutti gli autori vengono riportati alla diapositiva selezionata
IComment[] Comments = slide.getSlideComments(author);
// Accede al commento all'indice 0 per la diapositiva 1
String str = Comments[0].getText();
pres.save("Comments_out.pptx", SaveFormat.Pptx);
if (Comments.length > 0)
{
// Seleziona la raccolta dei commenti dell'autore all'indice 0
ICommentCollection commentCollection = Comments[0].getAuthor().getComments();
String Comment = commentCollection.get_Item(0).getText();
}
} finally {
if (pres != null) pres.dispose();
}
Accedere ai commenti delle diapositive
Questo codice Java mostra come accedere a un commento esistente su una diapositiva in una presentazione PowerPoint:
// Istanzia la classe 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();
}
Rispondere ai commenti
Un commento genitore è il commento principale o originale in una gerarchia di commenti o risposte. Utilizzando i metodi getParentComment o setParentComment (dall’interfaccia IComment), è possibile impostare o ottenere un commento genitore.
Questo codice Java mostra come aggiungere commenti e recuperare le risposte a essi:
Presentation pres = new Presentation();
try {
// Aggiunge un commento
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());
// Aggiunge una risposta a 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);
// Aggiunge un'altra risposta a 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);
// Aggiunge una risposta a una risposta esistente
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);
// Visualizza la gerarchia dei commenti sulla console
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);
// Rimuove comment1 e tutte le risposte ad esso
comment1.remove();
pres.save("remove_comment.pptx",SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Attention
- Quando il metodo Remove (dell’interfaccia IComment) viene usato per eliminare un commento, anche le risposte al commento vengono eliminate.
- Se l’impostazione setParentComment genera un riferimento circolare, verrà generata l’eccezione PptxEditException.
Aggiungere un commento moderno
Nel 2021, Microsoft ha introdotto i commenti moderni in PowerPoint. La funzionalità dei commenti moderni migliora notevolmente la collaborazione in PowerPoint. Attraverso i commenti moderni, gli utenti di PowerPoint possono risolvere i commenti, ancorare i commenti a oggetti e testi e interagire in modo molto più semplice rispetto al passato.
Aspose.Slides supporta i commenti moderni tramite la classe ModernComment. I metodi addModernComment e insertModernComment sono stati aggiunti alla classe CommentCollection.
Questo codice Java mostra come aggiungere un commento moderno a una diapositiva in una presentazione 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();
}
Rimuovere un commento
Eliminare tutti i commenti e gli autori
Questo codice Java mostra come rimuovere tutti i commenti e gli autori in una presentazione:
Presentation presentation = new Presentation("example.pptx");
try {
// Elimina tutti i commenti dalla presentazione
for (ICommentAuthor author : presentation.getCommentAuthors())
{
author.getComments().clear();
}
// Elimina tutti gli autori
presentation.getCommentAuthors().clear();
presentation.save("example_out.pptx", SaveFormat.Pptx);
} finally {
if (presentation != null) presentation.dispose();
}
Eliminare commenti specifici
Questo codice Java mostra come eliminare commenti specifici su una diapositiva:
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
// aggiunge commenti...
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());
// rimuove tutti i commenti che contengono il testo "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
Aspose.Slides supporta uno stato come “risolto” per i commenti moderni?
Sì. I commenti moderni espongono il metodo setStatus; è possibile impostare lo stato del commento (ad esempio, contrassegnarlo come risolto), e questo stato viene salvato nel file e riconosciuto da PowerPoint.
Le discussioni a filo (catene di risposta) sono supportate e c’è un limite di nidificazione?
Sì. Ogni commento può fare riferimento al suo commento genitore, consentendo catene di risposta arbitrarie. L’API non dichiara un limite specifico di profondità di nidificazione.
In quale sistema di coordinate è definita la posizione del marcatore di un commento su una diapositiva?
La posizione è memorizzata come punto a virgola mobile nel sistema di coordinate della diapositiva. Questo consente di posizionare il marcatore del commento esattamente dove necessario.