在 JavaScript 中将 PPT 和 PPTX 转换为 PDF(包含高级功能)

概述

在 JavaScript 中将 PowerPoint 和 OpenDocument 演示文稿(PPT、PPTX、ODP 等)转换为 PDF 格式具有多种优势,包括在不同设备之间的兼容性以及保留演示文稿的布局和格式。本指南演示了如何将演示文稿转换为 PDF 文档、使用各种选项控制图像质量、包含隐藏幻灯片、为 PDF 文件设置密码保护、检测字体替换、选择特定幻灯片进行转换以及对输出文档应用合规标准。

PowerPoint 到 PDF 的转换

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

  • PPT
  • PPTX
  • ODP

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

Aspose.Slides 允许您转换:

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

Aspose.Slides 将演示文稿导出为 PDF,确保生成的 PDF 与原始演示文稿高度匹配。转换过程中元素和属性会准确呈现,包括:

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

将 PowerPoint 转换为 PDF

标准的 PowerPoint 到 PDF 转换过程使用默认选项。在这种情况下,Aspose.Slides 会尝试使用最佳设置和最高质量水平将提供的演示文稿转换为 PDF。

以下代码演示如何将演示文稿(PPT、PPTX、ODP 等)转换为 PDF:

// 实例化表示 PowerPoint 或 OpenDocument 文件的 Presentation 类。
let presentation = new aspose.slides.Presentation("PowerPoint.ppt");
try {
    // 将演示文稿保存为 PDF。
    presentation.save("PPT-to-PDF.pdf", aspose.slides.SaveFormat.Pdf);
} finally {
    presentation.dispose();
}

使用选项将 PowerPoint 转换为 PDF

Aspose.Slides 提供了自定义选项——PdfOptions 类下的属性,允许您自定义生成的 PDF、为 PDF 设置密码锁定,或指定转换过程的执行方式。

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

使用自定义转换选项,您可以定义光栅图像的首选质量设置、指定元文件的处理方式、设置文本的压缩级别、配置图像的 DPI 等。

以下代码示例演示如何使用多种自定义选项将 PowerPoint 演示文稿转换为 PDF。

// 实例化 PdfOptions 类。
let pdfOptions = new aspose.slides.PdfOptions();

// Set the quality for JPG images.
pdfOptions.setJpegQuality(java.newByte(90));

// Set DPI for images.
pdfOptions.setSufficientResolution(300);

// Set the behavior for metafiles.
pdfOptions.setSaveMetafilesAsPng(true);

// Set the text compression level for textual content.
pdfOptions.setTextCompression(aspose.slides.PdfTextCompression.Flate);

// Define the PDF compliance mode.
pdfOptions.setCompliance(aspose.slides.PdfCompliance.Pdf15);

// 实例化表示 PowerPoint 或 OpenDocument 文件的 Presentation 类。
let presentation = new aspose.slides.Presentation("PowerPoint.pptx");
try {
    // 将演示文稿保存为 PDF 文档。
    presentation.save("PowerPoint-to-PDF.pdf", aspose.slides.SaveFormat.Pdf, pdfOptions);
} finally {
    presentation.dispose();
}

使用隐藏幻灯片将 PowerPoint 转换为 PDF

如果演示文稿包含隐藏幻灯片,您可以使用来自 PdfOptions 类的 setShowHiddenSlides 方法,将隐藏幻灯片作为页面包含在生成的 PDF 中。

以下 JavaScript 代码展示如何在转换为 PDF 时包含隐藏幻灯片:

// 实例化表示 PowerPoint 或 OpenDocument 文件的 Presentation 类。
let presentation = new aspose.slides.Presentation("PowerPoint.pptx");
try {
    // 实例化 PdfOptions 类。
    let pdfOptions = new aspose.slides.PdfOptions();

    // 添加隐藏幻灯片。
    pdfOptions.setShowHiddenSlides(true);

    // 将演示文稿保存为 PDF。
    presentation.save("PowerPoint-to-PDF.pdf", aspose.slides.SaveFormat.Pdf, pdfOptions);
} finally {
    presentation.dispose();
}

将 PowerPoint 转换为受密码保护的 PDF

以下 JavaScript 代码演示如何使用 PdfOptions 类的保护参数,将 PowerPoint 演示文稿转换为受密码保护的 PDF:

// 实例化表示 PowerPoint 或 OpenDocument 文件的 Presentation 类。
let presentation = new aspose.slides.Presentation("PowerPoint.pptx");
try {
    // 实例化 PdfOptions 类。
    let pdfOptions = new aspose.slides.PdfOptions();

    // 设置 PDF 密码和访问权限。
    pdfOptions.setPassword("password");
    pdfOptions.setAccessPermissions(aspose.slides.PdfAccessPermissions.PrintDocument | aspose.slides.PdfAccessPermissions.HighQualityPrint);

    // 将演示文稿保存为 PDF。
    presentation.save("PPTX-to-PDF.pdf", aspose.slides.SaveFormat.Pdf, pdfOptions);
} finally {
    presentation.dispose();
}

检测字体替换

Aspose.Slides 在 PdfOptions 类下提供了 setWarningCallback 方法,使您能够在演示文稿到 PDF 的转换过程中检测字体替换。

以下 JavaScript 代码展示如何检测字体替换:

// 在 PDF 选项中设置警告回调。
let pdfOptions = new aspose.slides.PdfOptions();
pdfOptions.setWarningCallback(FontSubstitutionHandler);

// 实例化表示 PowerPoint 或 OpenDocument 文件的 Presentation 类。
let presentation = new aspose.slides.Presentation("sample.pptx");

