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();
}

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.