在 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/A1aPDF/A1bPDF/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 类中使用 setJpegQualitysetSufficientResolution 等方法来控制图像质量,从而确保 PDF 中的图像保持高质量。

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

其他资源