Aggiungi un commento a una diapositiva
Contents
[
Hide
]
Presentazione OpenXML
string FilePath = @"..\..\..\..\Sample Files\";
string FileName = FilePath + "Add a comment to a slide.pptx";
AddCommentToPresentation(FileName,
"Zeeshan", "MZ",
"This is my programmatically added comment.");
// Aggiunge un commento alla prima diapositiva del documento di presentazione.
// Il documento di presentazione deve contenere almeno una diapositiva.
private static void AddCommentToPresentation(string file, string initials, string name, string text)
{
using (PresentationDocument doc = PresentationDocument.Open(file, true))
{
// Dichiarare un oggetto CommentAuthorsPart.
CommentAuthorsPart authorsPart;
// Verificare che esista una parte di autori dei commenti.
if (doc.PresentationPart.CommentAuthorsPart == null)
{
// Se no, aggiungerne una nuova.
authorsPart = doc.PresentationPart.AddNewPart<CommentAuthorsPart>();
}
else
{
authorsPart = doc.PresentationPart.CommentAuthorsPart;
}
// Verificare che vi sia una lista di autori dei commenti nella parte degli autori.
if (authorsPart.CommentAuthorList == null)
{
// Se no, aggiungerne una nuova.
authorsPart.CommentAuthorList = new CommentAuthorList();
}
// Dichiarare un nuovo ID autore.
uint authorId = 0;
CommentAuthor author = null;
// Se ci sono elementi figlio esistenti nella lista degli autori dei commenti...
if (authorsPart.CommentAuthorList.HasChildren)
{
// Verificare che l'autore fornito sia nella lista.
var authors = authorsPart.CommentAuthorList.Elements<CommentAuthor>().Where(a => a.Name == name && a.Initials == initials);
// Se sì...
if (authors.Any())
{
// Assegnare al nuovo autore del commento l'ID autore esistente.
author = authors.First();
authorId = author.Id;
}
// Se no...
if (author == null)
{
// Assegnare all'autore fornito un nuovo ID
authorId = authorsPart.CommentAuthorList.Elements<CommentAuthor>().Select(a => a.Id.Value).Max();
}
}
// Se non ci sono elementi figlio esistenti nella lista degli autori dei commenti.
if (author == null)
{
authorId++;
// Aggiungere un nuovo elemento figlio (autore del commento) alla lista degli autori.
author = authorsPart.CommentAuthorList.AppendChild<CommentAuthor>
(new CommentAuthor()
{
Id = authorId,
Name = name,
Initials = initials,
ColorIndex = 0
});
}
// Ottenere la prima diapositiva, usando il metodo GetFirstSlide.
SlidePart slidePart1 = GetFirstSlide(doc);
// Dichiarare una parte dei commenti.
SlideCommentsPart commentsPart;
// Verificare che esista una parte dei commenti nella prima parte della diapositiva.
if (slidePart1.GetPartsOfType<SlideCommentsPart>().Count() == 0)
{
// Se no, aggiungere una nuova parte dei commenti.
commentsPart = slidePart1.AddNewPart<SlideCommentsPart>();
}
else
{
// Altrimenti, usare la prima parte dei commenti nella parte della diapositiva.
commentsPart = slidePart1.GetPartsOfType<SlideCommentsPart>().First();
}
// Se la lista dei commenti non esiste.
if (commentsPart.CommentList == null)
{
// Aggiungere una nuova lista di commenti.
commentsPart.CommentList = new CommentList();
}
// Ottenere il nuovo ID del commento.
uint commentIdx = author.LastIndex == null ? 1 : author.LastIndex + 1;
author.LastIndex = commentIdx;
// Aggiungere un nuovo commento.
Comment comment = commentsPart.CommentList.AppendChild<Comment>(
new Comment()
{
AuthorId = authorId,
Index = commentIdx,
DateTime = DateTime.Now
});
// Aggiungere il nodo figlio di posizione all'elemento commento.
comment.Append(
new Position() { X = 100, Y = 200 },
new Text() { Text = text });
// Salvare la parte degli autori dei commenti.
authorsPart.CommentAuthorList.Save();
// Salvare la parte dei commenti.
commentsPart.CommentList.Save();
}
}
// Ottenere la parte della diapositiva della prima diapositiva nel documento di presentazione.
private static SlidePart GetFirstSlide(PresentationDocument presentationDocument)
{
// Ottenere l'ID di relazione della prima diapositiva
PresentationPart part = presentationDocument.PresentationPart;
SlideId slideId = part.Presentation.SlideIdList.GetFirstChild<SlideId>();
string relId = slideId.RelationshipId;
// Ottenere la parte della diapositiva tramite l'ID di relazione.
SlidePart slidePart = (SlidePart)part.GetPartById(relId);
return slidePart;
}
Aspose.Slides
In Aspose.Slides per .NET, la raccolta dei commenti delle diapositive PPT è inclusa in ogni classe Slide. La classe CommentCollection viene utilizzata per contenere i commenti specifici della diapositiva. La classe Comment include informazioni come l’autore che ha aggiunto il commento alla diapositiva, le sue iniziali, l’ora di creazione, la posizione del commento sulla diapositiva e il testo del commento. La classe CommentAuthor viene utilizzata per aggiungere gli autori dei commenti delle diapositive a livello di presentazione. La classe Presentation contiene la raccolta degli autori per la presentazione nella classe CommentAuthors.
Nel seguente esempio, abbiamo aggiunto lo snippet di codice per aggiungere i commenti alle diapositive.
string FilePath = @"..\..\..\..\Sample Files\";
string FileName = FilePath + "Add a comment to a slide.pptx";
using (Presentation pres = new Presentation())
{
//Aggiunta diapositiva vuota
pres.Slides.AddEmptySlide(pres.LayoutSlides[0]);
//Aggiunta autore
ICommentAuthor author = pres.CommentAuthors.AddAuthor("Zeeshan", "MZ");
//Posizione dei commenti
PointF point = new PointF();
point.X = 1;
point.Y = 1;
//Aggiunta commento diapositiva per un autore sulla diapositiva
author.Comments.AddComment("Hello Zeeshan, this is slide comment", pres.Slides[0], point, DateTime.Now);
pres.Save(FileName, Aspose.Slides.Export.SaveFormat.Pptx);
}