C++でPPTおよびPPTXをPDFに変換(高度な機能を含む)

概要

C++でPowerPointプレゼンテーション(PPT、PPTX、ODPなど)をPDF形式に変換すると、さまざまなデバイス間での互換性やプレゼンテーションのレイアウトと書式を保持できるなど、いくつかの利点があります。本ガイドでは、プレゼンテーションをPDFドキュメントに変換する方法、画像品質を制御するさまざまなオプションの使用、非表示スライドの含め方、PDFファイルのパスワード保護、フォント置換の検出、変換対象の特定スライドの選択、出力ドキュメントへのコンプライアンス標準の適用方法を示します。

PowerPointから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++コードは、プレゼンテーション(PPT、PPTX、ODPなど)をPDFに変換する方法を示します:

// PowerPoint または OpenDocument ファイルを表す Presentation クラスのインスタンスを作成します。
auto presentation = MakeObject<Presentation>(u"PowerPoint.ppt");

// プレゼンテーションを PDF として保存します。
presentation->Save(u"PPT-to-PDF.pdf", SaveFormat::Pdf);

presentation->Dispose();

オプション付きでPowerPointをPDFに変換

Aspose.Slidesは、PdfOptionsクラスのプロパティとしてカスタムオプションを提供し、生成されたPDFをカスタマイズしたり、パスワードでロックしたり、変換プロセスの進行方法を指定したりできます。

カスタムオプションでPowerPointをPDFに変換

カスタム変換オプションを使用すると、ラスタ画像の品質設定、メタファイルの処理方法、テキストの圧縮レベル、画像のDPI設定などを自由に定義できます。

以下のコード例は、複数のカスタムオプションを使用してPowerPointプレゼンテーションをPDFに変換する方法を示します。

// PdfOptions クラスのインスタンスを作成します。
auto pdfOptions = MakeObject<PdfOptions>();

// JPG 画像の品質を設定します。
pdfOptions->set_JpegQuality(90);

// 画像の DPI を設定します。
pdfOptions->set_SufficientResolution(300);

// メタファイルの動作を設定します。
pdfOptions->set_SaveMetafilesAsPng(true);

// テキストコンテンツの圧縮レベルを設定します。
pdfOptions->set_TextCompression(PdfTextCompression::Flate);

// PDF コンプライアンスモードを定義します。
pdfOptions->set_Compliance(PdfCompliance::Pdf15);

// PowerPoint または OpenDocument ファイルを表す Presentation クラスのインスタンスを作成します。
auto presentation = MakeObject<Presentation>(u"PowerPoint.pptx");

// プレゼンテーションを PDF ドキュメントとして保存します。
presentation->Save(u"PowerPoint-to-PDF.pdf", SaveFormat::Pdf, pdfOptions);

presentation->Dispose();

非表示スライド付きでPowerPointをPDFに変換

プレゼンテーションに非表示スライドが含まれる場合、PdfOptionsクラスのset_ShowHiddenSlidesメソッドを使用して、非表示スライドを生成されたPDFのページとして含めることができます。

このC++コードは、非表示スライドを含めてPowerPointプレゼンテーションをPDFに変換する方法を示します:

// PowerPoint または OpenDocument ファイルを表す Presentation クラスのインスタンスを作成します。
auto presentation = MakeObject<Presentation>(u"PowerPoint.pptx");

// PdfOptions クラスのインスタンスを作成します。
auto pdfOptions = MakeObject<PdfOptions>();

// 非表示スライドを追加します。
pdfOptions->set_ShowHiddenSlides(true);

// プレゼンテーションを PDF として保存します。
presentation->Save(u"PowerPoint-to-PDF.pdf", SaveFormat::Pdf, pdfOptions);

presentation->Dispose();

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

このС++コードは、PdfOptionsクラスの保護パラメータを使用して、PowerPointプレゼンテーションをパスワード保護されたPDFに変換する方法を示します:

// PowerPoint または OpenDocument ファイルを表す Presentation クラスのインスタンスを作成します。
auto presentation = MakeObject<Presentation>(u"PowerPoint.pptx");

// PdfOptions クラスのインスタンスを作成します。
auto pdfOptions = MakeObject<PdfOptions>();

// PDF のパスワードとアクセス権限を設定します。
pdfOptions->set_Password(u"password");
pdfOptions->set_AccessPermissions(PdfAccessPermissions::PrintDocument | PdfAccessPermissions::HighQualityPrint);

// プレゼンテーションを PDF として保存します。
presentation->Save(u"PPTX-to-PDF.pdf", SaveFormat::Pdf, pdfOptions);

presentation->Dispose();

フォント置換の検出

Aspose.Slidesは、PdfOptionsクラスの下にあるset_WarningCallbackメソッドを提供し、プレゼンテーションからPDFへの変換プロセス中にフォント置換を検出できるようにします。

このC++コードは、フォント置換を検出する方法を示します:

// 警告コールバックの実装。
class FontSubstitutionHandler : public IWarningCallback
{
public:
    ReturnAction Warning(SharedPtr<IWarningInfo> warning) override;
};

ReturnAction FontSubstitutionHandler::Warning(SharedPtr<IWarningInfo> warning)
{
    if (warning->get_WarningType() == WarningType::DataLoss && 
        warning->get_Description().StartsWith(u"Font will be substituted"))
    {
        Console::WriteLine(u"Font substitution warning: {0}", warning->get_Description());
    }

    return ReturnAction::Continue;
}

