コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
                }
            }
        }
コード例 #4
0
        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());
            }
        }
コード例 #5
0
ファイル: SlideConverterV2.cs プロジェクト: sethips/Common
        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);
        }
コード例 #6
0
        /// <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));
        }
コード例 #7
0
        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));
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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(" ");
                }
            }
        }
コード例 #10
0
        // 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);
        }
コード例 #11
0
        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;
            }
        }
コード例 #12
0
        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))));
        }
コード例 #13
0
ファイル: SlideConverter.cs プロジェクト: sethips/Common
        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);
            }
        }
コード例 #14
0
        private static void CreatePresentation(PresentationDocument presentationDoc)
        {
            PresentationPart presentationPart = presentationDoc.AddPresentationPart();

            presentationPart.Presentation = new P.Presentation();
            CreatePresentationParts(presentationPart);
        }
コード例 #15
0
        /// <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);
        }
コード例 #16
0
        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();
            }
        }
コード例 #17
0
ファイル: ReadPPT.cs プロジェクト: arindamCODE/Insight
        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);
        }
コード例 #18
0
        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));
        }
コード例 #19
0
        /// <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);
        }
コード例 #20
0
        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);
        }
コード例 #21
0
        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));
        }
コード例 #22
0
        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);
        }
コード例 #23
0
        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);
        }
コード例 #24
0
        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);
        }
コード例 #25
0
        private static SlidePart CreateSlidePart(PresentationPart presentationPart)
        {
            SlidePart slidePart = presentationPart.AddNewPart <SlidePart>(slidePartRId);

            slidePart.Slide = CreateSlide();
            return(slidePart);
        }
コード例 #26
0
        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);
            }
        }
コード例 #27
0
        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();
            }
        }
コード例 #28
0
        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);
        }
コード例 #29
0
        /// <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();
            }
        }
コード例 #30
0
        /// <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;
            }
        }