Wiki
Clone wikiAspose for OpenXML / Delete all the comments by an author
OpenXML SDK
class Program { static void Main(string[] args) { string fileName = "Delete all the comments by an author.pptx"; string author = "Zeeshan Shafqat"; DeleteCommentsByAuthorInPresentation(fileName, author); } // Remove all the comments in the slides by a certain author. public static void DeleteCommentsByAuthorInPresentation(string fileName, string author) { if (String.IsNullOrEmpty(fileName) || String.IsNullOrEmpty(author)) throw new ArgumentNullException("File name or author name is NULL!"); using (PresentationDocument doc = PresentationDocument.Open(fileName, true)) { // Get the specifed comment author. IEnumerable<CommentAuthor> commentAuthors = doc.PresentationPart.CommentAuthorsPart.CommentAuthorList.Elements<CommentAuthor>() .Where(e => e.Name.Value.Equals(author)); // Iterate through all the matching authors. foreach (CommentAuthor commentAuthor in commentAuthors) { UInt32Value authorId = commentAuthor.Id; // Iterate through all the slides and get the slide parts. foreach (SlidePart slide in doc.PresentationPart.SlideParts) { SlideCommentsPart slideCommentsPart = slide.SlideCommentsPart; // Get the list of comments. if (slideCommentsPart != null && slide.SlideCommentsPart.CommentList != null) { IEnumerable<Comment> commentList = slideCommentsPart.CommentList.Elements<Comment>().Where(e => e.AuthorId == authorId.Value); List<Comment> comments = new List<Comment>(); comments = commentList.ToList<Comment>(); foreach (Comment comm in comments) { // Delete all the comments by the specified author. slideCommentsPart.CommentList.RemoveChild<Comment>(comm); } // If the commentPart has no existing comment. if (slideCommentsPart.CommentList.ChildElements.Count == 0) // Delete this part. slide.DeletePart(slideCommentsPart); } } // Delete the comment author from the comment authors part. doc.PresentationPart.CommentAuthorsPart.CommentAuthorList.RemoveChild<CommentAuthor>(commentAuthor); } } } }
Aspose.Slides
class Program { static void Main(string[] args) { string fileName = "Delete all the comments by an author.pptx"; string author = "MZ"; DeleteCommentsByAuthorInPresentation(fileName, author); } // Remove all the comments in the slides by a certain author. public static void DeleteCommentsByAuthorInPresentation(string fileName, string author) { if (String.IsNullOrEmpty(fileName) || String.IsNullOrEmpty(author)) throw new ArgumentNullException("File name or author name is NULL!"); //Instantiate a PresentationEx object that represents a PPTX file using (PresentationEx pres = new PresentationEx(fileName)) { CommentAuthorEx[] authors= pres.CommentAuthors.FindByName(author); CommentAuthorEx thisAuthor = authors[0]; for (int i = thisAuthor.Comments.Count - 1; i >= 0;i-- ) { thisAuthor.Comments.RemoveAt(i); } pres.Save(fileName, Aspose.Slides.Export.SaveFormat.Pptx); } } }
Download
Updated