C#でPowerPointをPDFに変換

概要

PowerPoint文書を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に変換しようとします。

この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をパスワードでロックしたり、変換プロセスの方法を指定したりできます。

カスタムオプションで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に変換

プレゼンテーションに非表示スライドが含まれている場合は、PdfOptionsクラスのShowHiddenSlidesプロパティを使用して、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);

パスワード保護されたPDFにPowerPointを変換

このC#コードは、パスワード保護されたPDFにPowerPointを変換する方法を示しています(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#コードは、フォントの置き換えを検出する方法を示しています:xxx

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(presentation.SlideSize.Size.Width, presentation.SlideSize.Size.Height,SlideSizeScaleType.EnsureFit);
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/A1b、およびPDF/UA

このC#コードは、異なるコンプライアンス基準に基づいて複数のPDFを取得するPowerPointから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
    });
}