// 将演示文稿保存为 PDF。
presentation.save("output.pdf", aspose.slides.SaveFormat.Pdf, pdfOptions);
presentation.dispose();
const FontSubstitutionHandler = java.newProxy("com.aspose.slides.IWarningCallback", {
	warning: function (warning) {
		if (warning.getWarningType() === aspose.slides.WarningType.DataLoss) {
			console.warn("Font substitution warning: " + warning.getDescription());
		}
		return aspose.slides.ReturnAction.Continue;
	}
});

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

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

// 实例化表示 PowerPoint 或 OpenDocument 文件的 Presentation 类。
let presentation = new aspose.slides.Presentation("PowerPoint.pptx");
try {
    // 设置幻灯片编号数组。
    let slides = java.newArray("int", [1, 3]);

    // 将演示文稿保存为 PDF。
    presentation.save("PPTX-to-PDF.pdf", slides, aspose.slides.SaveFormat.Pdf);
} finally {
    presentation.dispose();
}

使用自定义幻灯片大小将 PowerPoint 转换为 PDF

以下 JavaScript 代码演示如何使用指定的幻灯片大小将 PowerPoint 演示文稿转换为 PDF:

const slideWidth = 612;
const slideHeight = 792;

// 实例化表示 PowerPoint 或 OpenDocument 文件的 Presentation 类。
let presentation = new aspose.slides.Presentation("SelectedSlides.pptx");

// 创建具有调整后幻灯片尺寸的新演示文稿。
let resizedPresentation = new aspose.slides.Presentation();

try {
    // 设置自定义幻灯片尺寸。
    resizedPresentation.getSlideSize().setSize(slideWidth, slideHeight, aspose.slides.SlideSizeScaleType.EnsureFit);

    // 从原始演示文稿克隆第一张幻灯片。
    let slide = presentation.getSlides().get_Item(0);
    resizedPresentation.getSlides().insertClone(0, slide);

    // 将调整大小的演示文稿保存为带注释的 PDF。
    resizedPresentation.save("PDF_with_notes.pdf", aspose.slides.SaveFormat.Pdf);
} finally {
    resizedPresentation.dispose();
    presentation.dispose();
}

在备注幻灯片视图中将 PowerPoint 转换为 PDF

以下 JavaScript 代码演示如何将 PowerPoint 演示文稿转换为包含备注的 PDF:

// 实例化表示 PowerPoint 或 OpenDocument 文件的 Presentation 类。
let presentation = new aspose.slides.Presentation("SelectedSlides.pptx");
try {
    // 配置带备注布局的 PDF 选项。
    let notesOptions = new aspose.slides.NotesCommentsLayoutingOptions();
    notesOptions.setNotesPosition(aspose.slides.NotesPositions.BottomFull);
    let pdfOptions = new aspose.slides.PdfOptions();
    pdfOptions.setSlidesLayoutOptions(notesOptions);

    // 将演示文稿保存为带备注的 PDF。
    presentation.save("PDF_with_notes.pdf", aspose.slides.SaveFormat.Pdf, pdfOptions);
} finally {
    presentation.dispose();
}

PDF 的无障碍性和合规性标准

Aspose.Slides 允许您使用符合 Web Content Accessibility Guidelines (WCAG) 的转换过程。您可以使用以下任一合规标准将 PowerPoint 文档导出为 PDF:PDF/A1a、PDF/A1b 和 PDF/UA。

以下 JavaScript 代码演示一种基于不同合规标准生成多个 PDF 的 PowerPoint 到 PDF 的转换过程:

let presentation = new aspose.slides.Presentation("pres.pptx");
try {
    let pdfOptions = new aspose.slides.PdfOptions();
    pdfOptions.setCompliance(aspose.slides.PdfCompliance.PdfA1a);
    presentation.save("pres-a1a-compliance.pdf", aspose.slides.SaveFormat.Pdf, pdfOptions);
    pdfOptions.setCompliance(aspose.slides.PdfCompliance.PdfA1b);
    presentation.save("pres-a1b-compliance.pdf", aspose.slides.SaveFormat.Pdf, pdfOptions);
    pdfOptions.setCompliance(aspose.slides.PdfCompliance.PdfUa);
    presentation.save("pres-ua-compliance.pdf", aspose.slides.SaveFormat.Pdf, pdfOptions);
} finally {
    presentation.dispose();
}

注意: 当导出为 PDF/UA 时,Aspose.Slides 将诸如 SmartArt、图表和公式等复杂图形视为单个图形。单独的路径元素不会作为独立内容保留,可能被标记为伪影;仅为整个图形提供替代文本。

常见问题

我可以批量将多个 PowerPoint 文件转换为 PDF 吗? 是的,Aspose.Slides 支持将多个 PPT 或 PPTX 文件批量转换为 PDF。您可以遍历文件并以编程方式执行转换过程。

是否可以对转换后的 PDF 设置密码保护? 当然。使用 PdfOptions 类在转换过程中设置密码并定义访问权限。

如何在 PDF 中包含隐藏幻灯片? 使用 PdfOptions 类中的 setShowHiddenSlides 方法即可在生成的 PDF 中包含隐藏幻灯片。

Aspose.Slides 能在 PDF 中保持高图像质量吗? 是的,您可以通过在 PdfOptions 类中使用 setJpegQuality 和 setSufficientResolution 等方法来控制图像质量,从而确保 PDF 中的图像保持高质量。

Aspose.Slides 支持 PDF/A 合规标准吗? 是的,Aspose.Slides 允许您导出符合多种标准的 PDF,包括 PDF/A1a、PDF/A1b 和 PDF/UA,确保文档满足无障碍性和存档要求。

其他资源