在 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 類別提供 save 方法,通常用於將簡報轉換為 PDF。

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();

// 設定 JPG 圖片的品質。
pdfOptions.setJpegQuality(java.newByte(90));

// 設定圖像的 DPI。
pdfOptions.setSufficientResolution(300);

// 設定中繪檔的行為。
pdfOptions.setSaveMetafilesAsPng(true);

// 設定文字內容的壓縮等級。
pdfOptions.setTextCompression(aspose.slides.PdfTextCompression.Flate);

// 定義 PDF 合規模式。
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/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 中保持高影像品質嗎?

可以,您可以透過使用 setJpegQualitysetSufficientResolution 等方法於 PdfOptions 類別中,確保 PDF 中的影像保持高品質。

Aspose.Slides 支援 PDF/A 合規標準嗎?

是的,Aspose.Slides 允許您匯出符合各種標準的 PDF,包括 PDF/A1a、PDF/A1b 以及 PDF/UA,確保文件符合可及性與存檔需求。

其他資源