将 PowerPoint 转换为 PDF 的 C#

概述

将 PowerPoint 文档转换为 PDF 格式具有多个优点,包括确保不同设备之间的兼容性以及保持演示文稿的布局和格式。本文将向您展示如何将演示文稿转换为 PDF 文档,使用各种选项控制图像质量,包含隐藏幻灯片,给 PDF 文档加密,检测字体替代,选择要转换的幻灯片,并将符合性标准应用于输出文档。

PowerPoint 到 PDF 的转换

使用 Aspose.Slides,您可以将以下格式的演示文稿转换为 PDF:

  • PPT
  • PPTX
  • ODP

要将演示文稿转换为 PDF,您只需将文件名作为参数传递给 Presentation 类,然后使用 Save 方法将演示文稿保存为 PDF。Presentation 类公开了 Save 方法,该方法通常用于将演示文稿转换为 PDF。

Aspose.Slides 允许您转换:

  • 将整个演示文稿转换为 PDF
  • 将演示文稿中的特定幻灯片转换为 PDF
  • 一个演示文稿

Aspose.Slides 以一种方式将演示文稿导出为 PDF,使得结果 PDF 的内容与原始演示文稿非常相似。这些已知的元素和属性在演示文稿到 PDF 的转换中通常会正确呈现:

  • 图像
  • 文本框和其他形状
  • 文本及其格式
  • 段落及其格式
  • 超链接
  • 页眉和页脚
  • 项目符号
  • 表格

将 PowerPoint 转换为 PDF

标准的 PowerPoint PDF 转换操作使用默认选项执行。在这种情况下,Aspose.Slides 试图使用最佳设置在最高质量级别下将提供的演示文稿转换为 PDF。

以下 C# 代码演示了如何将 PowerPoint (PPT, PPTX, ODP) 转换为 PDF:

// 实例化一个表示 PowerPoint 文件的 Presentation 类,可以是 PPT、PPTX、ODP 等
Presentation presentation = new Presentation("PowerPoint.ppt");

// 将演示文稿保存为 PDF
presentation.Save("PDF-result.pdf", SaveFormat.Pdf);

使用选项将 PowerPoint 转换为 PDF

Aspose.Slides 提供了自定义选项——PdfOptions 类下的属性——允许您自定义 PDF(转换过程生成的 PDF),用密码锁定 PDF,甚至指定转换过程的操作方式。

使用自定义选项将 PowerPoint 转换为 PDF

通过使用自定义转换选项,您可以设置所需的光栅图像质量设置,指定如何处理元文件,为文本设置压缩级别,为图像设置 DPI 等。

以下代码示例演示了一个操作,其中 PowerPoint 演示文稿使用多个自定义选项转换为 PDF:

// 实例化 PdfOptions 类
PdfOptions pdfOptions = new PdfOptions
{
    // 设置 JPG 图像的质量
    JpegQuality = 90,

    // 设置图像的 DPI
    SufficientResolution = 300,

    // 设置元文件的行为
    SaveMetafilesAsPng = true,

    // 设置文本内容的压缩级别
    TextCompression = PdfTextCompression.Flate,

    // 定义 PDF 合规模式
    Compliance = PdfCompliance.Pdf15
};

// 实例化一个表示 PowerPoint 文档的 Presentation 类
using (Presentation presentation = new Presentation("PowerPoint.pptx"))
{
    // 将演示文稿保存为 PDF 文档
    presentation.Save("PowerPoint-to-PDF.pdf", SaveFormat.Pdf, pdfOptions);
}

将 PowerPoint 转换为包含隐藏幻灯片的 PDF

如果演示文稿包含隐藏幻灯片,您可以使用一个自定义选项——ShowHiddenSlides 属性来自 PdfOptions 类——来指示 Aspose.Slides 将隐藏幻灯片作为页面包含到生成的 PDF 中。

以下 C# 代码演示了如何将 PowerPoint 演示文稿转换为包含隐藏幻灯片的 PDF:

// 实例化一个表示 PowerPoint 文件的 Presentation 类
Presentation presentation = new Presentation("PowerPoint.pptx");

// 实例化 PdfOptions 类
PdfOptions pdfOptions = new PdfOptions();

// 添加隐藏的幻灯片
pdfOptions.ShowHiddenSlides = true;

// 将演示文稿保存为 PDF
presentation.Save("PowerPoint-to-PDF.pdf", SaveFormat.Pdf, pdfOptions);

将 PowerPoint 转换为密码保护的 PDF

以下 C# 代码演示了如何将 PowerPoint 转换为一个密码保护的 PDF(使用来自 PdfOptions 类的保护参数):

// 实例化一个表示 PowerPoint 文件的 Presentation 对象
Presentation presentation = new Presentation("PowerPoint.pptx");

