1. 添加 OpenXml 引用

在项目中添加 OpenXml 引用,可以通过 NuGet 包管理器搜索 Microsoft.Office.Interop.OpenXml 或通过 Visual Studio 的'引用'菜单手动添加。

  1. 创建 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 });
  1. 使用模板创建幻灯片

可以使用 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));
  1. 添加内容

可以使用 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);
  1. 保存 PowerPoint 文档

使用 Save 方法保存 PowerPoint 文档。例如:

presentationDoc.Save();
  1. 将 PowerPoint 转为 PDF

使用 Aspose.Slides 或其他第三方库将 PowerPoint 转换为 PDF。例如:

using (var presentation = new Aspose.Slides.Presentation('presentation.pptx'))
{
    presentation.Save('presentation.pdf', Aspose.Slides.Export.SaveFormat.Pdf);
}
  1. 完整代码示例

以下是将 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);
            }
        }
    }
}
.NET Core 使用 OpenXml 将 PPT 转换为 PDF

原文地址: https://www.cveoy.top/t/topic/owxT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录