.NET でプレゼンテーションを開く
はじめに
Aspose.Slides for .NET は、ファイルやストリームから PowerPoint および OpenDocument プレゼンテーションを読み込むことができます。プレゼンテーションが読み込まれた後は、その構造を検査したり、スライドを編集したり、リソースを管理したり、元の形式または別のサポート形式で保存したりできます。
読み込みの動作は、LoadOptions クラスを使用してカスタマイズできます。たとえば、開くためのパスワードを指定したり、大きなバイナリオブジェクトを管理メモリ外に保持したり、外部リソースを制御したり、埋め込みバイナリ データを省略したりできます。
プレゼンテーションを開く
ファイルまたはストリームを読み込んだ後、元のプレゼンテーション形式を判別することで、アプリケーションがそれをどのように処理するかを選択できます。
既存のプレゼンテーションを開くには、そのファイル パスを Presentation コンストラクタに渡します。使用後はプレゼンテーションを破棄し、ファイルハンドルや一時データ、その他のリソースが速やかに解放されるようにします。
using System;
using Aspose.Slides;
using var presentation = new Presentation("sample.pptx");
Console.WriteLine("Slide count: " + presentation.Slides.Count);
パスワードで保護されたプレゼンテーションを開く
開くためのパスワードはプレゼンテーションの内容を暗号化します。完全なプレゼンテーションを読み込むには、正しいパスワードを LoadOptions.Password に設定し、オプションを Presentation コンストラクタに渡します。パスワードが不足または誤っている場合、読み込みは失敗します。
using System;
using Aspose.Slides;
var loadOptions = new LoadOptions { Password = "open_password" };
using var presentation = new Presentation("encrypted-presentation.pptx", loadOptions);
Console.WriteLine("Slide count: " + presentation.Slides.Count);
パスワード検出、検証、暗号化のワークフローについては、Password‑Protect Presentations を参照してください。暗号化されたプレゼンテーションが意図的に公開ドキュメント プロパティとともに保存されている場合、パスワードなしでそれらのプロパティを読み取ることができます。詳しくは Manage Presentation Properties をご覧ください。
大容量プレゼンテーションを開く
LoadOptions.BlobManagementOptions は、画像、音声、ビデオなどのバイナリ 大規模オブジェクト (BLOB) を Aspose.Slides がどのように処理するかを制御します。ソース ファイルをロックしたままにしたり、一時ファイルを許可したり、メモリに保持する BLOB データ量を制限したりできます。
以下の C# コードは、大きなプレゼンテーション(例として 2 GB)を読み込む方法を示しています:
using Aspose.Slides;
using Aspose.Slides.Export;
const string filePath = "large-presentation.pptx";
var loadOptions = new LoadOptions
{
BlobManagementOptions =
{
PresentationLockingBehavior = PresentationLockingBehavior.KeepLocked,
IsTemporaryFilesAllowed = true,
MaxBlobsBytesInMemory = 10 * 1024 * 1024
}
};
using var presentation = new Presentation(filePath, loadOptions);
presentation.Slides[0].Name = "Large presentation";
presentation.Save("large-presentation-copy.pptx", SaveFormat.Pptx);
Note
PresentationLockingBehavior.KeepLocked を使用すると、Presentation オブジェクトが破棄されるまでソース ファイルはロックされたままになります。そのオブジェクトが存続している間は、ソース ファイルを移動、上書き、削除しないでください。
Aspose.Slides は読み込み時に入力ストリームの内容をコピーすることがあります。大きなプレゼンテーションの場合、ファイル パスの方が一般にストリームよりも効率的です。追加のストレージおよびメモリ管理オプションについては、Manage BLOBs を参照してください。
外部リソースを制御する
LoadOptions.ResourceLoadingCallback は、IResourceLoadingCallback の実装を受け付けます。コールバックは置換データを提供したり、リソースをリダイレクトしたり、デフォルトローダーを使用したり、リソースをスキップしたりできます。これは、プレゼンテーションに外部画像が含まれ、アプリケーション固有のセキュリティやストレージ ルールに従って解決する必要がある場合に便利です。
using System;
using System.IO;
using Aspose.Slides;
internal static class OpenPresentationExample
{
private static void Main()
{
var loadOptions = new LoadOptions
{
ResourceLoadingCallback = new ImageLoadingHandler()
};
using var presentation = new Presentation("presentation-with-external-images.pptx", loadOptions);
Console.WriteLine("Slide count: " + presentation.Slides.Count);
}
private sealed class ImageLoadingHandler : IResourceLoadingCallback
{
public ResourceLoadingAction ResourceLoading(IResourceLoadingArgs args)
{
var isJpeg = args.OriginalUri.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase);
if (!isJpeg || !File.Exists("approved-image.jpg"))
{
return ResourceLoadingAction.Skip;
}
var imageData = File.ReadAllBytes("approved-image.jpg");
args.SetData(imageData);
return ResourceLoadingAction.UserProvided;
}
}
}
埋め込みバイナリ オブジェクトなしでプレゼンテーションを読み込む
プレゼンテーションには、アプリケーションが不要または保持したくない埋め込みバイナリ データが含まれることがあります。例としては:
- VBA プロジェクトは、IPresentation.VbaProject で利用できます;
- 埋め込み OLE データは、IOleEmbeddedDataInfo.EmbeddedFileData で利用できます;
- ActiveX コントロール データは、IControl.ActiveXControlBinary で利用できます。
LoadOptions.DeleteEmbeddedBinaryObjects を true に設定すると、読み込み時にこのバイナリ データが削除されます。サニタイズされた結果を保持するために、読み込んだプレゼンテーションを保存します。
このオプションは不要な埋め込みペイロードへの露出を減らしますが、完全なマルウェア検出やコンテンツサニタイズ システムではありません。
using Aspose.Slides;
using Aspose.Slides.Export;
var loadOptions = new LoadOptions
{
DeleteEmbeddedBinaryObjects = true
};
using var presentation = new Presentation("presentation-with-embedded-data.pptx", loadOptions);
presentation.Save("presentation-without-embedded-data.pptx", SaveFormat.Pptx);
FAQ
ファイルが破損していて開けないことはどう判断できますか?
Aspose.Slides は読み込み中に解析エラーまたは形式エラーの例外をスローします。この失敗をパスワードが正しくないエラーとは別に処理し、アプリケーションが原因を正確に報告できるようにします。
必要なフォントが見つからない場合はどうなりますか?
プレゼンテーションは依然として読み込めますが、レンダリングやエクスポート時にフォントが置き換えられる可能性があります。出力をより予測可能にするために、フォント置換を構成するか、カスタム フォントを提供することができます。
プレゼンテーションの読み込みは埋め込みメディアも読み込みますか?
埋め込みの音声や動画は、プレゼンテーション オブジェクト モデルを通じて利用可能になります。外部リソースは設定されたリソース読み込み動作に従って解決され、場所にアクセスできない場合は利用できないことがあります。