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)); }
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)); }
internal static void AppendSlideMaster(PresentationPart presentationPart, SlideMaster slideMaster, IEnumerable <SlideLayout> slideLayouts) { // append a new SlideMasterPart SlideMasterPart slideMasterPart = presentationPart.AddNewPartDefaultId <SlideMasterPart>(); // clear SlideLayoutIdList and rebuild it slideMaster.SlideLayoutIdList = new SlideLayoutIdList(); foreach (SlideLayout slideLayout in slideLayouts) { SlideLayoutPart slideLayoutPart = slideMasterPart.AddNewPartDefaultId <SlideLayoutPart>(out string slideLayoutPartId); slideLayoutPart.CreateRelationshipToPartDefaultId(slideMasterPart); slideLayout.Save(slideLayoutPart); // add to SlideLayoutIdList slideMaster.SlideLayoutIdList.AppendChild(new SlideLayoutId() { Id = slideMaster.SlideLayoutIdList.Elements <SlideLayoutId>().Select(sl => sl.Id.Value).DefaultIfEmpty(2147483648u).Max() + 1, RelationshipId = slideMasterPart.GetIdOfPart(slideLayoutPart) }); } slideMasterPart.CreateRelationshipToPartDefaultId(presentationPart.ThemePart); slideMaster.Save(slideMasterPart); AddSlideMasterToSlideMasterIdList(presentationPart, slideMasterPart); }
internal static SlideLayout[] ExtractSlideLayouts(SlideMasterPart slideMasterPart) { return(slideMasterPart.SlideMaster.SlideLayoutIdList .Elements <SlideLayoutId>() .Select(id => (slideMasterPart.GetPartById(id.RelationshipId) as SlideLayoutPart).SlideLayout) .ToArray()); }
public static ThemePart CreateTheme(SlideMasterPart slideMasterPart1) { ThemePart themePart1 = slideMasterPart1.AddNewPart <ThemePart>("rId12"); GeneratePartContent(themePart1); return(themePart1); }
public SlideLayoutPart AddLayoutPartWithInstanceId(UInt32 instanceId) { SlideMasterPart masterPart = _ctx.GetOrCreateMasterMappingByMasterId(this.MasterId).MasterPart; SlideLayoutPart layoutPart = masterPart.AddSlideLayoutPart(); this.InstanceIdToLayoutPart.Add(instanceId, layoutPart); return(layoutPart); }
public static void Copy(Stream sourcePresentationStream, uint copiedSlidePosition, Stream destPresentationStream) { using (var destDoc = PresentationDocument.Open(destPresentationStream, true)) { var sourceDoc = PresentationDocument.Open(sourcePresentationStream, false); var destPresentationPart = destDoc.PresentationPart; var destPresentation = destPresentationPart.Presentation; //_uniqueId = GetMaxIdFromChild(destPresentation.SlideMasterIdList); //uint maxId = GetMaxIdFromChild(destPresentation.SlideIdList); var sourcePresentationPart = sourceDoc.PresentationPart; var sourcePresentation = sourcePresentationPart.Presentation; int copiedSlideIndex = (int)--copiedSlidePosition; int countSlidesInSourcePresentation = sourcePresentation.SlideIdList.Count(); if (copiedSlideIndex < 0 || copiedSlideIndex >= countSlidesInSourcePresentation) { throw new ArgumentOutOfRangeException(nameof(copiedSlidePosition)); } SlideId copiedSlideId = sourcePresentationPart.Presentation.SlideIdList.ChildElements[copiedSlideIndex] as SlideId; SlidePart copiedSlidePart = sourcePresentationPart.GetPartById(copiedSlideId.RelationshipId) as SlidePart; SlidePart addedSlidePart = destPresentationPart.AddPart <SlidePart>(copiedSlidePart); SlideMasterPart addedSlideMasterPart = destPresentationPart.AddPart(addedSlidePart.SlideLayoutPart.SlideMasterPart); //// Create new slide ID //maxId++; //SlideId slideId = new SlideId //{ // Id = maxId, // RelationshipId = destDoc.PresentationPart.GetIdOfPart(addedSlidePart) //}; //destPresentation.SlideIdList.Append(slideId); //// Create new master slide ID //_uniqueId++; //SlideMasterId slideMaterId = new SlideMasterId //{ // Id = _uniqueId, // RelationshipId = destDoc.PresentationPart.GetIdOfPart(addedSlideMasterPart) //}; //destDoc.PresentationPart.Presentation.SlideMasterIdList.Append(slideMaterId); // change slide layout ID FixSlideLayoutIds(destDoc.PresentationPart); destDoc.PresentationPart.Presentation.Save(); } sourcePresentationStream.Close(); destPresentationStream.Close(); }
private static List <SlidePart> CreateImageSlideParts(PresentationPart presentationPart, List <SvgDocument> svgDocs) { int id = 256; string relId; SlideId newSlideId; SlideLayoutId newSlideLayoutId; uint uniqueId = GetMaxUniqueId(presentationPart); uint maxSlideId = GetMaxSlideId(presentationPart.Presentation.SlideIdList); // get first slide master part: template SlideMasterPart slideMasterPart = presentationPart.SlideMasterParts.First(); List <SlidePart> slideParts = new List <SlidePart>(); for (int i = 0; i < svgDocs.Count; i++) { id++; using (MemoryStream ms = new MemoryStream()) { using (System.Drawing.Bitmap image = svgDocs[i].Draw()) { image.Save(ms, ImageFormat.Bmp); ms.Seek(0, SeekOrigin.Begin); relId = "rId" + id; // add new slide part SlidePart slidePart = presentationPart.AddNewPart <SlidePart>(relId); // add image part to slide part ImagePart imagePart = slidePart.AddImagePart(ImagePartType.Bmp, relId); imagePart.FeedData(ms); // add image slide CreateImageSlide(relId).Save(slidePart); // add slide layout part to slide part SlideLayoutPart slideLayoutPart = slidePart.AddNewPart <SlideLayoutPart>(); CreateSlideLayoutPart().Save(slideLayoutPart); slideMasterPart.AddPart(slideLayoutPart); slideLayoutPart.AddPart(slideMasterPart); uniqueId++; newSlideLayoutId = new SlideLayoutId(); newSlideLayoutId.RelationshipId = slideMasterPart.GetIdOfPart(slideLayoutPart); newSlideLayoutId.Id = uniqueId; slideMasterPart.SlideMaster.SlideLayoutIdList.Append(newSlideLayoutId); // add slide part to presentaion slide list maxSlideId++; newSlideId = new SlideId(); newSlideId.RelationshipId = relId; newSlideId.Id = maxSlideId; presentationPart.Presentation.SlideIdList.Append(newSlideId); } } } slideMasterPart.SlideMaster.Save(); return(slideParts); }
/// <summary> /// Lấy chủ đề /// </summary> /// <param name="design"></param> /// <param name="count"></param> /// <returns></returns> public ETheme GetETheme(pp.Design design, int count) { ETheme etheme = new ETheme(); etheme.Name = design.Name; etheme.ID = ObjectElementsHelper.RandomString(10); etheme.ThemeName = design.Name; EColorManagment eColorManagment = new EColorManagment(); eColorManagment = GetEColorManagment(design.SlideMaster.Theme.ThemeColorScheme); etheme.Colors = eColorManagment; etheme.SelectedFont = GetFontTheme(design.SlideMaster.Theme.ThemeFontScheme); ESlideMaster eSlideMaster = new ESlideMaster(); eSlideMaster.ThemesName = etheme.Name; eSlideMaster.Name = etheme.Name; eSlideMaster.MainLayer = new PageLayer(); SlideMasterPart slideMasterPart = GetSlideMasterPart(count); eSlideMaster.MainLayer.Background = GetFillColorSlideMaster(design.SlideMaster.Background.Fill, slideMasterPart.SlideMaster?.CommonSlideData, slideMasterPart); eSlideMaster.ID = ObjectElementsHelper.RandomString(12); foreach (pp.Shape shape in design.SlideMaster.Shapes) { eSlideMaster.MainLayer.Children.Add(GetShape(shape, shape.Type, design.SlideMaster.TimeLine, slideMasterPart)); } SetIsBackgroundShape(eSlideMaster.MainLayer); int countLayoutMaster = 0; foreach (pp.CustomLayout layout in design.SlideMaster.CustomLayouts) { SlideLayoutPart slideLayoutPart = GetSlideLayoutPart(countLayoutMaster++, slideMasterPart); ELayoutMaster eLayoutMaster = new ELayoutMaster(); eLayoutMaster.ID = ObjectElementsHelper.RandomString(13); eLayoutMaster.MainLayer = new PageLayer(); eLayoutMaster.MainLayer.Background = GetFillColorSlideMaster(layout.Background.Fill, slideLayoutPart.SlideLayout?.CommonSlideData, slideLayoutPart); if (eLayoutMaster.MainLayer.Background == null) { eLayoutMaster.MainLayer.Background = eSlideMaster.MainLayer.Background; } foreach (pp.Shape shape in layout.Shapes) { eLayoutMaster.MainLayer.Children.Add(GetShape(shape, shape.Type, design.SlideMaster.TimeLine, slideLayoutPart)); } SetIsBackgroundShape(eLayoutMaster.MainLayer); eLayoutMaster.SlideName = layout.Name; eLayoutMaster.LayoutName = layout.Name; eLayoutMaster.IsHideBackground = layout.DisplayMasterShapes != MsoTriState.msoTrue; eSlideMaster.LayoutMasters.Add(eLayoutMaster); } etheme.SlideMasters.Add(eSlideMaster); return(etheme); }
static void Main(string[] args) { int copiedSlidePosition = 1; using (PresentationDocument destDoc = PresentationDocument.Open(@"C:\a.pptx", true)) { using (var sourceDoc = PresentationDocument.Open(@"C:\b.pptx", false)) { var destPresentationPart = destDoc.PresentationPart; var destPresentation = destPresentationPart.Presentation; var sourcePresentationPart = sourceDoc.PresentationPart; var sourcePresentation = sourcePresentationPart.Presentation; int countSlidesInSourcePresentation = sourcePresentation.SlideIdList.Count(); int copiedSlideIndex = (int)--copiedSlidePosition; if (copiedSlideIndex < 0 || copiedSlideIndex >= countSlidesInSourcePresentation) { throw new ArgumentOutOfRangeException(nameof(copiedSlidePosition)); } SlideId copiedSlideId = sourcePresentationPart.Presentation.SlideIdList.ChildElements[copiedSlideIndex] as SlideId; SlidePart copiedSlidePart = sourcePresentationPart.GetPartById(copiedSlideId.RelationshipId) as SlidePart; SlidePart addedSlidePart = destPresentationPart.AddPart <SlidePart>(copiedSlidePart); SlideMasterPart addedSlideMasterPart = destPresentationPart.AddPart(addedSlidePart.SlideLayoutPart.SlideMasterPart); UInt32 maxId = 1; SlideId slideId = new SlideId { Id = maxId, RelationshipId = destDoc.PresentationPart.GetIdOfPart(addedSlidePart) }; destPresentation.SlideIdList.Append(slideId); // Create new master slide ID UInt32 _uniqueId = 1; SlideMasterId slideMaterId = new SlideMasterId { Id = _uniqueId, RelationshipId = destDoc.PresentationPart.GetIdOfPart(addedSlideMasterPart) }; destDoc.PresentationPart.Presentation.SlideMasterIdList.Append(slideMaterId); // change slide layout ID FixSlideLayoutIds(destDoc.PresentationPart); destDoc.PresentationPart.Presentation.Save(); } } }
internal static void AppendSlideMasterFromPart(PresentationPart presentationPart, PresentationPart sourcePresentationPart, SlideMasterPart themeSlideMasterPart) { SlideMasterPart slideMasterPart = presentationPart.AddPart(themeSlideMasterPart, presentationPart.GetNextRelationshipId()); AddSlideMasterToSlideMasterIdList(presentationPart, slideMasterPart); /*IDictionary<OpenXmlPart, OpenXmlPart> mapping = new Dictionary<OpenXmlPart, OpenXmlPart>() * { * { sourcePresentationPart, presentationPart } * }; * * CopyPartRecursive(presentationPart, sourcePresentationPart.ThemePart, presentationPart.GetNextRelationshipId(), mapping);*/ }
public SlideLayoutPart GetOrCreateLayoutPartForTitleMasterId(UInt32 titleMasterId) { SlideMasterPart masterPart = _ctx.GetOrCreateMasterMappingByMasterId(this.MasterId).MasterPart; if (!this.TitleMasterIdToLayoutPart.ContainsKey(titleMasterId)) { Slide titleMaster = _ctx.Ppt.FindMasterRecordById(titleMasterId); SlideLayoutPart layoutPart = masterPart.AddSlideLayoutPart(); new TitleMasterMapping(_ctx, layoutPart).Apply(titleMaster); this.TitleMasterIdToLayoutPart.Add(titleMasterId, layoutPart); } return(this.TitleMasterIdToLayoutPart[titleMasterId]); }
private void insert(PresentationPart presentationPart, List <String> imgList) { int idx = 1; uint uid = UInt32.MaxValue; var slideParts = presentationPart.SlideParts; string slideMasterRid = "rId" + idx; SlideMasterIdList slideMasterIdList = new SlideMasterIdList(new SlideMasterId() { Id = uid, RelationshipId = slideMasterRid }); SlideIdList slideIdList = new SlideIdList(); SlideSize slideSize = new SlideSize() { Cx = 9144000, Cy = 6858000, Type = SlideSizeValues.Screen4x3 }; NotesSize notesSize = new NotesSize() { Cx = 6858000, Cy = 9144000 }; DefaultTextStyle defaultTextStyle = new DefaultTextStyle(); presentationPart.Presentation.Append(slideMasterIdList, slideIdList, slideSize, notesSize, defaultTextStyle); SlideLayoutPart layoutPart = null; SlideMasterPart masterPart = null; ThemePart themePart = null; foreach (string imgPath in imgList) { String imgIdx = "rId" + (900 + idx); String slideIdx = "rId" + (idx + 1); String themeIdx = "rId" + (idx + 4); var slidePart = CreateSlidePart(presentationPart, slideIdx, uid = uid - 10); if (null == layoutPart) { layoutPart = CreateSlideLayoutPart(slidePart, slideMasterRid, uid = uid - 10); masterPart = CreateSlideMasterPart(layoutPart, slideMasterRid, uid = uid - 10); themePart = CreateTheme(masterPart, themeIdx); masterPart.AddPart(layoutPart, slideMasterRid); presentationPart.AddPart(masterPart, slideMasterRid); presentationPart.AddPart(themePart, themeIdx); } //insert(slidePart, imgPath, imgIdx, uid = uid - 10); idx += 5; } presentationPart.Presentation.Save(); }
private static SlideMasterPart CreateSlideMasterPart(SlideLayoutPart slideLayoutPart1) { SlideMasterPart slideMasterPart1 = slideLayoutPart1.AddNewPart <SlideMasterPart>("rId1"); SlideMaster slideMaster = new SlideMaster( new CommonSlideData(new ShapeTree( new P.NonVisualGroupShapeProperties( new P.NonVisualDrawingProperties() { Id = (UInt32Value)1U, Name = "" }, new P.NonVisualGroupShapeDrawingProperties(), new ApplicationNonVisualDrawingProperties()), new GroupShapeProperties(new TransformGroup()), new P.Shape( new P.NonVisualShapeProperties( new P.NonVisualDrawingProperties() { Id = (UInt32Value)2U, Name = "Title Placeholder 1" }, new P.NonVisualShapeDrawingProperties(new ShapeLocks() { NoGrouping = true }), new ApplicationNonVisualDrawingProperties(new PlaceholderShape() { Type = PlaceholderValues.Title })), new P.ShapeProperties(), new P.TextBody( new BodyProperties(), new ListStyle(), new Paragraph(new D.Run(new D.Text() { Text = "Create slide Master This presentation has been created by Kashish Jhaveri" })))))), new P.ColorMap() { Background1 = D.ColorSchemeIndexValues.Light1, Text1 = D.ColorSchemeIndexValues.Dark1, Background2 = D.ColorSchemeIndexValues.Light2, Text2 = D.ColorSchemeIndexValues.Dark2, Accent1 = D.ColorSchemeIndexValues.Accent1, Accent2 = D.ColorSchemeIndexValues.Accent2, Accent3 = D.ColorSchemeIndexValues.Accent3, Accent4 = D.ColorSchemeIndexValues.Accent4, Accent5 = D.ColorSchemeIndexValues.Accent5, Accent6 = D.ColorSchemeIndexValues.Accent6, Hyperlink = D.ColorSchemeIndexValues.Hyperlink, FollowedHyperlink = D.ColorSchemeIndexValues.FollowedHyperlink }, new SlideLayoutIdList(new SlideLayoutId() { Id = (UInt32Value)2147483649U, RelationshipId = "rId1" }), new TextStyles(new TitleStyle(), new BodyStyle(), new OtherStyle())); slideMasterPart1.SlideMaster = slideMaster; return(slideMasterPart1); }
public SlideLayoutPart GetOrCreateLayoutPartByCode(string xml) { SlideMasterPart masterPart = _ctx.GetOrCreateMasterMappingByMasterId(this.MasterId).MasterPart; if (!this.CodeToLayoutPart.ContainsKey(xml)) { XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); SlideLayoutPart layoutPart = masterPart.AddSlideLayoutPart(); doc.WriteTo(layoutPart.XmlWriter); layoutPart.XmlWriter.Flush(); CodeToLayoutPart.Add(xml, layoutPart); } return(CodeToLayoutPart[xml]); }
private static SlideMasterPart CreateSlideMasterPart(SlideLayoutPart slideLayoutPart1) { SlideMasterPart slideMasterPart1 = slideLayoutPart1.AddNewPart <SlideMasterPart>("rId1"); P.SlideMaster slideMaster = new P.SlideMaster( new P.CommonSlideData(new P.ShapeTree( new P.NonVisualGroupShapeProperties( new P.NonVisualDrawingProperties() { Id = 1U, Name = string.Empty }, new P.NonVisualGroupShapeDrawingProperties(), new P.ApplicationNonVisualDrawingProperties()), new P.GroupShapeProperties(new D.TransformGroup()), new P.Shape( new P.NonVisualShapeProperties( new P.NonVisualDrawingProperties() { Id = 2U, Name = "Title Placeholder 1" }, new P.NonVisualShapeDrawingProperties(new D.ShapeLocks() { NoGrouping = true }), new P.ApplicationNonVisualDrawingProperties(new P.PlaceholderShape() { Type = P.PlaceholderValues.Title })), new P.ShapeProperties(), new P.TextBody( new D.BodyProperties(), new D.ListStyle(), new D.Paragraph())))), new P.ColorMap() { Background1 = D.ColorSchemeIndexValues.Light1, Text1 = D.ColorSchemeIndexValues.Dark1, Background2 = D.ColorSchemeIndexValues.Light2, Text2 = D.ColorSchemeIndexValues.Dark2, Accent1 = D.ColorSchemeIndexValues.Accent1, Accent2 = D.ColorSchemeIndexValues.Accent2, Accent3 = D.ColorSchemeIndexValues.Accent3, Accent4 = D.ColorSchemeIndexValues.Accent4, Accent5 = D.ColorSchemeIndexValues.Accent5, Accent6 = D.ColorSchemeIndexValues.Accent6, Hyperlink = D.ColorSchemeIndexValues.Hyperlink, FollowedHyperlink = D.ColorSchemeIndexValues.FollowedHyperlink }, new P.SlideLayoutIdList(new P.SlideLayoutId() { Id = 2147483649U, RelationshipId = "rId1" }), new P.TextStyles(new P.TitleStyle(), new P.BodyStyle(), new P.OtherStyle())); slideMasterPart1.SlideMaster = slideMaster; return(slideMasterPart1); }
private static SlideMasterPart CreateSlideMasterPart(SlideLayoutPart slideLayoutPart, string masterIdx, uint uid) { SlideMasterPart slideMasterPart = slideLayoutPart.AddNewPart <SlideMasterPart>(masterIdx); SlideMaster slideMaster = new SlideMaster(new CommonSlideData(new ShapeTree(new ShapeTree( new P.NonVisualGroupShapeProperties( new P.NonVisualDrawingProperties() { Id = (UInt32Value)1U, Name = "" }, new P.NonVisualGroupShapeDrawingProperties(), new ApplicationNonVisualDrawingProperties()), new GroupShapeProperties(new TransformGroup()))))); slideMasterPart.SlideMaster = slideMaster; return(slideMasterPart); }
/// <summary> /// Insert a new Slide into PowerPoint /// </summary> /// <param name="presentationPart">Presentation Part</param> /// <param name="layoutName">Layout of the new Slide</param> /// <returns>Slide Instance</returns> public Slide InsertSlide(PresentationPart presentationPart, string layoutName) { UInt32 slideId = 256U; // Get the Slide Id collection of the presentation document var slideIdList = presentationPart.Presentation.SlideIdList; if (slideIdList == null) { throw new NullReferenceException("The number of slide is empty, please select a ppt with a slide at least again"); } slideId += Convert.ToUInt32(slideIdList.Count()); // Creates a Slide instance and adds its children. Slide slide = new Slide(new CommonSlideData(new ShapeTree())); SlidePart slidePart = presentationPart.AddNewPart <SlidePart>(); slide.Save(slidePart); // Get SlideMasterPart and SlideLayoutPart from the existing Presentation Part SlideMasterPart slideMasterPart = presentationPart.SlideMasterParts.First(); SlideLayoutPart slideLayoutPart = slideMasterPart.SlideLayoutParts.SingleOrDefault (sl => sl.SlideLayout.CommonSlideData.Name.Value.Equals(layoutName, StringComparison.OrdinalIgnoreCase)); if (slideLayoutPart == null) { throw new Exception("The slide layout " + layoutName + " is not found"); } slidePart.AddPart <SlideLayoutPart>(slideLayoutPart); slidePart.Slide.CommonSlideData = (CommonSlideData)slideMasterPart.SlideLayoutParts.SingleOrDefault( sl => sl.SlideLayout.CommonSlideData.Name.Value.Equals(layoutName)).SlideLayout.CommonSlideData.Clone(); // Create SlideId instance and Set property SlideId newSlideId = presentationPart.Presentation.SlideIdList.AppendChild <SlideId>(new SlideId()); newSlideId.Id = slideId; newSlideId.RelationshipId = presentationPart.GetIdOfPart(slidePart); return(GetSlideByRelationShipId(presentationPart, newSlideId.RelationshipId)); }
public static void CreatePresentationPart(PresentationPart part, PPTXSetting FileSettings, PPTXSlideLayoutGroup SlideLayouts) { var partCreator = new DefaultPresentationPart(); partCreator._CreatePresentationPart(part); SlidePart slidePart1 = DefaultSlidePart.CreateSlidePart(part, "rId2", FileSettings); // 1枚目のスライド追加 var topLayoutPart = new SlideLayout_TitleSlide(); topLayoutPart.Init(EPPTXSlideLayoutType.TitleSlide, SlideLayouts); SlideLayoutPart slideLayoutPart1 = topLayoutPart.CreateSlideLayoutPart(slidePart1); SlideMasterPart slideMasterPart1 = DefaultSlideMasterPart.CreateSlideMasterPart(slideLayoutPart1, "rId1"); ThemePart themePart1 = DefaultTheme.CreateTheme(slideMasterPart1); slideMasterPart1.AddPart(slideLayoutPart1, "rId1"); part.AddPart(slideMasterPart1, "rId1"); part.AddPart(themePart1, "rId5"); // 残りのスライドレイアウトを追加 foreach (EPPTXSlideLayoutType layoutType in Enum.GetValues(typeof(EPPTXSlideLayoutType))) { if (layoutType == EPPTXSlideLayoutType.TitleSlide) { continue; } var otherLayoutPartType = Type.GetType($"MDToPPTX.PPTX.DefaultParts.SlideLayouts.SlideLayout_{layoutType.ToString()}"); if (otherLayoutPartType == null) { continue; } SlideLayoutPartBase otherLayoutPart = Activator.CreateInstance(otherLayoutPartType) as SlideLayoutPartBase; if (otherLayoutPart != null) { otherLayoutPart.Init(layoutType, SlideLayouts); SlideLayoutPart otherSlideLayoutPart = otherLayoutPart.CreateSlideLayoutPart(slideMasterPart1); otherSlideLayoutPart.AddPart(slideMasterPart1, "rId1"); } } }
public SlideLayoutPart GetOrCreateLayoutPartByLayoutType(SlideLayoutType type, PlaceholderEnum[] placeholderTypes) { SlideMasterPart masterPart = _ctx.GetOrCreateMasterMappingByMasterId(this.MasterId).MasterPart; string layoutFilename = Utils.SlideLayoutTypeToFilename(type, placeholderTypes); if (!this.LayoutFilenameToLayoutPart.ContainsKey(layoutFilename)) { XmlDocument slideLayoutDoc = Utils.GetDefaultDocument("slideLayouts." + layoutFilename); SlideLayoutPart layoutPart = masterPart.AddSlideLayoutPart(); slideLayoutDoc.WriteTo(layoutPart.XmlWriter); layoutPart.XmlWriter.Flush(); this.LayoutFilenameToLayoutPart.Add(layoutFilename, layoutPart); } return(this.LayoutFilenameToLayoutPart[layoutFilename]); }
public SlideLayoutPart GetSlideLayoutPart(int _slideLayoutIndex, SlideMasterPart slideMasterPart) { if (slideMasterPart != null && slideMasterPart.SlideMaster != null) { SlideMaster slideMaster = slideMasterPart.SlideMaster; if (slideMaster.SlideLayoutIdList != null) { DocumentFormat.OpenXml.OpenXmlElementList slideIds = slideMaster.SlideLayoutIdList.ChildElements; // If the slide ID is in range... if (_slideLayoutIndex < slideIds.Count) { // Get the relationship ID of the slide. string slidePartRelationshipId = (slideIds[_slideLayoutIndex] as SlideLayoutId).RelationshipId; return((SlideLayoutPart)slideMasterPart.GetPartById(slidePartRelationshipId)); // Get the specified slide part from the relationship ID. } } } return(null); }
public static void GetThemePart(int _slideIndex) { if (presentationPart != null && presentationPart.Presentation != null) { Presentation presentation = presentationPart.Presentation; if (presentation.SlideMasterIdList != null) { DocumentFormat.OpenXml.OpenXmlElementList slideIds = presentation.SlideMasterIdList.ChildElements; // If the slide ID is in range... if (_slideIndex < slideIds.Count) { // Get the relationship ID of the slide. string slidePartRelationshipId = (slideIds[_slideIndex] as SlideMasterId).RelationshipId; // Get the specified slide part from the relationship ID. themePart = (SlideMasterPart)presentationPart.GetPartById(slidePartRelationshipId); } } } }
internal static Slide InsertSlide(this PresentationPart presentationPart, string layoutName) { //1) create the slide Slide slide = new Slide(new CommonSlideData(new ShapeTree())); ////2) specify non-visual properties of the new slide //NonVisualGroupShapeProperties nonVisualProperties = slide.CommonSlideData.ShapeTree.AppendChild(new NonVisualGroupShapeProperties()); //nonVisualProperties.NonVisualDrawingProperties = new NonVisualDrawingProperties() { Id = 1, Name = "" }; //nonVisualProperties.NonVisualGroupShapeDrawingProperties = new NonVisualGroupShapeDrawingProperties(); //nonVisualProperties.ApplicationNonVisualDrawingProperties = new ApplicationNonVisualDrawingProperties(); ////3) Specify the group shape properties of the new slide. //slide.CommonSlideData.ShapeTree.AppendChild(new GroupShapeProperties()); //4) create slide part for the new slide inside the presentation part SlidePart sPart = presentationPart.AddNewPart <SlidePart>(); slide.Save(sPart); //5) set the slidelayout SlideMasterPart smPart = presentationPart.SlideMasterParts.First(); SlideLayoutPart slPart = smPart.SlideLayoutParts.SingleOrDefault(sl => sl.SlideLayout.CommonSlideData.Name.Value.Equals(layoutName)); sPart.AddPart <SlideLayoutPart>(slPart); //sPart.CommonSlideData = (CommonSlideData)smPart.SlideLayoutParts.SingleOrDefault( // sl => sl.SlideLayout.CommonSlideData.Name.Value.Equals(layoutName)).SlideLayout.CommonSlideData.Clone(); //6) set the slideid UInt32 slideId = 256U; slideId += Convert.ToUInt32(presentationPart.Presentation.SlideIdList.Count()); SlideId newSlideId = presentationPart.Presentation.SlideIdList.AppendChild <SlideId>(new SlideId()); newSlideId.Id = slideId; newSlideId.RelationshipId = presentationPart.GetIdOfPart(sPart); return(GetSlideByRelationshipId(presentationPart, newSlideId.RelationshipId)); }
private void CreateParts(PresentationDocument document, PresentationGenerationData data) { ExtendedFilePropertiesPart extendedFilePropertiesPart1 = document.AddNewPart <ExtendedFilePropertiesPart>("rId3"); GenerateExtendedFilePropertiesPartHelper.GenerateExtendedFilePropertiesPart1Content(extendedFilePropertiesPart1); PresentationPart presentationPart1 = document.AddPresentationPart(); GeneratePresentationPartHelper.GeneratePresentationPart1Content(presentationPart1); CommentAuthorsPart commentAuthorsPart1 = presentationPart1.AddNewPart <CommentAuthorsPart>("rId8"); GenerateCommentAuthorsPartHelper.GenerateCommentAuthorsPart1Content(commentAuthorsPart1); CustomXmlPart customXmlPart1 = presentationPart1.AddNewPart <CustomXmlPart>("application/xml", "rId3"); GenerateCustomXmlPartHelper.GenerateCustomXmlPart1Content(customXmlPart1); CustomXmlPropertiesPart customXmlPropertiesPart1 = customXmlPart1.AddNewPart <CustomXmlPropertiesPart>("rId1"); GenerateCustomXmlPropertiesPartHelper.GenerateCustomXmlPropertiesPart1Content(customXmlPropertiesPart1); HandoutMasterPart handoutMasterPart1 = presentationPart1.AddNewPart <HandoutMasterPart>("rId7"); GenerateHandoutMasterPartHelper.GenerateHandoutMasterPart1Content(handoutMasterPart1); ThemePart themePart1 = handoutMasterPart1.AddNewPart <ThemePart>("rId1"); GenerateThemePartHelper.GenerateThemePart1Content(themePart1); TableStylesPart tableStylesPart1 = presentationPart1.AddNewPart <TableStylesPart>("rId12"); GenerateTableStylesPartHelper.GenerateTableStylesPart1Content(tableStylesPart1); CustomXmlPart customXmlPart2 = presentationPart1.AddNewPart <CustomXmlPart>("application/xml", "rId2"); GenerateCustomXmlPartHelper.GenerateCustomXmlPart2Content(customXmlPart2); CustomXmlPropertiesPart customXmlPropertiesPart2 = customXmlPart2.AddNewPart <CustomXmlPropertiesPart>("rId1"); GenerateCustomXmlPropertiesPartHelper.GenerateCustomXmlPropertiesPart2Content(customXmlPropertiesPart2); CustomXmlPart customXmlPart3 = presentationPart1.AddNewPart <CustomXmlPart>("application/xml", "rId1"); GenerateCustomXmlPartHelper.GenerateCustomXmlPart3Content(customXmlPart3); CustomXmlPropertiesPart customXmlPropertiesPart3 = customXmlPart3.AddNewPart <CustomXmlPropertiesPart>("rId1"); GenerateCustomXmlPropertiesPartHelper.GenerateCustomXmlPropertiesPart3Content(customXmlPropertiesPart3); NotesMasterPart notesMasterPart1 = presentationPart1.AddNewPart <NotesMasterPart>("rId6"); GenerateNotesMasterPartHelper.GenerateNotesMasterPart1Content(notesMasterPart1); ThemePart themePart2 = notesMasterPart1.AddNewPart <ThemePart>("rId1"); GenerateThemePartHelper.GenerateThemePart2Content(themePart2); ThemePart themePart3 = presentationPart1.AddNewPart <ThemePart>("rId11"); GenerateThemePartHelper.GenerateThemePart3Content(themePart3); SlidePart slidePart1 = presentationPart1.AddNewPart <SlidePart>("rId5"); GenerateSlidePartHelper.GenerateSlidePart1Content(slidePart1, data); var pictureType = string.Empty; if (!string.IsNullOrEmpty(data.PictureType)) { pictureType = data.PictureType; } else { pictureType = "image/png"; } ImagePart imagePart1 = slidePart1.AddNewPart <ImagePart>(pictureType, "rId3"); GenerateImagePartHelper.GenerateImagePart1Content(imagePart1, data.PictureContent); NotesSlidePart notesSlidePart1 = slidePart1.AddNewPart <NotesSlidePart>("rId2"); GenerateNotesSlidePartHelper.GenerateNotesSlidePart1Content(notesSlidePart1); notesSlidePart1.AddPart(slidePart1, "rId2"); notesSlidePart1.AddPart(notesMasterPart1, "rId1"); SlideLayoutPart slideLayoutPart1 = slidePart1.AddNewPart <SlideLayoutPart>("rId1"); GenerateSlideLayoutPartHelper.GenerateSlideLayoutPart1Content(slideLayoutPart1); SlideMasterPart slideMasterPart1 = slideLayoutPart1.AddNewPart <SlideMasterPart>("rId1"); GenerateSlideMasterPartHelper.GenerateSlideMasterPart1Content(slideMasterPart1); SlideLayoutPart slideLayoutPart2 = slideMasterPart1.AddNewPart <SlideLayoutPart>("rId8"); GenerateSlideLayoutPartHelper.GenerateSlideLayoutPart2Content(slideLayoutPart2); slideLayoutPart2.AddPart(slideMasterPart1, "rId1"); ImagePart imagePart2 = slideMasterPart1.AddNewPart <ImagePart>("image/jpeg", "rId13"); GenerateImagePartHelper.GenerateImagePart2Content(imagePart2); SlideLayoutPart slideLayoutPart3 = slideMasterPart1.AddNewPart <SlideLayoutPart>("rId3"); GenerateSlideLayoutPartHelper.GenerateSlideLayoutPart3Content(slideLayoutPart3); slideLayoutPart3.AddPart(slideMasterPart1, "rId1"); SlideLayoutPart slideLayoutPart4 = slideMasterPart1.AddNewPart <SlideLayoutPart>("rId7"); GenerateSlideLayoutPartHelper.GenerateSlideLayoutPart4Content(slideLayoutPart4); slideLayoutPart4.AddPart(slideMasterPart1, "rId1"); slideMasterPart1.AddPart(themePart3, "rId12"); slideMasterPart1.AddPart(slideLayoutPart1, "rId2"); SlideLayoutPart slideLayoutPart5 = slideMasterPart1.AddNewPart <SlideLayoutPart>("rId1"); GenerateSlideLayoutPartHelper.GenerateSlideLayoutPart5Content(slideLayoutPart5); ImagePart imagePart3 = slideLayoutPart5.AddNewPart <ImagePart>("image/jpeg", "rId3"); GenerateImagePartHelper.GenerateImagePart3Content(imagePart3); ImagePart imagePart4 = slideLayoutPart5.AddNewPart <ImagePart>("image/png", "rId2"); GenerateImagePartHelper.GenerateImagePart4Content(imagePart4); slideLayoutPart5.AddPart(slideMasterPart1, "rId1"); SlideLayoutPart slideLayoutPart6 = slideMasterPart1.AddNewPart <SlideLayoutPart>("rId6"); GenerateSlideLayoutPartHelper.GenerateSlideLayoutPart6Content(slideLayoutPart6); slideLayoutPart6.AddPart(slideMasterPart1, "rId1"); SlideLayoutPart slideLayoutPart7 = slideMasterPart1.AddNewPart <SlideLayoutPart>("rId11"); GenerateSlideLayoutPartHelper.GenerateSlideLayoutPart7Content(slideLayoutPart7); slideLayoutPart7.AddPart(slideMasterPart1, "rId1"); SlideLayoutPart slideLayoutPart8 = slideMasterPart1.AddNewPart <SlideLayoutPart>("rId5"); GenerateSlideLayoutPartHelper.GenerateSlideLayoutPart8Content(slideLayoutPart8); slideLayoutPart8.AddPart(slideMasterPart1, "rId1"); SlideLayoutPart slideLayoutPart9 = slideMasterPart1.AddNewPart <SlideLayoutPart>("rId10"); GenerateSlideLayoutPartHelper.GenerateSlideLayoutPart9Content(slideLayoutPart9); slideLayoutPart9.AddPart(slideMasterPart1, "rId1"); SlideLayoutPart slideLayoutPart10 = slideMasterPart1.AddNewPart <SlideLayoutPart>("rId4"); GenerateSlideLayoutPartHelper.GenerateSlideLayoutPart10Content(slideLayoutPart10); slideLayoutPart10.AddPart(slideMasterPart1, "rId1"); SlideLayoutPart slideLayoutPart11 = slideMasterPart1.AddNewPart <SlideLayoutPart>("rId9"); GenerateSlideLayoutPartHelper.GenerateSlideLayoutPart11Content(slideLayoutPart11); slideLayoutPart11.AddPart(slideMasterPart1, "rId1"); ViewPropertiesPart viewPropertiesPart1 = presentationPart1.AddNewPart <ViewPropertiesPart>("rId10"); GenerateViewPropertiesPartHelper.GenerateViewPropertiesPart1Content(viewPropertiesPart1); presentationPart1.AddPart(slideMasterPart1, "rId4"); PresentationPropertiesPart presentationPropertiesPart1 = presentationPart1.AddNewPart <PresentationPropertiesPart>("rId9"); GeneratePresentationPropertiesPartHelper.GeneratePresentationPropertiesPart1Content(presentationPropertiesPart1); CustomFilePropertiesPart customFilePropertiesPart1 = document.AddNewPart <CustomFilePropertiesPart>("rId4"); CustomFilePropertiesPartHelper.GenerateCustomFilePropertiesPart1Content(customFilePropertiesPart1); SetPackageProperties(document); }
private static ThemePart CreateTheme(SlideMasterPart slideMasterPart1) { ThemePart themePart1 = slideMasterPart1.AddNewPart <ThemePart>("rId5"); D.Theme theme1 = new D.Theme() { Name = "Office Theme" }; D.ThemeElements themeElements1 = new D.ThemeElements( new D.ColorScheme( new D.Dark1Color(new D.SystemColor() { Val = D.SystemColorValues.WindowText, LastColor = "000000" }), new D.Light1Color(new D.SystemColor() { Val = D.SystemColorValues.Window, LastColor = "FFFFFF" }), new D.Dark2Color(new D.RgbColorModelHex() { Val = "1F497D" }), new D.Light2Color(new D.RgbColorModelHex() { Val = "EEECE1" }), new D.Accent1Color(new D.RgbColorModelHex() { Val = "4F81BD" }), new D.Accent2Color(new D.RgbColorModelHex() { Val = "C0504D" }), new D.Accent3Color(new D.RgbColorModelHex() { Val = "9BBB59" }), new D.Accent4Color(new D.RgbColorModelHex() { Val = "8064A2" }), new D.Accent5Color(new D.RgbColorModelHex() { Val = "4BACC6" }), new D.Accent6Color(new D.RgbColorModelHex() { Val = "F79646" }), new D.Hyperlink(new D.RgbColorModelHex() { Val = "0000FF" }), new D.FollowedHyperlinkColor(new D.RgbColorModelHex() { Val = "800080" })) { Name = "Office" }, new D.FontScheme( new D.MajorFont( new D.LatinFont() { Typeface = "Calibri" }, new D.EastAsianFont() { Typeface = "" }, new D.ComplexScriptFont() { Typeface = "" }), new D.MinorFont( new D.LatinFont() { Typeface = "Calibri" }, new D.EastAsianFont() { Typeface = "" }, new D.ComplexScriptFont() { Typeface = "" })) { Name = "Office" }, new D.FormatScheme( new D.FillStyleList( new D.SolidFill(new D.SchemeColor() { Val = D.SchemeColorValues.PhColor }), new D.GradientFill( new D.GradientStopList( new D.GradientStop(new D.SchemeColor(new D.Tint() { Val = 50000 }, new D.SaturationModulation() { Val = 300000 }) { Val = D.SchemeColorValues.PhColor }) { Position = 0 }, new D.GradientStop(new D.SchemeColor(new D.Tint() { Val = 37000 }, new D.SaturationModulation() { Val = 300000 }) { Val = D.SchemeColorValues.PhColor }) { Position = 35000 }, new D.GradientStop(new D.SchemeColor(new D.Tint() { Val = 15000 }, new D.SaturationModulation() { Val = 350000 }) { Val = D.SchemeColorValues.PhColor }) { Position = 100000 } ), new D.LinearGradientFill() { Angle = 16200000, Scaled = true }), new D.NoFill(), new D.PatternFill(), new D.GroupFill()), new D.LineStyleList( new D.Outline( new D.SolidFill( new D.SchemeColor( new D.Shade() { Val = 95000 }, new D.SaturationModulation() { Val = 105000 }) { Val = D.SchemeColorValues.PhColor }), new D.PresetDash() { Val = D.PresetLineDashValues.Solid }) { Width = 9525, CapType = D.LineCapValues.Flat, CompoundLineType = D.CompoundLineValues.Single, Alignment = D.PenAlignmentValues.Center }, new D.Outline( new D.SolidFill( new D.SchemeColor( new D.Shade() { Val = 95000 }, new D.SaturationModulation() { Val = 105000 }) { Val = D.SchemeColorValues.PhColor }), new D.PresetDash() { Val = D.PresetLineDashValues.Solid }) { Width = 9525, CapType = D.LineCapValues.Flat, CompoundLineType = D.CompoundLineValues.Single, Alignment = D.PenAlignmentValues.Center }, new D.Outline( new D.SolidFill( new D.SchemeColor( new D.Shade() { Val = 95000 }, new D.SaturationModulation() { Val = 105000 }) { Val = D.SchemeColorValues.PhColor }), new D.PresetDash() { Val = D.PresetLineDashValues.Solid }) { Width = 9525, CapType = D.LineCapValues.Flat, CompoundLineType = D.CompoundLineValues.Single, Alignment = D.PenAlignmentValues.Center }), new D.EffectStyleList( new D.EffectStyle( new D.EffectList( new D.OuterShadow( new D.RgbColorModelHex( new D.Alpha() { Val = 38000 }) { Val = "000000" }) { BlurRadius = 40000L, Distance = 20000L, Direction = 5400000, RotateWithShape = false })), new D.EffectStyle( new D.EffectList( new D.OuterShadow( new D.RgbColorModelHex( new D.Alpha() { Val = 38000 }) { Val = "000000" }) { BlurRadius = 40000L, Distance = 20000L, Direction = 5400000, RotateWithShape = false })), new D.EffectStyle( new D.EffectList( new D.OuterShadow( new D.RgbColorModelHex( new D.Alpha() { Val = 38000 }) { Val = "000000" }) { BlurRadius = 40000L, Distance = 20000L, Direction = 5400000, RotateWithShape = false }))), new D.BackgroundFillStyleList( new D.SolidFill(new D.SchemeColor() { Val = D.SchemeColorValues.PhColor }), new D.GradientFill( new D.GradientStopList( new D.GradientStop( new D.SchemeColor(new D.Tint() { Val = 50000 }, new D.SaturationModulation() { Val = 300000 }) { Val = D.SchemeColorValues.PhColor }) { Position = 0 }, new D.GradientStop( new D.SchemeColor(new D.Tint() { Val = 50000 }, new D.SaturationModulation() { Val = 300000 }) { Val = D.SchemeColorValues.PhColor }) { Position = 0 }, new D.GradientStop( new D.SchemeColor(new D.Tint() { Val = 50000 }, new D.SaturationModulation() { Val = 300000 }) { Val = D.SchemeColorValues.PhColor }) { Position = 0 }), new D.LinearGradientFill() { Angle = 16200000, Scaled = true }), new D.GradientFill( new D.GradientStopList( new D.GradientStop( new D.SchemeColor(new D.Tint() { Val = 50000 }, new D.SaturationModulation() { Val = 300000 }) { Val = D.SchemeColorValues.PhColor }) { Position = 0 }, new D.GradientStop( new D.SchemeColor(new D.Tint() { Val = 50000 }, new D.SaturationModulation() { Val = 300000 }) { Val = D.SchemeColorValues.PhColor }) { Position = 0 }), new D.LinearGradientFill() { Angle = 16200000, Scaled = true }))) { Name = "Office" }); theme1.Append(themeElements1); theme1.Append(new D.ObjectDefaults()); theme1.Append(new D.ExtraColorSchemeList()); themePart1.Theme = theme1; return(themePart1); }
public PresentationDocument InsertSlidesFromTemplate(PresentationDocument target, PresentationDocument template, IList <string> slideRelationshipIdList) { if (target == null) { throw new ArgumentNullException("target"); } if (template == null) { throw new ArgumentNullException("template"); } uint maxSlideId = 256; var slideIdList = target.PresentationPart.Presentation.SlideIdList; var presentationPart = target.PresentationPart; //Find the highest slide ID in the current list. foreach (SlideId slideId in slideIdList.ChildElements) { if (slideId.Id.Value > maxSlideId) { maxSlideId = slideId.Id; } } presentationPart.Presentation.SlideMasterIdList.RemoveAllChildren(); uint uniqueId = GetMaxIdFromChild(presentationPart.Presentation.SlideMasterIdList); //check what if relationshipids repeat? foreach (string slideRelationshipId in slideRelationshipIdList) { maxSlideId++; uniqueId++; //Create the slide part and copy the data from the first part var templateSlide = (SlidePart)template.PresentationPart.GetPartById(slideRelationshipId); var newIdFromTemplateId = string.Format("source{0}", slideRelationshipId); SlidePart newSlidePart = presentationPart.AddPart(templateSlide, newIdFromTemplateId); if (newSlidePart.SlideLayoutPart != null) { SlideMasterPart destMasterPart = newSlidePart.SlideLayoutPart.SlideMasterPart; presentationPart.AddPart(destMasterPart); SlideMasterId newSlideMasterId = new SlideMasterId(); newSlideMasterId.RelationshipId = presentationPart.GetIdOfPart(destMasterPart); newSlideMasterId.Id = uniqueId; presentationPart.Presentation.SlideMasterIdList.Append(newSlideMasterId); } //Insert the new slide into the slide list. SlideId newSlideId = slideIdList.AppendChild(new SlideId()); //Set the slide id and relationship id newSlideId.Id = maxSlideId; newSlideId.RelationshipId = presentationPart.GetIdOfPart(newSlidePart); } FixSlideLayoutIds(presentationPart, uniqueId); //after adding OPEN XML SDK 3.0 this fix no longer needed but removes validation errors //PresentationMLUtil.FixUpPresentationDocument(target); target.PresentationPart.Presentation.Save(); return(target); }
private static void AddSlideMasterToSlideMasterIdList(PresentationPart presentationPart, SlideMasterPart slideMasterPart) { Presentation presentation = presentationPart.Presentation; SlideMasterIdList slideMasterIdList = presentationPart.Presentation.SlideMasterIdList; slideMasterIdList.AppendChild(new SlideMasterId() { Id = slideMasterIdList.Elements <SlideMasterId>().Select(sm => sm.Id.Value).DefaultIfEmpty(2147483647u).Max() + 1, RelationshipId = presentationPart.GetIdOfPart(slideMasterPart) }); presentation.Save(presentationPart); }
// Apply a new theme to the presentation. public static void ApplyThemeToPresentation(PresentationDocument presentationDocument, PresentationDocument themeDocument) { if (presentationDocument == null) { throw new ArgumentNullException("presentationDocument"); } if (themeDocument == null) { throw new ArgumentNullException("themeDocument"); } // Get the presentation part of the presentation document. PresentationPart presentationPart = presentationDocument.PresentationPart; // Get the existing slide master part. SlideMasterPart slideMasterPart = presentationPart.SlideMasterParts.ElementAt(0); string relationshipId = presentationPart.GetIdOfPart(slideMasterPart); // Get the new slide master part. SlideMasterPart newSlideMasterPart = themeDocument.PresentationPart.SlideMasterParts.ElementAt(0); // Remove the existing theme part. presentationPart.DeletePart(presentationPart.ThemePart); // Remove the old slide master part. presentationPart.DeletePart(slideMasterPart); // Import the new slide master part, and reuse the old relationship ID. newSlideMasterPart = presentationPart.AddPart(newSlideMasterPart, relationshipId); // Change to the new theme part. presentationPart.AddPart(newSlideMasterPart.ThemePart); Dictionary <string, SlideLayoutPart> newSlideLayouts = new Dictionary <string, SlideLayoutPart>(); foreach (var slideLayoutPart in newSlideMasterPart.SlideLayoutParts) { newSlideLayouts.Add(GetSlideLayoutType(slideLayoutPart), slideLayoutPart); } string layoutType = null; SlideLayoutPart newLayoutPart = null; // Insert the code for the layout for this example. string defaultLayoutType = "Title and Content"; // Remove the slide layout relationship on all slides. foreach (var slidePart in presentationPart.SlideParts) { layoutType = null; if (slidePart.SlideLayoutPart != null) { // Determine the slide layout type for each slide. layoutType = GetSlideLayoutType(slidePart.SlideLayoutPart); // Delete the old layout part. slidePart.DeletePart(slidePart.SlideLayoutPart); } if (layoutType != null && newSlideLayouts.TryGetValue(layoutType, out newLayoutPart)) { // Apply the new layout part. slidePart.AddPart(newLayoutPart); } else { newLayoutPart = newSlideLayouts[defaultLayoutType]; // Apply the new default layout part. slidePart.AddPart(newLayoutPart); } } }
public MasterMapping(ConversionContext ctx) : base(ctx, ctx.Pptx.PresentationPart.AddSlideMasterPart()) { this.MasterPart = (SlideMasterPart)this.targetPart; }
public OpenXmlSlideMaster(IOpenXmlPresentation presentation, SlideMasterPart slideMasterPart) { this.presentation = presentation; this.slideMasterPart = slideMasterPart; }