Gestire i commenti della presentazione in Python

Panoramica

Questo articolo spiega come gestire i commenti nelle presentazioni in Aspose.Slides. Mostra i principali tipi correlati ai commenti e dimostra come aggiungere commenti alle diapositive, accedere ai commenti esistenti, gestire 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 risposte e cancellare tutti i commenti o eliminare quelli selezionati.

In PowerPoint, un commento appare come una nota o un’annotazione su una diapositiva. Quando si fa clic su un commento, il suo contenuto o i suoi messaggi vengono mostrati.

Perché aggiungere commenti alle presentazioni?

Potresti voler utilizzare i commenti per fornire feedback o comunicare con i tuoi colleghi durante la revisione delle presentazioni.

Per consentirti di usare i commenti nelle presentazioni PowerPoint, Aspose.Slides for Python via .NET fornisce

  • La classe Presentation , che contiene le raccolte di autori (dalla proprietà CommentAuthorCollection). Gli autori aggiungono commenti alle diapositive.
  • La classe CommentCollection , che contiene la raccolta di commenti per singoli autori.
  • La classe Comment , 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 su singoli autori: il nome dell’autore, le sue iniziali, i commenti associati al nome dell’autore, ecc.

Aggiungere un commento alla diapositiva

Questo codice Python mostra come aggiungere un commento a una diapositiva in una presentazione PowerPoint:

import aspose.slides as slides
import aspose.pydrawing as draw
import datetime

# Istanziamento della classe Presentation
with slides.Presentation() as presentation:
    # Aggiunge una diapositiva vuota
    presentation.slides.add_empty_slide(presentation.layout_slides[0])

    # Aggiunge un autore
    author = presentation.comment_authors.add_author("Jawad", "MF")

    # Imposta la posizione per i commenti
    point = draw.PointF(0.2, 0.2)

    # Aggiunge un commento alla diapositiva per un autore sulla diapositiva 1
    author.comments.add_comment("Hello Jawad, this is slide comment", presentation.slides[0], point, datetime.date.today())

    # Aggiunge un commento alla diapositiva per un autore sulla diapositiva 2
    author.comments.add_comment("Hello Jawad, this is second slide comment", presentation.slides[1], point, datetime.date.today())

    # Accesso a ISlide 1
    slide = presentation.slides[0]

    # Quando viene passato null come argomento, i commenti di tutti gli autori vengono portati alla diapositiva selezionata
    comments = slide.get_slide_comments(author)

    # Accede al commento all'indice 0 per la diapositiva 1
    str = comments[0].text

    presentation.save("Comments_out.pptx", slides.export.SaveFormat.PPTX)

    if comments.length > 0:
        # Seleziona la collezione di commenti dell'autore all'indice 0
        commentCollection = comments[0].author.comments
        print(commentCollection[0].text)

Accedere ai commenti della diapositiva

Questo codice Python mostra come accedere a un commento esistente su una diapositiva in una presentazione PowerPoint:

import aspose.slides as slides

# Istanziamento della classe Presentation
with slides.Presentation("Comments1.pptx") as presentation:
    for author in presentation.comment_authors:
        for comment in author.comments:
            print("ISlide :" + str(comment.slide.slide_number) + 
            " has comment: " + comment.text + 
            " with Author: " + comment.author.name + 
            " posted on time :" + str(comment.created_time) + "\n")

Commenti di risposta

Un commento padre è il commento principale o originale in una gerarchia di commenti o risposte. Utilizzando la proprietà parent_comment (dalla classe Comment ), è possibile impostare o ottenere un commento padre.

Questo codice Python mostra come aggiungere commenti e ottenere le risposte a essi:

import aspose.slides as slides
import aspose.pydrawing as draw
import datetime

