/// <summary> /// Removes the specified slide. /// </summary> public void Remove(ISlide removingSlide) { P.Presentation presentation = this.presentationPart.Presentation; // Get the list of slide identifiers in the presentation P.SlideIdList slideIdList = presentation.SlideIdList; // Get the slide identifier of the specified slide P.SlideId slideId = (P.SlideId)slideIdList.ChildElements[removingSlide.Number - 1]; // Gets the relationship identifier of the slide string slideRelId = slideId.RelationshipId; // Remove the slide from the slide list slideIdList.RemoveChild(slideId); // Remove references to the slide from all custom shows if (presentation.CustomShowList != null) { // Iterate through the list of custom shows foreach (var customShow in presentation.CustomShowList.Elements <P.CustomShow>()) { if (customShow.SlideList == null) { continue; } // declares a link list of slide list entries var slideListEntries = new LinkedList <P.SlideListEntry>(); foreach (P.SlideListEntry slideListEntry in customShow.SlideList.Elements()) { // finds the slide reference to remove from the custom show if (slideListEntry.Id != null && slideListEntry.Id == slideRelId) { slideListEntries.AddLast(slideListEntry); } } // Removes all references to the slide from the custom show foreach (P.SlideListEntry slideListEntry in slideListEntries) { customShow.SlideList.RemoveChild(slideListEntry); } } } // Gets the slide part for the specified slide SlidePart slidePart = this.presentationPart.GetPartById(slideRelId) as SlidePart; this.presentationPart.DeletePart(slidePart); this.presentationPart.Presentation.Save(); this.slides.Reset(); }
public static void AppendSlide(this PresentationPart presentationPart, SlidePart newSlidePart) { SlideIdList slideIdList = presentationPart.Presentation.SlideIdList; // find the highest id uint maxSlideId = slideIdList.ChildElements.Cast<SlideId>().Max(x => x.Id.Value); // Insert the new slide into the slide list after the previous slide. var id = maxSlideId + 1; SlideId newSlideId = new SlideId(); slideIdList.Append(newSlideId); newSlideId.Id = id; newSlideId.RelationshipId = presentationPart.GetIdOfPart(newSlidePart); }
public static void AppendSlide(this PresentationPart presentationPart, SlidePart newSlidePart) { Repository.Utility.WriteLog("AppendSlide started", System.Diagnostics.EventLogEntryType.Information); SlideIdList slideIdList = presentationPart.Presentation.SlideIdList; // find the highest id uint maxSlideId = slideIdList.ChildElements.Cast<SlideId>().Max(x => x.Id.Value); // Insert the new slide into the slide list after the previous slide. var id = maxSlideId + 1; SlideId newSlideId = new SlideId(); slideIdList.Append(newSlideId); newSlideId.Id = id; newSlideId.RelationshipId = presentationPart.GetIdOfPart(newSlidePart); Repository.Utility.WriteLog("AppendSlide completed successfully", System.Diagnostics.EventLogEntryType.Information); }
void CreateSlides(List<string> imageFileNames, string newPresentation) { string relId; SlideId slideId; // Slide identifiers have a minimum value of greater than or equal to 256 // and a maximum value of less than 2147483648. Assume that the template // presentation being used has no slides. uint currentSlideId = 256; string imageFileNameNoPath; long imageWidthEMU = 0; long imageHeightEMU = 0; // Open the new presentation. using (PresentationDocument newDeck = PresentationDocument.Open(newPresentation, true)) { PresentationPart presentationPart = newDeck.PresentationPart; // Reuse the slide master part. This code assumes that the template presentation // being used has at least one master slide. var slideMasterPart = presentationPart.SlideMasterParts.First(); // Reuse the slide layout part. This code assumes that the template presentation // being used has at least one slide layout. var slideLayoutPart = slideMasterPart.SlideLayoutParts.First(); // If the new presentation doesn't have a SlideIdList element yet then add it. if (presentationPart.Presentation.SlideIdList == null) presentationPart.Presentation.SlideIdList = new SlideIdList(); // Loop through each image file creating slides in the new presentation. foreach (string imageFileNameWithPath in imageFileNames) { if (Step != null) Step(); imageFileNameNoPath = Path.GetFileNameWithoutExtension(imageFileNameWithPath); // Create a unique relationship id based on the current slide id. relId = "rel" + currentSlideId; // Get the bytes, type and size of the image. ImagePartType imagePartType = ImagePartType.Png; byte[] imageBytes = GetImageData(imageFileNameWithPath, ref imagePartType, ref imageWidthEMU, ref imageHeightEMU); // Create a slide part for the new slide. var slidePart = presentationPart.AddNewPart<SlidePart>(relId); GenerateSlidePart(imageFileNameNoPath, imageFileNameNoPath, imageWidthEMU, imageHeightEMU).Save(slidePart); // Add the relationship between the slide and the slide layout. slidePart.AddPart<SlideLayoutPart>(slideLayoutPart); // Create an image part for the image used by the new slide. // A hardcoded relationship id is used for the image part since // there is only one image per slide. If more than one image // was being added to the slide an approach similar to that // used above for the slide part relationship id could be // followed, where the image part relationship id could be // incremented for each image part. var imagePart = slidePart.AddImagePart(imagePartType, "relId1"); GenerateImagePart(imagePart, imageBytes); // Add the new slide to the slide list. slideId = new SlideId(); slideId.RelationshipId = relId; slideId.Id = currentSlideId; presentationPart.Presentation.SlideIdList.Append(slideId); // Increment the slide id; currentSlideId++; } // Save the changes to the slide master part. slideMasterPart.SlideMaster.Save(); // Save the changes to the new deck. presentationPart.Presentation.Save(); } }
// Generates content of presentationPart1. private void GeneratePresentationPart1Content(PresentationPart presentationPart1) { P.Presentation presentation1 = new P.Presentation(){ SaveSubsetFonts = true }; presentation1.AddNamespaceDeclaration("a", "http://schemas.openxmlformats.org/drawingml/2006/main"); presentation1.AddNamespaceDeclaration("r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships"); presentation1.AddNamespaceDeclaration("p", "http://schemas.openxmlformats.org/presentationml/2006/main"); SlideMasterIdList slideMasterIdList1 = new SlideMasterIdList(); SlideMasterId slideMasterId1 = new SlideMasterId(){ Id = (UInt32Value)2147483648U, RelationshipId = "rId1" }; slideMasterIdList1.Append(slideMasterId1); NotesMasterIdList notesMasterIdList1 = new NotesMasterIdList(); NotesMasterId notesMasterId1 = new NotesMasterId(){ Id = "rId3" }; notesMasterIdList1.Append(notesMasterId1); SlideIdList slideIdList1 = new SlideIdList(); SlideId slideId1 = new SlideId(){ Id = (UInt32Value)256U, RelationshipId = "rId2" }; slideIdList1.Append(slideId1); SlideSize slideSize1 = new SlideSize(){ Cx = 9144000, Cy = 6858000, Type = SlideSizeValues.Screen4x3 }; NotesSize notesSize1 = new NotesSize(){ Cx = 9144000L, Cy = 6858000L }; DefaultTextStyle defaultTextStyle1 = new DefaultTextStyle(); A.DefaultParagraphProperties defaultParagraphProperties1 = new A.DefaultParagraphProperties(); A.DefaultRunProperties defaultRunProperties1 = new A.DefaultRunProperties(){ Language = "en-US" }; defaultParagraphProperties1.Append(defaultRunProperties1); A.Level1ParagraphProperties level1ParagraphProperties1 = new A.Level1ParagraphProperties(){ LeftMargin = 0, Alignment = A.TextAlignmentTypeValues.Left, DefaultTabSize = 914400, RightToLeft = false, EastAsianLineBreak = true, LatinLineBreak = false, Height = true }; A.DefaultRunProperties defaultRunProperties2 = new A.DefaultRunProperties(){ FontSize = 1800, Kerning = 1200 }; A.SolidFill solidFill1 = new A.SolidFill(); A.SchemeColor schemeColor1 = new A.SchemeColor(){ Val = A.SchemeColorValues.Text1 }; solidFill1.Append(schemeColor1); A.LatinFont latinFont1 = new A.LatinFont(){ Typeface = "+mn-lt" }; A.EastAsianFont eastAsianFont1 = new A.EastAsianFont(){ Typeface = "+mn-ea" }; A.ComplexScriptFont complexScriptFont1 = new A.ComplexScriptFont(){ Typeface = "+mn-cs" }; defaultRunProperties2.Append(solidFill1); defaultRunProperties2.Append(latinFont1); defaultRunProperties2.Append(eastAsianFont1); defaultRunProperties2.Append(complexScriptFont1); level1ParagraphProperties1.Append(defaultRunProperties2); A.Level2ParagraphProperties level2ParagraphProperties1 = new A.Level2ParagraphProperties(){ LeftMargin = 457200, Alignment = A.TextAlignmentTypeValues.Left, DefaultTabSize = 914400, RightToLeft = false, EastAsianLineBreak = true, LatinLineBreak = false, Height = true }; A.DefaultRunProperties defaultRunProperties3 = new A.DefaultRunProperties(){ FontSize = 1800, Kerning = 1200 }; A.SolidFill solidFill2 = new A.SolidFill(); A.SchemeColor schemeColor2 = new A.SchemeColor(){ Val = A.SchemeColorValues.Text1 }; solidFill2.Append(schemeColor2); A.LatinFont latinFont2 = new A.LatinFont(){ Typeface = "+mn-lt" }; A.EastAsianFont eastAsianFont2 = new A.EastAsianFont(){ Typeface = "+mn-ea" }; A.ComplexScriptFont complexScriptFont2 = new A.ComplexScriptFont(){ Typeface = "+mn-cs" }; defaultRunProperties3.Append(solidFill2); defaultRunProperties3.Append(latinFont2); defaultRunProperties3.Append(eastAsianFont2); defaultRunProperties3.Append(complexScriptFont2); level2ParagraphProperties1.Append(defaultRunProperties3); A.Level3ParagraphProperties level3ParagraphProperties1 = new A.Level3ParagraphProperties(){ LeftMargin = 914400, Alignment = A.TextAlignmentTypeValues.Left, DefaultTabSize = 914400, RightToLeft = false, EastAsianLineBreak = true, LatinLineBreak = false, Height = true }; A.DefaultRunProperties defaultRunProperties4 = new A.DefaultRunProperties(){ FontSize = 1800, Kerning = 1200 }; A.SolidFill solidFill3 = new A.SolidFill(); A.SchemeColor schemeColor3 = new A.SchemeColor(){ Val = A.SchemeColorValues.Text1 }; solidFill3.Append(schemeColor3); A.LatinFont latinFont3 = new A.LatinFont(){ Typeface = "+mn-lt" }; A.EastAsianFont eastAsianFont3 = new A.EastAsianFont(){ Typeface = "+mn-ea" }; A.ComplexScriptFont complexScriptFont3 = new A.ComplexScriptFont(){ Typeface = "+mn-cs" }; defaultRunProperties4.Append(solidFill3); defaultRunProperties4.Append(latinFont3); defaultRunProperties4.Append(eastAsianFont3); defaultRunProperties4.Append(complexScriptFont3); level3ParagraphProperties1.Append(defaultRunProperties4); A.Level4ParagraphProperties level4ParagraphProperties1 = new A.Level4ParagraphProperties(){ LeftMargin = 1371600, Alignment = A.TextAlignmentTypeValues.Left, DefaultTabSize = 914400, RightToLeft = false, EastAsianLineBreak = true, LatinLineBreak = false, Height = true }; A.DefaultRunProperties defaultRunProperties5 = new A.DefaultRunProperties(){ FontSize = 1800, Kerning = 1200 }; A.SolidFill solidFill4 = new A.SolidFill(); A.SchemeColor schemeColor4 = new A.SchemeColor(){ Val = A.SchemeColorValues.Text1 }; solidFill4.Append(schemeColor4); A.LatinFont latinFont4 = new A.LatinFont(){ Typeface = "+mn-lt" }; A.EastAsianFont eastAsianFont4 = new A.EastAsianFont(){ Typeface = "+mn-ea" }; A.ComplexScriptFont complexScriptFont4 = new A.ComplexScriptFont(){ Typeface = "+mn-cs" }; defaultRunProperties5.Append(solidFill4); defaultRunProperties5.Append(latinFont4); defaultRunProperties5.Append(eastAsianFont4); defaultRunProperties5.Append(complexScriptFont4); level4ParagraphProperties1.Append(defaultRunProperties5); A.Level5ParagraphProperties level5ParagraphProperties1 = new A.Level5ParagraphProperties(){ LeftMargin = 1828800, Alignment = A.TextAlignmentTypeValues.Left, DefaultTabSize = 914400, RightToLeft = false, EastAsianLineBreak = true, LatinLineBreak = false, Height = true }; A.DefaultRunProperties defaultRunProperties6 = new A.DefaultRunProperties(){ FontSize = 1800, Kerning = 1200 }; A.SolidFill solidFill5 = new A.SolidFill(); A.SchemeColor schemeColor5 = new A.SchemeColor(){ Val = A.SchemeColorValues.Text1 }; solidFill5.Append(schemeColor5); A.LatinFont latinFont5 = new A.LatinFont(){ Typeface = "+mn-lt" }; A.EastAsianFont eastAsianFont5 = new A.EastAsianFont(){ Typeface = "+mn-ea" }; A.ComplexScriptFont complexScriptFont5 = new A.ComplexScriptFont(){ Typeface = "+mn-cs" }; defaultRunProperties6.Append(solidFill5); defaultRunProperties6.Append(latinFont5); defaultRunProperties6.Append(eastAsianFont5); defaultRunProperties6.Append(complexScriptFont5); level5ParagraphProperties1.Append(defaultRunProperties6); A.Level6ParagraphProperties level6ParagraphProperties1 = new A.Level6ParagraphProperties(){ LeftMargin = 2286000, Alignment = A.TextAlignmentTypeValues.Left, DefaultTabSize = 914400, RightToLeft = false, EastAsianLineBreak = true, LatinLineBreak = false, Height = true }; A.DefaultRunProperties defaultRunProperties7 = new A.DefaultRunProperties(){ FontSize = 1800, Kerning = 1200 }; A.SolidFill solidFill6 = new A.SolidFill(); A.SchemeColor schemeColor6 = new A.SchemeColor(){ Val = A.SchemeColorValues.Text1 }; solidFill6.Append(schemeColor6); A.LatinFont latinFont6 = new A.LatinFont(){ Typeface = "+mn-lt" }; A.EastAsianFont eastAsianFont6 = new A.EastAsianFont(){ Typeface = "+mn-ea" }; A.ComplexScriptFont complexScriptFont6 = new A.ComplexScriptFont(){ Typeface = "+mn-cs" }; defaultRunProperties7.Append(solidFill6); defaultRunProperties7.Append(latinFont6); defaultRunProperties7.Append(eastAsianFont6); defaultRunProperties7.Append(complexScriptFont6); level6ParagraphProperties1.Append(defaultRunProperties7); A.Level7ParagraphProperties level7ParagraphProperties1 = new A.Level7ParagraphProperties(){ LeftMargin = 2743200, Alignment = A.TextAlignmentTypeValues.Left, DefaultTabSize = 914400, RightToLeft = false, EastAsianLineBreak = true, LatinLineBreak = false, Height = true }; A.DefaultRunProperties defaultRunProperties8 = new A.DefaultRunProperties(){ FontSize = 1800, Kerning = 1200 }; A.SolidFill solidFill7 = new A.SolidFill(); A.SchemeColor schemeColor7 = new A.SchemeColor(){ Val = A.SchemeColorValues.Text1 }; solidFill7.Append(schemeColor7); A.LatinFont latinFont7 = new A.LatinFont(){ Typeface = "+mn-lt" }; A.EastAsianFont eastAsianFont7 = new A.EastAsianFont(){ Typeface = "+mn-ea" }; A.ComplexScriptFont complexScriptFont7 = new A.ComplexScriptFont(){ Typeface = "+mn-cs" }; defaultRunProperties8.Append(solidFill7); defaultRunProperties8.Append(latinFont7); defaultRunProperties8.Append(eastAsianFont7); defaultRunProperties8.Append(complexScriptFont7); level7ParagraphProperties1.Append(defaultRunProperties8); A.Level8ParagraphProperties level8ParagraphProperties1 = new A.Level8ParagraphProperties(){ LeftMargin = 3200400, Alignment = A.TextAlignmentTypeValues.Left, DefaultTabSize = 914400, RightToLeft = false, EastAsianLineBreak = true, LatinLineBreak = false, Height = true }; A.DefaultRunProperties defaultRunProperties9 = new A.DefaultRunProperties(){ FontSize = 1800, Kerning = 1200 }; A.SolidFill solidFill8 = new A.SolidFill(); A.SchemeColor schemeColor8 = new A.SchemeColor(){ Val = A.SchemeColorValues.Text1 }; solidFill8.Append(schemeColor8); A.LatinFont latinFont8 = new A.LatinFont(){ Typeface = "+mn-lt" }; A.EastAsianFont eastAsianFont8 = new A.EastAsianFont(){ Typeface = "+mn-ea" }; A.ComplexScriptFont complexScriptFont8 = new A.ComplexScriptFont(){ Typeface = "+mn-cs" }; defaultRunProperties9.Append(solidFill8); defaultRunProperties9.Append(latinFont8); defaultRunProperties9.Append(eastAsianFont8); defaultRunProperties9.Append(complexScriptFont8); level8ParagraphProperties1.Append(defaultRunProperties9); A.Level9ParagraphProperties level9ParagraphProperties1 = new A.Level9ParagraphProperties(){ LeftMargin = 3657600, Alignment = A.TextAlignmentTypeValues.Left, DefaultTabSize = 914400, RightToLeft = false, EastAsianLineBreak = true, LatinLineBreak = false, Height = true }; A.DefaultRunProperties defaultRunProperties10 = new A.DefaultRunProperties(){ FontSize = 1800, Kerning = 1200 }; A.SolidFill solidFill9 = new A.SolidFill(); A.SchemeColor schemeColor9 = new A.SchemeColor(){ Val = A.SchemeColorValues.Text1 }; solidFill9.Append(schemeColor9); A.LatinFont latinFont9 = new A.LatinFont(){ Typeface = "+mn-lt" }; A.EastAsianFont eastAsianFont9 = new A.EastAsianFont(){ Typeface = "+mn-ea" }; A.ComplexScriptFont complexScriptFont9 = new A.ComplexScriptFont(){ Typeface = "+mn-cs" }; defaultRunProperties10.Append(solidFill9); defaultRunProperties10.Append(latinFont9); defaultRunProperties10.Append(eastAsianFont9); defaultRunProperties10.Append(complexScriptFont9); level9ParagraphProperties1.Append(defaultRunProperties10); defaultTextStyle1.Append(defaultParagraphProperties1); defaultTextStyle1.Append(level1ParagraphProperties1); defaultTextStyle1.Append(level2ParagraphProperties1); defaultTextStyle1.Append(level3ParagraphProperties1); defaultTextStyle1.Append(level4ParagraphProperties1); defaultTextStyle1.Append(level5ParagraphProperties1); defaultTextStyle1.Append(level6ParagraphProperties1); defaultTextStyle1.Append(level7ParagraphProperties1); defaultTextStyle1.Append(level8ParagraphProperties1); defaultTextStyle1.Append(level9ParagraphProperties1); PresentationExtensionList presentationExtensionList1 = new PresentationExtensionList(); PresentationExtension presentationExtension1 = new PresentationExtension(){ Uri = "{EFAFB233-063F-42B5-8137-9DF3F51BA10A}" }; P15.SlideGuideList slideGuideList1 = new P15.SlideGuideList(); slideGuideList1.AddNamespaceDeclaration("p15", "http://schemas.microsoft.com/office/powerpoint/2012/main"); P15.ExtendedGuide extendedGuide1 = new P15.ExtendedGuide(){ Id = (UInt32Value)1U, Orientation = DirectionValues.Horizontal, Position = 2160 }; P15.ColorType colorType1 = new P15.ColorType(); A.RgbColorModelHex rgbColorModelHex1 = new A.RgbColorModelHex(){ Val = "A4A3A4" }; colorType1.Append(rgbColorModelHex1); extendedGuide1.Append(colorType1); P15.ExtendedGuide extendedGuide2 = new P15.ExtendedGuide(){ Id = (UInt32Value)2U, Position = 2880 }; P15.ColorType colorType2 = new P15.ColorType(); A.RgbColorModelHex rgbColorModelHex2 = new A.RgbColorModelHex(){ Val = "A4A3A4" }; colorType2.Append(rgbColorModelHex2); extendedGuide2.Append(colorType2); slideGuideList1.Append(extendedGuide1); slideGuideList1.Append(extendedGuide2); presentationExtension1.Append(slideGuideList1); PresentationExtension presentationExtension2 = new PresentationExtension(){ Uri = "{2D200454-40CA-4A62-9FC3-DE9A4176ACB9}" }; P15.NotesGuideList notesGuideList1 = new P15.NotesGuideList(); notesGuideList1.AddNamespaceDeclaration("p15", "http://schemas.microsoft.com/office/powerpoint/2012/main"); P15.ExtendedGuide extendedGuide3 = new P15.ExtendedGuide(){ Id = (UInt32Value)1U, Orientation = DirectionValues.Horizontal, Position = 2160 }; P15.ColorType colorType3 = new P15.ColorType(); A.RgbColorModelHex rgbColorModelHex3 = new A.RgbColorModelHex(){ Val = "A4A3A4" }; colorType3.Append(rgbColorModelHex3); extendedGuide3.Append(colorType3); P15.ExtendedGuide extendedGuide4 = new P15.ExtendedGuide(){ Id = (UInt32Value)2U, Position = 2880 }; P15.ColorType colorType4 = new P15.ColorType(); A.RgbColorModelHex rgbColorModelHex4 = new A.RgbColorModelHex(){ Val = "A4A3A4" }; colorType4.Append(rgbColorModelHex4); extendedGuide4.Append(colorType4); notesGuideList1.Append(extendedGuide3); notesGuideList1.Append(extendedGuide4); presentationExtension2.Append(notesGuideList1); presentationExtensionList1.Append(presentationExtension1); presentationExtensionList1.Append(presentationExtension2); presentation1.Append(slideMasterIdList1); presentation1.Append(notesMasterIdList1); presentation1.Append(slideIdList1); presentation1.Append(slideSize1); presentation1.Append(notesSize1); presentation1.Append(defaultTextStyle1); presentation1.Append(presentationExtensionList1); presentationPart1.Presentation = presentation1; }
static void CreateSlides(List<string> imageFileNames, string newPresentation) { int id = 0; string relId; SlideId newSlideId; SlideLayoutId newSlideLayoutId; string imageFileNameNoPath; long imageWidthEMU = 0; long imageHeightEMU = 0; // Open the new presentation. using (PresentationDocument newDeck = PresentationDocument.Open(newPresentation, true)) { // Get the presentation part of the new deck. PresentationPart presentationPart = newDeck.PresentationPart; // Reuse the slide master. Otherwise, create a new slide master part and a new theme part. var slideMasterPart = presentationPart.SlideMasterParts.First(); // If the new presentation doesn't have a SlideIdList element yet then add it. if (presentationPart.Presentation.SlideIdList == null) presentationPart.Presentation.SlideIdList = new SlideIdList(); // If the slide master doesn't have a SlideLayoutIdList element yet then add it. if (slideMasterPart.SlideMaster.SlideLayoutIdList == null) slideMasterPart.SlideMaster.SlideLayoutIdList = new SlideLayoutIdList(); // Get a unique id for both the slide master id and slide layout id lists. uint uniqueId = GetMaxUniqueId(presentationPart); // Get a unique id for the slide id list. uint maxSlideId = GetMaxSlideId(presentationPart.Presentation.SlideIdList); // Loop through each file in the image folder creating slides in the new presentation. foreach (string imageFileNameWithPath in imageFileNames) { imageFileNameNoPath = Path.GetFileNameWithoutExtension(imageFileNameWithPath); // Create a unique relationship id based on the name of the image file. id++; relId = imageFileNameNoPath.Replace(" ", "") + id; // Get the bytes and size of the image. byte[] imageBytes = GetImageData(imageFileNameWithPath, ref imageWidthEMU, ref imageHeightEMU); // Create the new slide part. var slidePart = presentationPart.AddNewPart<SlidePart>(relId); GenerateSlidePart(relId, imageFileNameNoPath, imageFileNameNoPath, imageWidthEMU, imageHeightEMU).Save(slidePart); var imagePart = slidePart.AddImagePart(ImagePartType.Jpeg, relId); GenerateImagePart(imagePart, imageBytes); //slidePart.AddPart(slideLayoutPart); var slideLayoutPart = slidePart.AddNewPart<SlideLayoutPart>(); GenerateSlideLayoutPart().Save(slideLayoutPart); slideMasterPart.AddPart(slideLayoutPart); slideLayoutPart.AddPart(slideMasterPart); // Add new slide layout into the list in slideMasterPart uniqueId++; newSlideLayoutId = new SlideLayoutId(); newSlideLayoutId.RelationshipId = slideMasterPart.GetIdOfPart(slideLayoutPart); newSlideLayoutId.Id = uniqueId; slideMasterPart.SlideMaster.SlideLayoutIdList.Append(newSlideLayoutId); // Add slide to slide list. maxSlideId++; newSlideId = new SlideId(); newSlideId.RelationshipId = relId; newSlideId.Id = maxSlideId; presentationPart.Presentation.SlideIdList.Append(newSlideId); } slideMasterPart.SlideMaster.Save(); // Make sure all slide ids are unique. // FixSlideLayoutIds(presentationPart); // Save the changes to the new deck. presentationPart.Presentation.Save(); } }