.NET Core 使用 OpenXml 将 PPT 转换为 PDF
- 添加 OpenXml 引用
在项目中添加 OpenXml 引用,可以通过 NuGet 包管理器搜索 Microsoft.Office.Interop.OpenXml 或通过 Visual Studio 的'引用'菜单手动添加。
- 创建 PowerPoint 文档
使用 OpenXml 创建 PowerPoint 文档对象。例如:
var presentationDoc = PresentationDocument.Create('presentation.pptx', PresentationDocumentType.Presentation);
var presentationPart = presentationDoc.AddPresentationPart();
var slideMasterPart = presentationPart.AddNewPart<SlideMasterPart>();
var slideLayoutPart = slideMasterPart.AddNewPart<SlideLayoutPart>();
// 添加幻灯片
var slidePart = presentationPart.AddNewPart<SlidePart>();
var slideId = presentationPart.Presentation.SlideIdList.Count;
var slidePartId = presentationPart.GetIdOfPart(slidePart);
presentationPart.Presentation.SlideIdList.Append(new SlideId { Id = slideId, RelationshipId = slidePartId });
- 使用模板创建幻灯片
可以使用 PowerPoint 模板创建幻灯片,以便在其中添加内容。例如:
var slidePart = presentationPart.AddNewPart<SlidePart>();
var slideId = presentationPart.Presentation.SlideIdList.Count;
var slidePartId = presentationPart.GetIdOfPart(slidePart);
presentationPart.Presentation.SlideIdList.Append(new SlideId { Id = slideId, RelationshipId = slidePartId });
// 使用模板创建幻灯片
slidePart.FeedData(File.Open('template.pptx', FileMode.Open));
- 添加内容
可以使用 OpenXml API 添加文本、图像、形状或其他内容。例如:
var paragraph = new DocumentFormat.OpenXml.Drawing.Paragraph(new DocumentFormat.OpenXml.Drawing.Run(new DocumentFormat.OpenXml.Drawing.Text('Hello World!')));
var textBody = new DocumentFormat.OpenXml.Drawing.TextBody(paragraph);
var shape = new DocumentFormat.OpenXml.Presentation.Shape(
new DocumentFormat.OpenXml.Presentation.NonVisualShapeProperties(
new DocumentFormat.OpenXml.Presentation.NonVisualDrawingProperties { Id = 1, Name = 'TextBox 1' },
new DocumentFormat.OpenXml.Presentation.NonVisualShapeDrawingProperties(new DocumentFormat.OpenXml.Drawing.ShapeLocks { NoGrouping = true })),
new DocumentFormat.OpenXml.Presentation.ShapeProperties(),
textBody);
slidePart.Slide.CommonSlideData.ShapeTree.AppendChild(shape);
- 保存 PowerPoint 文档
使用 Save 方法保存 PowerPoint 文档。例如:
presentationDoc.Save();
- 将 PowerPoint 转为 PDF
使用 Aspose.Slides 或其他第三方库将 PowerPoint 转换为 PDF。例如:
using (var presentation = new Aspose.Slides.Presentation('presentation.pptx'))
{
presentation.Save('presentation.pdf', Aspose.Slides.Export.SaveFormat.Pdf);
}
- 完整代码示例
以下是将 PowerPoint 转换为 PDF 的完整代码示例:
using Aspose.Slides.Export;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Presentation;
using DocumentFormat.OpenXml.Drawing;
using System.IO;
namespace PptToPdf
{
class Program
{
static void Main(string[] args)
{
// 创建 PowerPoint 文档
var presentationDoc = PresentationDocument.Create('presentation.pptx', PresentationDocumentType.Presentation);
var presentationPart = presentationDoc.AddPresentationPart();
var slideMasterPart = presentationPart.AddNewPart<SlideMasterPart>();
var slideLayoutPart = slideMasterPart.AddNewPart<SlideLayoutPart>();
// 添加幻灯片
var slidePart = presentationPart.AddNewPart<SlidePart>();
var slideId = presentationPart.Presentation.SlideIdList.Count;
var slidePartId = presentationPart.GetIdOfPart(slidePart);
presentationPart.Presentation.SlideIdList.Append(new SlideId { Id = slideId, RelationshipId = slidePartId });
// 使用模板创建幻灯片
slidePart.FeedData(File.Open('template.pptx', FileMode.Open));
// 添加内容
var paragraph = new Paragraph(new Run(new Text('Hello World!')));
var textBody = new TextBody(paragraph);
var shape = new Shape(
new NonVisualShapeProperties(
new NonVisualDrawingProperties { Id = 1, Name = 'TextBox 1' },
new NonVisualShapeDrawingProperties(new ShapeLocks { NoGrouping = true })),
new ShapeProperties(),
textBody);
slidePart.Slide.CommonSlideData.ShapeTree.AppendChild(shape);
// 保存 PowerPoint 文档
presentationDoc.Save();
// 将 PowerPoint 转为 PDF
using (var presentation = new Aspose.Slides.Presentation('presentation.pptx'))
{
presentation.Save('presentation.pdf', SaveFormat.Pdf);
}
}
}
}
原文地址: https://www.cveoy.top/t/topic/owxT 著作权归作者所有。请勿转载和采集!