/// 实例化 PdfOptions 类
PdfOptions pdfOptions = new PdfOptions();

// 设置 PDF 密码和访问权限
pdfOptions.Password = "password";
pdfOptions.AccessPermissions = PdfAccessPermissions.PrintDocument | PdfAccessPermissions.HighQualityPrint;

// 将演示文稿保存为 PDF
presentation.Save("PPTX-to-PDF.pdf", SaveFormat.Pdf, pdfOptions);

检测字体替代

Aspose.Slides 在 SaveOptions 类下提供 WarningCallback 属性,以允许您检测演示文稿到 PDF 转换过程中的字体替代。

以下 C# 代码演示了如何检测字体替代:

public static void Main()
{
    LoadOptions loadOptions = new LoadOptions();
    FontSubstSendsWarningCallback warningCallback = new FontSubstSendsWarningCallback();
    loadOptions.WarningCallback = warningCallback;

    using (Presentation pres = new Presentation("pres.pptx", loadOptions))
    {
    }
}

private class FontSubstSendsWarningCallback : IWarningCallback
{
    public ReturnAction Warning(IWarningInfo warning)
    {
        if (warning.WarningType == WarningType.CompatibilityIssue)
            return ReturnAction.Continue;

        if (warning.WarningType == WarningType.DataLoss &&
            warning.Description.StartsWith("Font will be substituted"))
        {
            Console.WriteLine($"字体替代警告: {warning.Description}");
        }

        return ReturnAction.Continue;
    }
}

将选定的 PowerPoint 幻灯片转换为 PDF

以下 C# 代码演示了如何将 PowerPoint 演示文稿中的特定幻灯片转换为 PDF:

// 实例化一个表示 PowerPoint 文件的 Presentation 对象
Presentation presentation = new Presentation("PowerPoint.pptx");

// 设置幻灯片位置的数组
int[] slides = { 1, 3 };

// 将演示文稿保存为 PDF
presentation.Save("PPTX-to-PDF.pdf", slides, SaveFormat.Pdf);

将 PowerPoint 转换为具有自定义幻灯片大小的 PDF

以下 C# 代码演示了如何在指定幻灯片大小时将 PowerPoint 转换为 PDF:

// 实例化一个表示 PowerPoint 文件的 Presentation 对象 
Presentation presentation = new Presentation("SelectedSlides.pptx");
Presentation auxPresentation = new Presentation();

ISlide slide = presentation.Slides[0];
auxPresentation.Slides.InsertClone(0, slide);

// 设置幻灯片类型和大小 
auxPresentation.SlideSize.SetSize(612F, 792F,SlideSizeScaleType.EnsureFit);

PdfOptions pdfOptions = new PdfOptions();
INotesCommentsLayoutingOptions options = pdfOptions.NotesCommentsLayouting;
options.NotesPosition = NotesPositions.BottomFull;

auxPresentation.Save("PDFnotes_out.pdf", SaveFormat.Pdf, pdfOptions);

以讲义幻灯片视图将 PowerPoint 转换为 PDF

以下 C# 代码演示了如何将 PowerPoint 转换为 PDF 讲义:

// 实例化一个表示 PowerPoint 文件的 Presentation 类
using (Presentation presentation = new Presentation("NotesFile.pptx"))
{
	PdfOptions pdfOptions = new PdfOptions();
	INotesCommentsLayoutingOptions options = pdfOptions.NotesCommentsLayouting;
	options.NotesPosition = NotesPositions.BottomFull;

	// 将演示文稿保存为 PDF 讲义
	presentation.Save("Pdf_Notes_out.tiff", SaveFormat.Pdf, pdfOptions);
}

PDF 的可访问性和合规性标准

Aspose.Slides 允许您使用符合 Web 内容可访问性指南 (WCAG) 的转换程序。您可以使用以下任何合规标准将 PowerPoint 文档导出为 PDF:PDF/A1aPDF/A1bPDF/UA

以下 C# 代码演示了一次 PowerPoint 到 PDF 的转换操作,其中获取了基于不同合规标准的多个 PDF:

using (Presentation pres = new Presentation("pres.pptx"))
{
    pres.Save("pres-a1a-compliance.pdf", SaveFormat.Pdf, new PdfOptions()
    {
        Compliance = PdfCompliance.PdfA1a
    });
   
    pres.Save("pres-a1b-compliance.pdf", SaveFormat.Pdf, new PdfOptions()
    {
        Compliance = PdfCompliance.PdfA1b
    });
   
    pres.Save("pres-ua-compliance.pdf", SaveFormat.Pdf, new PdfOptions()
    {
        Compliance = PdfCompliance.PdfUa
    });
}