using System; using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Presentation; using D = DocumentFormat.OpenXml.Drawing; var outputPath = @"C:\Users\Administrator\Desktop\test_slides.pptx"; using var presentation = PresentationDocument.Create(outputPath, PresentationDocumentType.Presentation); var presPart = presentation.AddPresentationPart(); presPart.Presentation = new Presentation(); var slideIdList = new SlideIdList(); presPart.Presentation.SlideIdList = slideIdList; presPart.Presentation.SlideSize = new SlideSize { Cx = 12192000, Cy = 6858000 }; var slideMasterPart = presPart.AddNewPart(); var slideLayoutPart = slideMasterPart.AddNewPart(); slideLayoutPart.SlideLayout = new SlideLayout(new CommonSlideData(new ShapeTree())); slideLayoutPart.SlideLayout.Save(); slideMasterPart.SlideMaster = new SlideMaster( new CommonSlideData(new ShapeTree()), new SlideLayoutIdList(new SlideLayoutId { RelationshipId = slideMasterPart.GetIdOfPart(slideLayoutPart) })); slideMasterPart.SlideMaster.Save(); // Slide 1 var slidePart1 = presPart.AddNewPart(); slidePart1.Slide = new Slide(new CommonSlideData(new ShapeTree( MakeTextShape(1, "Title", 500000, 500000, 10000000, 800000, 4400, true, "Hello, Better-Seewo!"), MakeTextShape(2, "Subtitle", 500000, 2000000, 10000000, 600000, 2800, false, "PPTX to ENBX conversion test")))); slidePart1.Slide.Save(); slideIdList.Append(new SlideId { Id = 256, RelationshipId = presPart.GetIdOfPart(slidePart1) }); // Slide 2 var slidePart2 = presPart.AddNewPart(); slidePart2.Slide = new Slide(new CommonSlideData(new ShapeTree( MakeTextShape(1, "Title", 500000, 500000, 10000000, 800000, 3600, true, "Slide 2"), MakeTextShape(2, "Body", 500000, 2000000, 10000000, 1000000, 2200, false, "Second slide with more content")))); slidePart2.Slide.Save(); slideIdList.Append(new SlideId { Id = 257, RelationshipId = presPart.GetIdOfPart(slidePart2) }); presPart.Presentation.Save(); Console.WriteLine($"Created: {outputPath}"); static Shape MakeTextShape(uint id, string name, long x, long y, long cx, long cy, int fontSize, bool bold, string text) { return new Shape( new NonVisualShapeProperties( new NonVisualDrawingProperties { Id = id, Name = name }, new NonVisualShapeDrawingProperties()), new ShapeProperties( new D.Transform2D( new D.Offset { X = x, Y = y }, new D.Extents { Cx = cx, Cy = cy })), new TextBody( new D.BodyProperties(), new D.ListStyle(), new D.Paragraph( new D.Run( new D.RunProperties { FontSize = fontSize, Bold = bold }, new D.Text(text))))); }