- Better-EN5 插件:基于官方示例,注册3个右键菜单项 - Manager 管理器:横版5标签布局,深色主题 WPF 应用 - 自定义 Fluent 安装器:无边框窗口,圆角,淡入淡出动画 - 删除旧代码,移除 SDK 自动安装器 - 三个项目全部编译通过(0 错误)
67 lines
2.8 KiB
C#
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)))));
|
|
}
|