int main()
{
    // PowerPoint または OpenDocument ファイルを表す Presentation クラスのインスタンスを作成します。
    auto presentation = MakeObject<Presentation>(u"sample.pptx");

    // PDF オプションに警告コールバックを設定します。
    auto pdfOptions = MakeObject<PdfOptions>();
    pdfOptions->set_WarningCallback(MakeObject<FontSubstitutionHandler>());

    // プレゼンテーションを PDF として保存します。
    presentation->Save(u"output.pdf", SaveFormat::Pdf, pdfOptions);
    
    presentation->Dispose();

    return 0;
}

PowerPointから選択したスライドのみをPDFに変換

このC++コードは、PowerPointプレゼンテーションから特定のスライドだけをPDFに変換する方法を示します:

// PowerPoint または OpenDocument ファイルを表す Presentation クラスのインスタンスを作成します。
auto presentation = MakeObject<Presentation>(u"PowerPoint.pptx");

// スライド番号の配列を設定します。
auto slides = MakeArray<int32_t>({ 1, 3 });

// プレゼンテーションを PDF として保存します。
presentation->Save(u"PPTX-to-PDF.pdf", slides, SaveFormat::Pdf);

presentation->Dispose();

カスタムスライドサイズでPowerPointをPDFに変換

このC++コードは、指定したスライドサイズでPowerPointプレゼンテーションをPDFに変換する方法を示します:

auto slideWidth = 612;
auto slideHeight = 792;

// PowerPoint または OpenDocument ファイルを表す Presentation クラスのインスタンスを作成します。
auto presentation = MakeObject<Presentation>(u"SelectedSlides.pptx");

// スライドサイズを調整した新しいプレゼンテーションを作成します。
auto resizedPresentation = MakeObject<Presentation>();

// カスタムスライドサイズを設定します。
resizedPresentation->get_SlideSize()->SetSize(slideWidth, slideHeight, SlideSizeScaleType::EnsureFit);

// 元のプレゼンテーションから最初のスライドをクローンします。
auto slide = presentation->get_Slide(0);
resizedPresentation->get_Slides()->InsertClone(0, slide);

// リサイズされたプレゼンテーションをノート付き PDF として保存します。
resizedPresentation->Save(u"PDF_with_notes.pdf", SaveFormat::Pdf);

resizedPresentation->Dispose();
presentation->Dispose();

ノートスライドビューでPowerPointをPDFに変換

このC++コードは、ノートを含むPDFにPowerPointプレゼンテーションを変換する方法を示します:

// PowerPoint または OpenDocument ファイルを表す Presentation クラスのインスタンスを作成します。
auto presentation = MakeObject<Presentation>(u"SelectedSlides.pptx");

// Notes レイアウトで PDF オプションを構成します。
auto notesOptions = MakeObject<NotesCommentsLayoutingOptions>();
notesOptions->set_NotesPosition(NotesPositions::BottomFull);
auto pdfOptions = MakeObject<PdfOptions>();
pdfOptions->set_SlidesLayoutOptions(notesOptions);

// プレゼンテーションをノート付き PDF として保存します。
presentation->Save(u"PDF_with_notes.tiff", SaveFormat::Pdf, pdfOptions);

presentation->Dispose();

PDFのアクセシビリティとコンプライアンス標準

Aspose.Slidesは、Web Content Accessibility Guidelines (WCAG) に準拠した変換手順を使用できます。以下のコンプライアンス標準のいずれかを使用して、PowerPointドキュメントをPDFにエクスポートできます:PDF/A1aPDF/A1bPDF/UA

このC++コードは、異なるコンプライアンス標準に基づいて複数のPDFを生成するPowerPointからPDFへの変換プロセスを示します:

auto presentation = MakeObject<Presentation>(u"pres.pptx");

auto pdfOptionsA1a = MakeObject<PdfOptions>();

pdfOptionsA1a->set_Compliance(PdfCompliance::PdfA1a);
presentation->Save(u"pres-a1a-compliance.pdf", SaveFormat::Pdf, pdfOptionsA1a);

auto pdfOptionsA1b = MakeObject<PdfOptions>();
pdfOptionsA1b->set_Compliance(PdfCompliance::PdfA1b);
presentation->Save(u"pres-a1b-compliance.pdf", SaveFormat::Pdf, pdfOptionsA1b);

auto pdfOptionsUa = MakeObject<PdfOptions>();
pdfOptionsUa->set_Compliance(PdfCompliance::PdfUa);

presentation->Save(u"pres-ua-compliance.pdf", SaveFormat::Pdf, pdfOptionsUa);

presentation->Dispose();

FAQ

複数のPowerPointファイルを一括でPDFに変換できますか?

はい、Aspose.Slidesは複数のPPTまたはPPTXファイルをPDFにバッチ変換することをサポートしています。ファイルを反復処理し、プログラムで変換プロセスを適用できます。

変換されたPDFにパスワードを設定できますか?

もちろんです。PdfOptionsクラスを使用して、変換プロセス中にパスワードとアクセス許可を設定できます。

PDFに非表示スライドを含めるにはどうすればよいですか?

PdfOptionsクラスのset_ShowHiddenSlidesメソッドを使用して、非表示スライドを生成されたPDFに含めることができます。

Aspose.SlidesはPDFの画像品質を高く保てますか?

はい、set_JpegQualityset_SufficientResolutionなどのメソッドをPdfOptionsクラスで使用して、PDF内の画像品質を高く保つことができます。

Aspose.SlidesはPDF/Aのコンプライアンス標準をサポートしていますか?

はい、Aspose.SlidesはPDF/A1a、PDF/A1b、PDF/UA などのさまざまな標準に準拠したPDFのエクスポートをサポートしており、アクセシビリティとアーカイブ要件を満たすことができます。

Additional Resources