Gérer les commentaires de présentation en Python

Dans PowerPoint, un commentaire apparaît comme une note ou une annotation sur une diapositive. Lorsqu’un commentaire est cliqué, son contenu ou ses messages sont révélés.

Why Add Comments to Presentations?

Pourquoi ajouter des commentaires aux présentations ?

Vous pouvez souhaiter utiliser les commentaires pour fournir des retours ou communiquer avec vos collègues lors de la révision des présentations.

Pour vous permettre d’utiliser les commentaires dans les présentations PowerPoint, Aspose.Slides for Python via .NET fournit

  • La classe Presentation , qui contient les collections d’auteurs (via la propriété CommentAuthorCollection). Les auteurs ajoutent des commentaires aux diapositives.
  • L’interface ICommentCollection , qui contient la collection de commentaires pour chaque auteur.
  • La classe IComment , qui contient des informations sur les auteurs et leurs commentaires : qui a ajouté le commentaire, l’heure à laquelle le commentaire a été ajouté, la position du commentaire, etc.
  • La classe CommentAuthor , qui contient des informations sur chaque auteur : le nom de l’auteur, ses initiales, les commentaires associés au nom de l’auteur, etc.

Add Slide Comment

Ajouter un commentaire à une diapositive

Ce code Python montre comment ajouter un commentaire à une diapositive dans une présentation PowerPoint :

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

# Instancie la classe Presentation
with slides.Presentation() as presentation:
    # Ajoute une diapositive vide
    presentation.slides.add_empty_slide(presentation.layout_slides[0])

    # Ajoute un auteur
    author = presentation.comment_authors.add_author("Jawad", "MF")

    # Définit la position des commentaires
    point = draw.PointF(0.2, 0.2)

    # Ajoute un commentaire de diapositive pour un auteur sur la diapositive 1
    author.comments.add_comment("Hello Jawad, this is slide comment", presentation.slides[0], point, datetime.date.today())

    # Ajoute un commentaire de diapositive pour un auteur sur la diapositive 2
    author.comments.add_comment("Hello Jawad, this is second slide comment", presentation.slides[1], point, datetime.date.today())

    # Accéder à ISlide 1
    slide = presentation.slides[0]

    # Lorsque null est passé comme argument, les commentaires de tous les auteurs sont récupérés pour la diapositive sélectionnée
    comments = slide.get_slide_comments(author)

    # Accède au commentaire à l'index 0 pour la diapositive 1
    str = comments[0].text

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

    if comments.length > 0:
        # Sélectionne la collection de commentaires de l'auteur à l'index 0
        commentCollection = comments[0].author.comments
        print(commentCollection[0].text)

Access Slide Comments

Accéder aux commentaires de diapositive

Ce code Python montre comment accéder à un commentaire existant sur une diapositive dans une présentation PowerPoint :

import aspose.slides as slides

# Instancie la 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")

Reply Comments

Répondre aux commentaires

Un commentaire parent est le commentaire principal ou original dans une hiérarchie de commentaires ou de réponses. En utilisant la propriété parent_comment (de l’interface IComment), vous pouvez définir ou obtenir un commentaire parent.

Ce code Python montre comment ajouter des commentaires et obtenir leurs réponses :

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

with slides.Presentation() as pres:
    # Ajoute un commentaire
    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())

    # Ajoute une réponse à 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

    # Ajoute une autre réponse à 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

    # Ajoute une réponse à une réponse existante
    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

    # Affiche la hiérarchie des commentaires dans la 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)

    # Supprime comment1 et toutes ses réponses
    comment1.remove()

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

Add Modern Comment

Ajouter un commentaire moderne

En 2021, Microsoft a introduit les commentaires modernes dans PowerPoint. La fonctionnalité de commentaires modernes améliore considérablement la collaboration dans PowerPoint. Grâce aux commentaires modernes, les utilisateurs de PowerPoint peuvent résoudre les commentaires, ancrer les commentaires à des objets et du texte, et interagir beaucoup plus facilement qu’auparavant.

Nous avons implémenté la prise en charge des commentaires modernes en ajoutant la classe ModernComment. Les méthodes add_modern_comment et insert_modern_comment ont été ajoutées à la classe CommentCollection.

Ce code Python montre comment ajouter un commentaire moderne à une diapositive dans une présentation 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)

Remove Comment

Supprimer un commentaire

Delete All Comments and Authors

Supprimer tous les commentaires et auteurs

Ce code Python montre comment supprimer tous les commentaires et auteurs dans une présentation :

import aspose.slides as slides

with slides.Presentation("example.pptx") as presentation:
    # Supprime tous les commentaires de la présentation
    for author in presentation.comment_authors:
        author.comments.clear()

    # Supprime tous les auteurs
    presentation.comment_authors.clear()

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

Delete Specific Comments

Supprimer des commentaires spécifiques

Ce code Python montre comment supprimer des commentaires spécifiques sur une diapositive :

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

with slides.Presentation() as presentation:
    slide = presentation.slides[0]
    
    # ajouter des commentaires...
    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())
    
    # supprimer tous les commentaires contenant le texte "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

Does Aspose.Slides support a status like ‘resolved’ for modern comments?

Oui. Les Modern comments exposent une propriété status; vous pouvez lire et définir la comment’s state (par exemple, le marquer comme résolu), et cet état est enregistré dans le fichier et reconnu par PowerPoint.

Are threaded discussions (reply chains) supported, and is there a nesting limit?

Oui. Chaque commentaire peut référencer son parent comment, ce qui permet des chaînes de réponses arbitraires. L’API ne déclare pas de limite de profondeur d’imbrication spécifique.

In what coordinate system is a comment marker’s position defined on a slide?

La position est stockée sous forme de point à virgule flottante dans le système de coordonnées de la diapositive. Cela vous permet de placer le marqueur de commentaire précisément là où vous le souhaitez.