with slides.Presentation() as pres:
    # Aggiunge un commento
    author1 = pres.comment_authors.add_author("Author_1", "A.A.")
    comment1 = author1.comments.add_comment("comment1", pres.slides[0], draw.PointF(10, 10), datetime.date.today())

    # Aggiunge una risposta a comment1
    author2 = pres.comment_authors.add_author("Autror_2", "B.B.")
    reply1 = author2.comments.add_comment("reply 1 for comment 1", pres.slides[0], draw.PointF(10, 10), datetime.date.today())
    reply1.parent_comment = comment1

    # Aggiunge un'altra risposta a comment1
    reply2 = author2.comments.add_comment("reply 2 for comment 1", pres.slides[0], draw.PointF(10, 10), datetime.date.today())
    reply2.parent_comment = comment1

    # Aggiunge una risposta a una risposta esistente
    subReply = author1.comments.add_comment("subreply 3 for reply 2", pres.slides[0], draw.PointF(10, 10), datetime.date.today())
    subReply.parent_comment = reply2

    comment2 = author2.comments.add_comment("comment 2", pres.slides[0], draw.PointF(10, 10), datetime.date.today())
    comment3 = author2.comments.add_comment("comment 3", pres.slides[0], draw.PointF(10, 10), datetime.date.today())

    reply3 = author1.comments.add_comment("reply 4 for comment 3", pres.slides[0], draw.PointF(10, 10), datetime.date.today())
    reply3.parent_comment = comment3

    # Visualizza la gerarchia dei commenti nella console
    slide = pres.slides[0]
    comments = slide.get_slide_comments(None)
    for i in range(comments.length):
        comment = comments[i]
        while comment.parent_comment is not None:
            print("\t")
            comment = comment.parent_comment

        print(comments[i].author.name + " : " + comments[i].text)
        print("\r\n")

    pres.save("parent_comment.pptx", slides.export.SaveFormat.PPTX)

    # Rimuove comment1 e tutte le sue risposte
    comment1.remove()

    pres.save("remove_comment.pptx", slides.export.SaveFormat.PPTX)

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.

Abbiamo implementato il supporto per i commenti moderni aggiungendo la classe ModernComment. I metodi add_modern_comment e insert_modern_comment sono stati aggiunti alla classe CommentCollection.

Questo codice Python mostra come aggiungere un commento moderno a una diapositiva in una presentazione PowerPoint:

import aspose.pydrawing as draw
import aspose.slides as slides
from datetime import date

with slides.Presentation() as pres:
    newAuthor = pres.comment_authors.add_author("Some Author", "SA")
    modernComment = newAuthor.comments.add_modern_comment("This is a modern comment", pres.slides[0], None, draw.PointF(100, 100), date.today())

    pres.save("example.pptx", slides.export.SaveFormat.PPTX)

Rimuovere il commento

Eliminare tutti i commenti e gli autori

Questo codice Python mostra come rimuovere tutti i commenti e gli autori in una presentazione:

import aspose.slides as slides

with slides.Presentation("example.pptx") as presentation:
    # Elimina tutti i commenti dalla presentazione
    for author in presentation.comment_authors:
        author.comments.clear()

    # Elimina tutti gli autori
    presentation.comment_authors.clear()

    presentation.save("example_out.pptx", slides.export.SaveFormat.PPTX)

Eliminare commenti specifici

Questo codice Python mostra come eliminare commenti specifici su una diapositiva:

import aspose.pydrawing as draw
import aspose.slides as slides
from datetime import date

with slides.Presentation() as presentation:
    slide = presentation.slides[0]
    
    # aggiungi commenti...
    author = presentation.comment_authors.add_author("Author", "A")
    author.comments.add_comment("comment 1", slide, draw.PointF(0.2, 0.2), date.today())
    author.comments.add_comment("comment 2", slide, draw.PointF(0.3, 0.2), date.today())
    
    # rimuovi tutti i commenti che contengono il testo "comment 1"
    for commentAuthor in presentation.comment_authors:
        toRemove = []
        for comment in slide.get_slide_comments(commentAuthor):
            if comment.text == "comment 1":
                toRemove.append(comment)
        
        for comment in toRemove:
            commentAuthor.comments.remove(comment)
    
    presentation.save("pres.pptx", slides.export.SaveFormat.PPTX)

FAQ

Aspose.Slides supporta uno stato come ‘risolto’ per i commenti moderni?

Sì. I Commenti moderni espongono una proprietà status; è possibile leggere e impostare lo stato del commento (ad esempio, marcarlo come risolto), e questo stato viene salvato nel file e riconosciuto da PowerPoint.

Sono supportate le discussioni a thread (catene di risposte) e c’è un limite di nidificazione?

Sì. Ogni commento può fare riferimento al proprio commento padre, permettendo catene di risposte arbitrarie. L’API non dichiara un limite specifico di profondità di nidificazione.

In quale sistema di coordinate è definita la posizione del segno del commento su una diapositiva?

La posizione è memorizzata come un punto a virgola mobile nel sistema di coordinate della diapositiva. Questo consente di posizionare il segno del commento esattamente dove è necessario.