public PreSettings(P.Presentation sdkPresentation, Lazy <SlideSize> slideSize) { Check.NotNull(sdkPresentation, nameof(sdkPresentation)); SlideSize = slideSize ?? throw new ArgumentNullException(nameof(slideSize)); _lvlFontHeights = new Lazy <Dictionary <int, int> >(ParseFontHeights(sdkPresentation)); XlsxDocuments = new Dictionary <OpenXmlPart, SpreadsheetDocument>(); //TODO: make lazy initialization }
private int ReorderSlides(string fileName, int currentSlidePosition, int newPosition) { int returnValue = -1; if (newPosition == currentSlidePosition) { return(returnValue); } using (PresentationDocument doc = PresentationDocument.Open(fileName, true)) { PresentationPart presentationPart = doc.PresentationPart; if (presentationPart == null) { throw new ArgumentException("Presentation part not found."); } int slideCount = presentationPart.SlideParts.Count(); if (slideCount == 0) { return(returnValue); } int maxPosition = slideCount - 1; CalculatePositions(ref currentSlidePosition, ref newPosition, maxPosition); if (newPosition != currentSlidePosition) { DocumentFormat.OpenXml.Presentation.Presentation presentation = presentationPart.Presentation; SlideIdList slideIdList = presentation.SlideIdList; SlideId sourceSlide = (SlideId)(slideIdList.ChildElements[currentSlidePosition]); SlideId targetSlide = (SlideId)(slideIdList.ChildElements[newPosition]); sourceSlide.Remove(); if (newPosition > currentSlidePosition) { slideIdList.InsertAfter(sourceSlide, targetSlide); } else { slideIdList.InsertBefore(sourceSlide, targetSlide); } returnValue = newPosition; presentation.Save(); } } return(returnValue); }
/// <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(); }
private void RemoveFromDom(int number) { PresentationPart presentationPart = _sdkPre.PresentationPart; DocumentFormat.OpenXml.Presentation.Presentation presentation = presentationPart.Presentation; // gets the list of slide identifiers in the presentation SlideIdList slideIdList = presentation.SlideIdList; // gets the slide identifier of the specified slide SlideId slideId = (SlideId)slideIdList.ChildElements[number - 1]; // gets the relationship identifier of the slide string slideRelId = slideId.RelationshipId; // removes the slide from the slide list slideIdList.RemoveChild(slideId); // remove references to the slide from all custom shows if (presentation.CustomShowList != null) { // iterates through the list of custom shows foreach (var customShow in presentation.CustomShowList.Elements <CustomShow>()) { if (customShow.SlideList == null) { continue; } // declares a link list of slide list entries var slideListEntries = new LinkedList <SlideListEntry>(); foreach (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 (SlideListEntry slideListEntry in slideListEntries) { customShow.SlideList.RemoveChild(slideListEntry); } } } // gets the slide part for the specified slide SlidePart slidePart = presentationPart.GetPartById(slideRelId) as SlidePart; // removes the slide part presentationPart.DeletePart(slidePart); }
private static Dictionary <int, int> ParseFontHeights(P.Presentation xmlPresentation) { var lvlFontHeights = new Dictionary <int, int>(); // from presentation default text settings if (xmlPresentation.DefaultTextStyle != null) { lvlFontHeights = FontHeightParser.FromCompositeElement(xmlPresentation.DefaultTextStyle); } // from theme default text settings if (!lvlFontHeights.Any()) { var themeTextDefault = xmlPresentation.PresentationPart.ThemePart.Theme.ObjectDefaults.TextDefault; if (themeTextDefault != null) { lvlFontHeights = FontHeightParser.FromCompositeElement(themeTextDefault.ListStyle); } } return(lvlFontHeights); }
public PreSettings(P.Presentation xmlPresentation) { Check.NotNull(xmlPresentation, nameof(xmlPresentation)); _lvlFontHeights = new Lazy <Dictionary <int, int> >(ParseFontHeights(xmlPresentation)); }
// 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; }
public static void DeleteSlide(string presentationFile) { if (presentationFile == null) { throw new ArgumentNullException("presentationDocument"); } using (PresentationDocument presentationDocument = PresentationDocument.Open(presentationFile, true)) { // Get the presentation part from the presentation document. PresentationPart presentationPart = presentationDocument.PresentationPart; // Get the presentation from the presentation part. DocumentFormat.OpenXml.Presentation.Presentation presentation = presentationPart.Presentation; // Get the list of slide IDs in the presentation. SlideIdList slideIdList = presentation.SlideIdList; int slideIdx = -1; foreach (SlideId _slideId in presentation.SlideIdList) { slideIdx++; // Get the slide ID of the specified slide SlideId slideId = slideIdList.ChildElements[slideIdx] as SlideId; // Get the relationship ID of the slide. string slideRelId = slideId.RelationshipId; // Get the slide part for the specified slide. SlidePart slidePart = presentationPart.GetPartById(slideRelId) as SlidePart; if (slidePart.Slide.Show != null) { if (slidePart.Slide.Show.HasValue != null) { // 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 <CustomShow>()) { if (customShow.SlideList != null) { // Declare a link list of slide list entries. LinkedList <SlideListEntry> slideListEntries = new LinkedList <SlideListEntry>(); foreach (SlideListEntry slideListEntry in customShow.SlideList.Elements()) { // Find the slide reference to remove from the custom show. if (slideListEntry.Id != null && slideListEntry.Id == slideRelId) { slideListEntries.AddLast(slideListEntry); } } // Remove all references to the slide from the custom show. foreach (SlideListEntry slideListEntry in slideListEntries) { customShow.SlideList.RemoveChild(slideListEntry); } } } } // Save the modified presentation. presentation.Save(); // Remove the slide part. presentationPart.DeletePart(slidePart); break; } } } } }