public SlideTagExCollection GetSlideTags(PresentationPart presentationPart) { TagList tagList = null; SlideTagExCollection slideTagList = new SlideTagExCollection(); foreach (var sldPart in presentationPart.SlideParts) { var slide = presentationPart.Presentation.SlideIdList.Where(s => ((SlideId)s).RelationshipId == presentationPart.GetIdOfPart(sldPart)).FirstOrDefault(); int index = presentationPart.Presentation.SlideIdList.ToList().IndexOf(slide); foreach (UserDefinedTagsPart tagPart in sldPart.UserDefinedTagsParts) { tagList = tagPart.TagList; foreach (Tag tag in tagList.ChildElements) { if (tag.Name.Value.Equals(PL_TAG)) { SlideTagEx slideTagEx = null; slideTagEx = XmlUtils.Deserialize <SlideTagEx>(tag.Val.ToString()); slideTagEx.PptSlideIndex = ++index; slideTagEx.Title = sldPart.Slide.InnerText; if (slideTagEx != null) { slideTagList.Add(slideTagEx); } } } } } return(slideTagList); }
private static PresentationPart MakeValidPresentationPart(PresentationPart presentationPart) { // // Presentation // PresentationBuilder.MakeValidPresentation( presentationPart.Presentation ?? (presentationPart.Presentation = new Presentation()) ).Save(presentationPart); // // ViewPropertiesPart // PresentationBuilder.MakeValidViewPropertiesPart( presentationPart.ViewPropertiesPart ?? presentationPart.AddNewPartDefaultId <ViewPropertiesPart>() ); // // PresentationPropertiesPart // PresentationBuilder.MakeValidPresentationPropertiesPart( presentationPart.PresentationPropertiesPart ?? presentationPart.AddNewPartDefaultId <PresentationPropertiesPart>() ); return(presentationPart); }
public static void changeSlideIdAndText(string docName, int index) { using (PresentationDocument ppt = PresentationDocument.Open(docName, true)) { // Get the relationship ID of the first slide. PresentationPart part = ppt.PresentationPart; OpenXmlElementList slideIds = part.Presentation.SlideIdList.ChildElements; // スライド番号から、.NETで扱うためのスライドIDを取得する。 string relId = (slideIds[index] as SlideId).RelationshipId; // Get the slide part from the relationship ID. // スライド番号からスライドのオブジェクトを取得 SlidePart slide = (SlidePart)part.GetPartById(relId); // Get the inner text of the slide: // slide.Slide(current element's)がもつ DocumentFormat.OpenXml.Drawing.Text型のXML上の要素をすべて取得する。 IEnumerable <A.Text> texts = slide.Slide.Descendants <A.Text>(); foreach (A.Text text in texts) { text.Text = text.Text + " Chage"; Console.WriteLine("-------------------------------------"); Console.WriteLine("Change後テキスト:" + text.Text); } } }
public override string Parse() { if (!File.Exists(Context.Path)) { throw new FileNotFoundException("File " + Context.Path + " is not found"); } StringBuilder sb = new StringBuilder(); using (PresentationDocument ppt = PresentationDocument.Open(Context.Path, false)) { // Get the relationship ID of the first slide. PresentationPart part = ppt.PresentationPart; OpenXmlElementList slideIds = part.Presentation.SlideIdList.ChildElements; for (int index = 0; index < slideIds.Count; index++) { string relId = (slideIds[index] as SlideId).RelationshipId; relId = (slideIds[index] as SlideId).RelationshipId; // Get the slide part from the relationship ID. SlidePart slide = (SlidePart)part.GetPartById(relId); string[] texts = GetAllTextInSlide(slide); foreach (string text in texts) { sb.AppendLine(text); } } return(sb.ToString()); } }
private static IList <SlidePart> GetSlideParts(PresentationDocument presentationDocument) { PresentationPart presentationPart = presentationDocument.PresentationPart; if (presentationPart != null && presentationPart.Presentation != null) { Presentation presentation = presentationPart.Presentation; if (presentation.SlideIdList != null) { var slideIds = presentation.SlideIdList.ChildElements; IList <SlidePart> slideParts = new List <SlidePart>(); for (int i = 0; i < slideIds.Count; i++) { string slidePartRelationshipId = (slideIds[i] as SlideId).RelationshipId; SlidePart slidePart = (SlidePart)presentationPart.GetPartById(slidePartRelationshipId); slideParts.Add(slidePart); } return(slideParts); } } // No slide found return(null); }
/// <summary> /// Gets a <see cref="SlidePart"/> instance by slide number. /// </summary> /// <param name="prePart"></param> /// <param name="sldNumber"></param> /// <returns></returns> public static SlidePart GetSlidePartByNumber(this PresentationPart prePart, int sldNumber) { Check.IsPositive(sldNumber, nameof(sldNumber)); var slideIndex = --sldNumber; return(GetSlidePartByIndex(prePart, slideIndex)); }
public ActionResult Charts(string Id) { if (presentationDocument == null) { presentationDocument = PresentationDocument.Open(Server.MapPath("~/App_Data/TDMGuestServices.pptx"), true); } presentationPart = presentationDocument.PresentationPart; var slide = (SlidePart)presentationPart.GetPartById(Id); var lst = new List <ChartDTO>(); foreach (var chart in slide.ChartParts) { foreach (var item in chart.ChartSpace.Descendants()) { if (item.GetType() == typeof(DocumentFormat.OpenXml.Drawing.Charts.Title)) { lst.Add(new ChartDTO { Name = ((DocumentFormat.OpenXml.Drawing.Charts.Title)item).ChartText.InnerText, Id = ((DocumentFormat.OpenXml.Drawing.Charts.Title)item).ChartText.InnerText }); } } } //var lst = new List<RunTB>(); return(View(lst)); }
protected override int CountPages() { int count = 0; bool compatMode = System.IO.Path.GetExtension(Path) != ".pptx"; if (compatMode) // use PP to get slide count (for older ppt files) // TODO - improve slide count speed for ppt files (slide count disable for now) //var ppApp = new Application(); //Presentation p = ppApp.Presentations.Open(Path, WithWindow: Microsoft.Office.Core.MsoTriState.msoFalse); //count = p.Slides.Count; //p.Close(); //ppApp.Quit(); { return(-1); } else // use OpenXML method { using (var doc = PresentationDocument.Open(Path, false)) { PresentationPart pres = doc.PresentationPart; if (pres != null && pres.SlideParts != null) { count = pres.SlideParts.Count(); } } } return(count); }
public void ExtractTextFromPresentation(PresentationDocument document, StringBuilder sb) { PresentationPart pPart = document.PresentationPart; int slidesCount = 0; if (pPart != null) { slidesCount = pPart.SlideParts.Count(); } if (slidesCount < 1) { return; } OpenXmlElementList slideIds = pPart.Presentation.SlideIdList.ChildElements; for (var i = 0; i < slidesCount; i++) { string relId = (slideIds[i] as SlideId).RelationshipId; SlidePart slide = (SlidePart)pPart.GetPartById(relId); IEnumerable <A.Text> texts = slide.Slide.Descendants <A.Text>(); foreach (A.Text text in texts) { sb.Append(text.Text); sb.Append(" "); } } }
// Count the slides in the presentation. public static int CountSlides(Stream presentationFile) { // Open the presentation as read-only. using (PresentationDocument presentationDocument = PresentationDocument.Open(presentationFile, false)) { // Check for a null document object. if (presentationDocument == null) { throw new ArgumentNullException("presentationDocument"); } int slidesCount = 0; // Get the presentation part of document. PresentationPart presentationPart = presentationDocument.PresentationPart; // Verify that the presentation part and presentation exist. if (presentationPart != null && presentationPart.Presentation != null) { // Get the Presentation object from the presentation part. Presentation presentation = presentationPart.Presentation; // Get the slide count from the SlideParts. var slideIds = presentation.SlideIdList.ChildElements; slidesCount = slideIds.Count; // Return the slide count to the previous method. return(slidesCount); } } return(-1); }
public static void GetSlideIdAndText(out int foundCounter, string searchString, Stream docName, int index) { using (PresentationDocument ppt = PresentationDocument.Open(docName, false)) { //Reset Counter for founded String int stringCount = 0; // Get the relationship ID of the first slide. PresentationPart part = ppt.PresentationPart; OpenXmlElementList slideIds = part.Presentation.SlideIdList.ChildElements; string relId = (slideIds[index] as SlideId).RelationshipId; // Get the slide part from the relationship ID. SlidePart slide = (SlidePart)part.GetPartById(relId); // Build a StringBuilder object. StringBuilder paragraphText = new StringBuilder(); // Get the inner text of the slide: IEnumerable <A.Text> texts = slide.Slide.Descendants <A.Text>(); foreach (A.Text text in texts) { if (text.Text.Contains(searchString) && searchString != "") { stringCount = stringCount + 1; } } foundCounter = stringCount; } }
private static XElement GetSpPr(PresentationPart part, double percentageOfCy) { XElement sldSz = part.GetXDocument() .Elements(P.presentation) .Elements(P.sldSz) .Single(); var sldCx = (int)sldSz.Attribute(NoNamespace.cx) !; var sldCy = (int)sldSz.Attribute(NoNamespace.cy) !; var extentSize = (long)(sldCy * percentageOfCy); long offsetX = (sldCx / 2) - (extentSize / 2); long offsetY = (sldCy / 2) - (extentSize / 2); return(new XElement(P.spPr, new XElement(A.xfrm, new XElement(A.off, new XAttribute(NoNamespace.x, offsetX), new XAttribute(NoNamespace.y, offsetY)), new XElement(A.ext, new XAttribute(NoNamespace.cx, extentSize), new XAttribute(NoNamespace.cy, extentSize))), new XElement(A.prstGeom, new XAttribute(NoNamespace.prst, "rect"), new XElement(A.avLst)))); }
public static ICollection <IEnumerable <string> > GetAllSlides(string path) { using (PresentationDocument presentationDocument = PresentationDocument.Open(path, false)) { PresentationPart presentationPart = presentationDocument.PresentationPart; if (presentationPart != null && presentationPart.Presentation != null) { Presentation presentation = presentationPart.Presentation; if (presentation.SlideIdList != null) { var slideIds = presentation.SlideIdList.ChildElements; ICollection <IEnumerable <string> > slides = new List <IEnumerable <string> >(); for (int i = 0; i < slideIds.Count; i++) { string slidePartRelationshipId = (slideIds[i] as SlideId).RelationshipId; SlidePart slidePart = (SlidePart)presentationPart.GetPartById(slidePartRelationshipId); var slideText = GetAllTextInSlide(slidePart, i); slides.Add(slideText); } return(slides); } } return(null); } }
private static void CreatePresentation(PresentationDocument presentationDoc) { PresentationPart presentationPart = presentationDoc.AddPresentationPart(); presentationPart.Presentation = new P.Presentation(); CreatePresentationParts(presentationPart); }
/// <summary> /// 获取所有文本 /// </summary> /// <param name="pdoc">ppt对象</param> /// <returns></returns> private static List <string> GetSlideIdAndText(PresentationDocument pdoc) { IEnumerable <SlidePart> slideParts = pdoc.PresentationPart.SlideParts; List <string> result = new List <string>(); for (int i = 0; i < slideParts.Count(); i++) { PresentationPart part = pdoc.PresentationPart; OpenXmlElementList slideIds = part.Presentation.SlideIdList.ChildElements; string relId = (slideIds[i] as SlideId).RelationshipId; // 取得幻灯片的关系ID SlidePart slide = (SlidePart)part.GetPartById(relId); StringBuilder paragraphText = new StringBuilder(); // 得到幻灯片的文本内容 IEnumerable <D.Text> texts = slide.Slide.Descendants <D.Text>(); foreach (D.Text text in texts) { paragraphText.Append(text.Text + "\t"); } result.Add(paragraphText.ToString()); } return(result); }
private void insert(string filePath, List <PPTPage> pageList, Size max) { int imgId = 915; using (PresentationDocument presentationDocument = PresentationDocument.Open(filePath, true)) { PresentationPart presentationPart = presentationDocument.PresentationPart; presentationPart.Presentation.SlideSize = new SlideSize() { Cx = max.Width, Cy = max.Height, Type = SlideSizeValues.Custom }; int i = 0; int length = pageList.Count; foreach (PPTPage page in pageList) { Slide slide = insertSlide(presentationPart, imgId.ToString()); insertPage(slide, max, page, ref imgId); slide.Save(); Console.WriteLine("IMAGE TO PPTX - {0}/{1}", ++i, length); } presentationDocument.PresentationPart.Presentation.Save(); } }
public static int RetrieveNumberOfSlides(string file, bool includeHidden = true) { int slidesCount = 0; using (PresentationDocument doc = PresentationDocument.Open(file, false)) { // Get the presentation part of the document. PresentationPart presentationPart = doc.PresentationPart; if (presentationPart != null) { if (includeHidden) { slidesCount = presentationPart.SlideParts.Count(); } else { // Each slide can include a Show property, which if hidden // will contain the value "0". The Show property may not // exist, and most likely will not, for non-hidden slides. var slides = presentationPart.SlideParts.Where( (s) => (s.Slide != null) && ((s.Slide.Show == null) || (s.Slide.Show.HasValue && s.Slide.Show.Value))); slidesCount = slides.Count(); } } } return(slidesCount); }
private Slide insertSlide(PresentationPart presentationPart, string layoutName) { UInt32 slideId = 256U; var slideIdList = presentationPart.Presentation.SlideIdList; SlideMasterPart slideMasterPart = presentationPart.SlideMasterParts.First(); SlideLayoutPart slideLayoutPart = slideMasterPart.SlideLayoutParts.First(); if (slideIdList == null) { presentationPart.Presentation.SlideIdList = new SlideIdList(); slideIdList = presentationPart.Presentation.SlideIdList; } slideId += Convert.ToUInt32(slideIdList.Count()); Slide slide = new Slide(new CommonSlideData(new ShapeTree())); SlidePart slidePart = presentationPart.AddNewPart <SlidePart>(); slide.Save(slidePart); slidePart.AddPart <SlideLayoutPart>(slideLayoutPart); slidePart.Slide.CommonSlideData = (CommonSlideData)slideLayoutPart.SlideLayout.CommonSlideData.Clone(); SlideId newSlideId = presentationPart.Presentation.SlideIdList.AppendChild <SlideId>(new SlideId()); newSlideId.Id = slideId; newSlideId.RelationshipId = presentationPart.GetIdOfPart(slidePart); return(getSlideByRelationShipId(presentationPart, newSlideId.RelationshipId)); }
/// <summary> /// Parses the data into a list of slides. /// </summary> /// <returns> /// A list of parsed slides. /// </returns> public List <Model.Slide> Parse() { var parsedSlides = new List <Model.Slide>(); PresentationPart presentationPart = doc.PresentationPart; // Verify that the presentation part and presentation exist. if (presentationPart != null && presentationPart.Presentation != null) { // Get the Presentation object from the presentation part. Presentation presentation = presentationPart.Presentation; // Verify that the slide ID list exists. if (presentation.SlideIdList != null) { // Loop on the collection of slide IDs from the slide ID list. foreach (SlideId slideId in presentation.SlideIdList.ChildElements) { // Get the relationship ID of the slide. string slidePartRelationshipId = slideId.RelationshipId; // Get the specified slide part from the relationship ID. SlidePart slidePart = (SlidePart)presentationPart.GetPartById(slidePartRelationshipId); parsedSlides.Add(ParseSlide(slidePart)); } } } return(parsedSlides); }
private SlidePart CloneSlidePart(PresentationPart presentationPart, SlidePart slideTemplate) { SlidePart cloneSlidei = presentationPart.AddNewPart <SlidePart>("newSlide" + i); i++; cloneSlidei.FeedData(slideTemplate.GetStream(FileMode.Open)); cloneSlidei.AddPart(slideTemplate.SlideLayoutPart); SlideIdList slideidlist = presentationPart.Presentation.SlideIdList; uint maxide = 0; SlideId beforeSlide = null; foreach (SlideId slideidw in slideidlist.ChildElements) { if (slideidw.Id > maxide) { beforeSlide = slideidw; maxide = slideidw.Id; } } maxide++; SlideId inside = slideidlist.InsertAfter(new SlideId(), beforeSlide); inside.Id = maxide; inside.RelationshipId = presentationPart.GetIdOfPart(cloneSlidei); return(cloneSlidei); }
internal static Slide InsertSlide(this PresentationPart presentationPart, string layoutName) { UInt32 slideId = 256U; slideId += Convert.ToUInt32(presentationPart.Presentation.SlideIdList.Count()); Slide slide = new Slide(new CommonSlideData(new ShapeTree())); SlidePart sPart = presentationPart.AddNewPart <SlidePart>(); slide.Save(sPart); SlideMasterPart smPart = presentationPart.SlideMasterParts.First(); SlideLayoutPart slPart = smPart.SlideLayoutParts.SingleOrDefault (sl => sl.SlideLayout.CommonSlideData.Name.Value.Equals(layoutName)); if (slPart == null) { throw new Exception("The slide layout " + layoutName + " is not found"); } sPart.AddPart <SlideLayoutPart>(slPart); sPart.Slide.CommonSlideData = (CommonSlideData)smPart.SlideLayoutParts.SingleOrDefault( sl => sl.SlideLayout.CommonSlideData.Name.Value.Equals(layoutName)).SlideLayout.CommonSlideData.Clone(); SlideId newSlideId = presentationPart.Presentation.SlideIdList.AppendChild <SlideId>(new SlideId()); newSlideId.Id = slideId; newSlideId.RelationshipId = presentationPart.GetIdOfPart(sPart); return(GetSlideByRelationshipId(presentationPart, newSlideId.RelationshipId)); }
public static bool ReadFileCompateText(string path, string s) { using (PresentationDocument presentationDocument = PresentationDocument.Open(path, false)) { Regex r = new Regex(s, RegexOptions.IgnoreCase); // Get the relationship ID of the first slide. PresentationPart part = presentationDocument.PresentationPart; OpenXmlElementList slideIds = part.Presentation.SlideIdList.ChildElements; for (int i = 0; i < slideIds.Count; i++) { string relId = (slideIds[i] as SlideId).RelationshipId; // Get the slide part from the relationship ID. SlidePart slide = (SlidePart)part.GetPartById(relId); // Get the inner text of the slide: IEnumerable <A.Text> texts = slide.Slide.Descendants <A.Text>(); foreach (A.Text text in texts) { Match m = r.Match(text.InnerText); if (m.Success) { presentationDocument.Close(); return(true); } } } presentationDocument.Close(); } return(false); }
public int PPTGetSlideCount(string fileName, bool includeHidden) { int slidesCount = 0; using (PresentationDocument presentationDocument = PresentationDocument.Open(fileName, false)) { //Get the presentation part of the document PresentationPart presentationPart = presentationDocument.PresentationPart; if (presentationPart != null) { if (includeHidden) { slidesCount = presentationPart.SlideParts.Count(); //slidesCount = presentationPart.GetPartsOfType<SlidePart>().Count(); } else { var slides = presentationPart.SlideParts. Where((s) => (s.Slide != null) && ((s.Slide.Show == null) || (s.Slide.Show.HasValue && s.Slide.Show.Value))); slidesCount = slides.Count(); } } } return(slidesCount); }
public ToxySlideshow Parse() { if (!File.Exists(Context.Path)) { throw new FileNotFoundException("File " + Context.Path + " is not found"); } ToxySlideshow ss = new ToxySlideshow(); using (PresentationDocument ppt = PresentationDocument.Open(Context.Path, false)) { // Get the relationship ID of the first slide. PresentationPart part = ppt.PresentationPart; DocumentFormat.OpenXml.OpenXmlElementList slideIds = part.Presentation.SlideIdList.ChildElements; for (int index = 0; index < slideIds.Count; index++) { string relId = (slideIds[index] as SlideId).RelationshipId; relId = (slideIds[index] as SlideId).RelationshipId; // Get the slide part from the relationship ID. SlidePart slide = (SlidePart)part.GetPartById(relId); var tslide = Parse(slide); ss.Slides.Add(tslide); } } return(ss); }
private static SlidePart CreateSlidePart(PresentationPart presentationPart) { SlidePart slidePart = presentationPart.AddNewPart <SlidePart>(slidePartRId); slidePart.Slide = CreateSlide(); return(slidePart); }
public ToxySlide Parse(int slideIndex) { if (!File.Exists(Context.Path)) { throw new FileNotFoundException("File " + Context.Path + " is not found"); } using (PresentationDocument ppt = PresentationDocument.Open(Context.Path, false)) { // Get the relationship ID of the first slide. PresentationPart part = ppt.PresentationPart; DocumentFormat.OpenXml.OpenXmlElementList slideIds = part.Presentation.SlideIdList.ChildElements; if (slideIds.Count - 1 < slideIndex) { throw new ArgumentOutOfRangeException(string.Format("This file only contains {0} slide(s).", slideIds.Count)); } string relId = (slideIds[slideIndex] as SlideId).RelationshipId; relId = (slideIds[slideIndex] as SlideId).RelationshipId; // Get the slide part from the relationship ID. SlidePart slide = (SlidePart)part.GetPartById(relId); var tslide = Parse(slide); return(tslide); } }
public static void GetSlideIdAndText(out string sldText, string docName, int index) { using (PresentationDocument ppt = PresentationDocument.Open(docName, false)) { // Get the relationship ID of the first slide. PresentationPart part = ppt.PresentationPart; OpenXmlElementList slideIds = part.Presentation.SlideIdList.ChildElements; string relId = (slideIds[index] as SlideId).RelationshipId; // Get the slide part from the relationship ID. SlidePart slide = (SlidePart)part.GetPartById(relId); // Build a StringBuilder object. StringBuilder paragraphText = new StringBuilder(); // Get the inner text of the slide: IEnumerable <A.Text> texts = slide.Slide.Descendants <A.Text>(); foreach (A.Text text in texts) { paragraphText.Append(text.Text); } sldText = paragraphText.ToString(); } }
static SlidePart CreateSlidePart(PresentationPart presentationPart) { var slidePart1 = presentationPart.AddNewPart <SlidePart>("rId2"); slidePart1.Slide = new Slide( new CommonSlideData(new ShapeTree( new P.NonVisualGroupShapeProperties( new P.NonVisualDrawingProperties { Id = 1U, Name = "" }, new P.NonVisualGroupShapeDrawingProperties(), new ApplicationNonVisualDrawingProperties()), new GroupShapeProperties(new TransformGroup()), new P.Shape( new P.NonVisualShapeProperties( new P.NonVisualDrawingProperties { Id = 2U, Name = "Title 1" }, new P.NonVisualShapeDrawingProperties(new ShapeLocks { NoGrouping = true }), new ApplicationNonVisualDrawingProperties(new PlaceholderShape())), new P.ShapeProperties(), new P.TextBody( new BodyProperties(), new ListStyle(), new Paragraph(new EndParagraphRunProperties { Language = "en-US" }))))), new ColorMapOverride(new MasterColorMapping())); return(slidePart1); }
/// <summary> /// ファイル名とスライド番号に対応するテキストをすべて取得して結合して返却する。 /// </summary> /// <param name="sldText">スライドに設定されたString</param> /// <param name="docName">ファイル名</param> /// <param name="index">スライド番号</param> public static void GetSlideIdAndText(out string sldText, string docName, int index) { using (PresentationDocument ppt = PresentationDocument.Open(docName, false)) { // Get the relationship ID of the first slide. PresentationPart part = ppt.PresentationPart; OpenXmlElementList slideIds = part.Presentation.SlideIdList.ChildElements; // スライド番号から、.NETで扱うためのスライドIDを取得する。 string relId = (slideIds[index] as SlideId).RelationshipId; // Get the slide part from the relationship ID. SlidePart slide = (SlidePart)part.GetPartById(relId); // Build a StringBuilder object. StringBuilder paragraphText = new StringBuilder(); // Get the inner text of the slide: // slide.Slide(current element's)がもつ DocumentFormat.OpenXml.Drawing.Text型のXML上の要素をすべて取得する。 IEnumerable <A.Text> texts = slide.Slide.Descendants <A.Text>(); foreach (A.Text text in texts) { paragraphText.Append(text.Text).Append(" "); Console.WriteLine("-------------------------------------"); Console.WriteLine("Parent:" + text.LocalName); Console.WriteLine("Parent:" + text.Parent.ToString()); } sldText = paragraphText.ToString(); } }
/// <summary> /// Reading file raw data from file byte data. /// </summary> /// <param name="data">File resources as byte arrays.</param> /// <returns>An array of objects containing raw data.</returns> public TempData[] ReadFileRawDataFromByteArray(byte[] data) { try { using (PresentationDocument presentationDocument = PresentationDocument.Open(new MemoryStream(data), false)) { List <TempData> result = new List <TempData>(); PresentationPart presentationPart = presentationDocument.PresentationPart; OpenXmlElementList openXmlElementList = presentationPart.Presentation.SlideIdList.ChildElements; // Get all SlideParts. var slideParts = from item in openXmlElementList select(SlidePart) presentationPart.GetPartById((item as SlideId).RelationshipId); // Retrieve the text of each slidePart. var slideText = from item in slideParts select GetSlideText(item); result.AddRange(TempData.GetTempDataIEnumerable(StorageType.TextType, slideText)); // Find image and add to the result. // Insert code here! return(result.ToArray()); } } catch (Exception ex) { throw ex; } }