Files
Better-Seewo/CreateTestPptx/Program.cs
雾启工作室 fb7b924c0d feat: 从零重建项目架构
- Better-EN5 插件:基于官方示例,注册3个右键菜单项
- Manager 管理器:横版5标签布局,深色主题 WPF 应用
- 自定义 Fluent 安装器:无边框窗口,圆角,淡入淡出动画
- 删除旧代码,移除 SDK 自动安装器
- 三个项目全部编译通过(0 错误)
2026-06-28 12:40:10 +08:00

67 lines
2.8 KiB
C#

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<SlideMasterPart>();
var slideLayoutPart = slideMasterPart.AddNewPart<SlideLayoutPart>();
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<SlidePart>();
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<SlidePart>();
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)))));
}