Beheer presentatiecommentaren in .NET
Overzicht
Dit artikel legt uit hoe u opmerkingen in een presentatie kunt beheren met Aspose.Slides. Het toont de belangrijkste type‑gerelateerde objecten en laat zien hoe u opmerkingen aan dia’s toevoegt, bestaande opmerkingen benadert, met antwoorden werkt, moderne opmerkingen gebruikt en opmerkingen uit een presentatie verwijderd.
De voorbeelden richten zich op veelvoorkomende beoordelings‑ en samenwerkingsscenario’s in PowerPoint, zoals het toewijzen van opmerkingen aan auteurs, het lezen van commentaarinhoud en metadata, het opbouwen van antwoordketens en het opruimen van alle opmerkingen of het verwijderen van geselecteerde opmerkingen.
In PowerPoint verschijnt een opmerking als een notitie of annotatie op een dia. Wanneer op een opmerking wordt geklikt, worden de inhoud of berichten ervan getoond.
Waarom opmerkingen aan presentaties toevoegen?
U wilt wellicht opmerkingen gebruiken om feedback te geven of te communiceren met collega’s tijdens het beoordelen van presentaties.
Om u toe te staan opmerkingen te gebruiken in PowerPoint‑presentaties, biedt Aspose.Slides voor .NET
- De Presentatie‑klasse, die de verzamelingen van auteurs (van de CommentAuthorCollection‑eigenschap) bevat. De auteurs voegen opmerkingen toe aan dia’s.
- De ICommentCollection‑interface, die de verzameling van opmerkingen voor individuele auteurs bevat.
- De IComment‑klasse, die informatie over auteurs en hun opmerkingen bevat: wie de opmerking heeft toegevoegd, het tijdstip van toevoegen, de positie van de opmerking, enz.
- De CommentAuthor‑klasse, die informatie over een individuele auteur bevat: de naam van de auteur, zijn initialen, opmerkingen gekoppeld aan de naam van de auteur, enz.
Opmerkingen aan dia’s toevoegen
Deze C#‑code laat zien hoe u een opmerking aan een dia in een PowerPoint‑presentatie toevoegt:
// Instantieert de Presentation-klasse
using (Presentation presentation = new Presentation())
{
// Voegt een lege dia toe
presentation.Slides.AddEmptySlide(presentation.LayoutSlides[0]);
// Voegt een auteur toe
ICommentAuthor author = presentation.CommentAuthors.AddAuthor("Jawad", "MF");
// Stelt de positie voor opmerkingen in
PointF point = new PointF();
point.X = 0.2f;
point.Y = 0.2f;
// Voegt een dia-opmerking toe voor een auteur op dia 1
author.Comments.AddComment("Hello Jawad, this is slide comment", presentation.Slides[0], point, DateTime.Now);
// Voegt een dia-opmerking toe voor een auteur op dia 2
author.Comments.AddComment("Hello Jawad, this is second slide comment", presentation.Slides[1], point, DateTime.Now);
// Benadert ISlide 1
ISlide slide = presentation.Slides[0];
// Wanneer null wordt doorgegeven als argument, worden de opmerkingen van alle auteurs naar de geselecteerde dia gehaald
IComment[] Comments = slide.GetSlideComments(author);
// Benadert de opmerking op index 0 voor dia 1
String str = Comments[0].Text;
presentation.Save("Comments_out.pptx", SaveFormat.Pptx);
if (Comments.GetLength(0) > 0)
{
// Selecteert de commentaarverzameling van de auteur op index 0
ICommentCollection commentCollection = Comments[0].Author.Comments;
String Comment = commentCollection[0].Text;
}
}
Opmerkingen van dia’s benaderen
Deze C#‑code laat zien hoe u een bestaande opmerking op een dia in een PowerPoint‑presentatie benadert:
// Instantieert de Presentation-klasse
using (Presentation presentation = new Presentation("Comments1.pptx"))
{
foreach (var commentAuthor in presentation.CommentAuthors)
{
var author = (CommentAuthor) commentAuthor;
foreach (var comment1 in author.Comments)
{
var comment = (Comment) comment1;
Console.WriteLine("ISlide :" + comment.Slide.SlideNumber + " has comment: " + comment.Text + " with Author: " + comment.Author.Name + " posted on time :" + comment.CreatedTime + "\n");
}
}
}
Antwoorden op opmerkingen
Een bovenliggende opmerking is de eerste of oorspronkelijke opmerking in een hiërarchie van opmerkingen of antwoorden. Met de ParentComment‑eigenschap (van de IComment‑interface) kunt u een bovenliggende opmerking instellen of ophalen.
Deze C#‑code laat zien hoe u opmerkingen toevoegt en antwoorden daarop haalt:
using (Presentation pres = new Presentation())
{
// Voegt een opmerking toe
ICommentAuthor author1 = pres.CommentAuthors.AddAuthor("Author_1", "A.A.");
IComment comment1 = author1.Comments.AddComment("comment1", pres.Slides[0], new PointF(10, 10), DateTime.Now);
// Voegt een antwoord toe aan comment1
ICommentAuthor author2 = pres.CommentAuthors.AddAuthor("Autror_2", "B.B.");
IComment reply1 = author2.Comments.AddComment("reply 1 for comment 1", pres.Slides[0], new PointF(10, 10), DateTime.Now);
reply1.ParentComment = comment1;
// Voegt nog een antwoord toe aan comment1
IComment reply2 = author2.Comments.AddComment("reply 2 for comment 1", pres.Slides[0], new PointF(10, 10), DateTime.Now);
reply2.ParentComment = comment1;
// Voegt een antwoord toe aan bestaand antwoord
IComment subReply = author1.Comments.AddComment("subreply 3 for reply 2", pres.Slides[0], new PointF(10, 10), DateTime.Now);
subReply.ParentComment = reply2;
IComment comment2 = author2.Comments.AddComment("comment 2", pres.Slides[0], new PointF(10, 10), DateTime.Now);
IComment comment3 = author2.Comments.AddComment("comment 3", pres.Slides[0], new PointF(10, 10), DateTime.Now);
IComment reply3 = author1.Comments.AddComment("reply 4 for comment 3", pres.Slides[0], new PointF(10, 10), DateTime.Now);
reply3.ParentComment = comment3;
// Toont de hiërarchie van opmerkingen op de console
ISlide slide = pres.Slides[0];
var comments = slide.GetSlideComments(null);
for (int i = 0; i < comments.Length; i++)
{
IComment comment = comments[i];
while (comment.ParentComment != null)
{
Console.Write("\t");
comment = comment.ParentComment;
}
Console.Write("{0} : {1}", comments[i].Author.Name, comments[i].Text);
Console.WriteLine();
}
pres.Save("parent_comment.pptx",SaveFormat.Pptx);
// Verwijdert comment1 en alle bijbehorende antwoorden
comment1.Remove();
pres.Save("remove_comment.pptx", SaveFormat.Pptx);
}
Let op
- Wanneer de Remove‑methode (van de IComment‑interface) wordt gebruikt om een opmerking te verwijderen, worden ook de antwoorden op die opmerking verwijderd.
- Als de ParentComment‑instelling resulteert in een circulaire verwijzing, wordt een PptxEditException gegooid.
Moderne opmerkingen toevoegen
In 2021 introduceerde Microsoft moderne opmerkingen in PowerPoint. De functie voor moderne opmerkingen verbetert de samenwerking in PowerPoint aanzienlijk. Met moderne opmerkingen kunnen gebruikers opmerkingen oplossen, opmerkingen verankeren aan objecten en teksten, en veel gemakkelijker interacties aangaan dan voorheen.
In Aspose Slides for .NET 21.11 hebben we ondersteuning voor moderne opmerkingen geïmplementeerd door de ModernComment‑klasse toe te voegen. De methoden AddModernComment en InsertModernComment zijn toegevoegd aan de CommentCollection‑klasse.
Deze C#‑code laat zien hoe u een moderne opmerking aan een dia in een PowerPoint‑presentatie toevoegt:
using (Presentation pres = new Presentation())
{
ICommentAuthor newAuthor = pres.CommentAuthors.AddAuthor("Some Author", "SA");
IModernComment modernComment = newAuthor.Comments.AddModernComment("This is a modern comment", pres.Slides[0], null, new PointF(100, 100), DateTime.Now);
pres.Save("pres.pptx", SaveFormat.Pptx);
}
Opmerkingen verwijderen
Alle opmerkingen en auteurs verwijderen
Deze C#‑code laat zien hoe u alle opmerkingen en auteurs in een presentatie verwijdert:
using (var presentation = new Presentation("example.pptx"))
{
// Verwijdert alle opmerkingen van de presentatie
foreach (var author in presentation.CommentAuthors)
{
author.Comments.Clear();
}
// Verwijdert alle auteurs
presentation.CommentAuthors.Clear();
presentation.Save("example_out.pptx", SaveFormat.Pptx);
}
Specifieke opmerkingen verwijderen
Deze C#‑code laat zien hoe u specifieke opmerkingen op een dia verwijdert:
using (var presentation = new Presentation())
{
ISlide slide = presentation.Slides[0];
// voeg opmerkingen toe...
ICommentAuthor author = presentation.CommentAuthors.AddAuthor("Author", "A");
author.Comments.AddComment("comment 1", slide, new PointF(0.2f, 0.2f), DateTime.Now);
author.Comments.AddComment("comment 2", slide, new PointF(0.3f, 0.2f), DateTime.Now);
// verwijder alle opmerkingen die de tekst "comment 1" bevatten
foreach (ICommentAuthor commentAuthor in presentation.CommentAuthors)
{
List<IComment> toRemove = new List<IComment>();
foreach (IComment comment in slide.GetSlideComments(commentAuthor))
{
if (comment.Text == "comment 1")
{
toRemove.Add(comment);
}
}
foreach (IComment comment in toRemove)
{
commentAuthor.Comments.Remove(comment);
}
}
presentation.Save("pres.pptx", SaveFormat.Pptx);
}
FAQ
Ondersteunt Aspose.Slides een status zoals ‘opgelost’ voor moderne opmerkingen?
Ja. Moderne opmerkingen bieden een Status‑eigenschap; u kunt de status van een opmerking lezen en instellen (bijvoorbeeld markeren als opgelost), en deze status wordt opgeslagen in het bestand en herkend door PowerPoint.
Worden draadgesprekken (antwoordketens) ondersteund, en is er een limiet aan de nesting?
Ja. Elke opmerking kan verwijzen naar zijn parent comment, waardoor willekeurige antwoordketens mogelijk zijn. De API specificeert geen specifieke diepte‑limiet voor nesting.
In welk coördinatensysteem wordt de positie van een opmerkingmarker gedefinieerd op een dia?
De positie wordt opgeslagen als een zwevend‑kommagetal in het coördinatensysteem van de dia. Hierdoor kunt u de marker precies plaatsen waar u deze nodig heeft.