.NETでプレゼンテーションをロードする方法
Aspose.Slides FOSS for .NET は任意の .pptx ファイルを開き、その内容を検査し、PPTX に再保存するか、データを抽出することができます。このガイドでは、ファイルのオープン、スライドの反復処理、シェイプテキストの読み取り、そして保存のラウンドトリップについて説明します。
ステップバイステップガイド
ステップ 1: パッケージをインストール
dotnet add package Aspose.Slides.Fossステップ 2: 既存のプレゼンテーションを開く
new Presentation() にファイルパスを渡します。クリーンアップを確実にするために using 文を使用します。
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation("input.pptx");
Console.WriteLine($"Slide count: {prs.Slides.Count}");
prs.Save("output.pptx", SaveFormat.Pptx);ソースファイル内の不明なXMLパーツはそのまま保持されます:ライブラリはまだ理解できないコンテンツを削除しません。
ステップ 3: スライドを検査
すべてのスライドを反復し、インデックスを出力する:
using Aspose.Slides.Foss;
using var prs = new Presentation("deck.pptx");
for (int i = 0; i < prs.Slides.Count; i++)
{
var slide = prs.Slides[i];
int shapeCount = slide.Shapes.Count;
Console.WriteLine($"Slide {i}: {shapeCount} shapes");
}ステップ 4: シェイプ テキストを読む
シェイプを反復処理し、TextFrame を持つシェイプからテキストを読み取ります:
using Aspose.Slides.Foss;
using var prs = new Presentation("deck.pptx");
foreach (var slide in prs.Slides)
{
foreach (var shape in slide.Shapes)
{
if (shape is IAutoShape autoShape && autoShape.TextFrame != null)
{
string text = autoShape.TextFrame.Text;
if (!string.IsNullOrWhiteSpace(text))
Console.WriteLine($" Shape text: {text}");
}
}
}ステップ 5: ドキュメント プロパティの読み取り
prs.DocumentProperties からコア文書プロパティにアクセスする:
using Aspose.Slides.Foss;
using var prs = new Presentation("deck.pptx");
var props = prs.DocumentProperties;
Console.WriteLine($"Title: {props.Title}");
Console.WriteLine($"Author: {props.Author}");
Console.WriteLine($"Subject: {props.Subject}");ステップ6: 往復保存
プレゼンテーションを検査または変更した後、PPTX に保存し直します:
prs.Save("output.pptx", SaveFormat.Pptx);別のパスに保存すると新しいファイルが作成されます。同じパスに保存すると元のファイルが上書きされます。
一般的な問題と対処法
FileNotFoundException
作業ディレクトリに対して、.pptx ファイルへのパスが正しいか確認してください。堅牢なパス構築には Path.Combine を使用してください:
string path = Path.Combine(AppContext.BaseDirectory, "assets", "deck.pptx");
using var prs = new Presentation(path);Exception: File format is not supported
このライブラリは.pptx(Office Open XML)のみをサポートしています。レガシー.ppt(バイナリ PowerPoint 97-2003)ファイルはサポートされていません。
Shapes には TextFrame プロパティがありません
一部のシェイプ(Connector、PictureFrame)にはTextFrameがありません。IAutoShapeにキャストし、テキストにアクセスする前に null をチェックしてください。
よくある質問
ロードすると元のコンテンツがすべて保持されますか?
はい。未知のXMLパーツはラウンドトリップ保存時にそのまま保持されます。ライブラリはまだ認識できないXMLコンテンツを削除しません。
パスワードで保護された PPTX を読み込めますか?
このエディションでは、パスワードで保護された(暗号化された)プレゼンテーションはサポートされていません。
埋め込み画像を抽出できますか?
画像コレクションにアクセスします: prs.Images は ImageCollection を返します。各画像には、生の画像データを読み取るためのプロパティがあります。
MemoryStreamからのロードはサポートされていますか?
はい。Presentation コンストラクタは Stream を受け入れます:
using var stream = new MemoryStream(pptxBytes);
using var prs = new Presentation(stream);
Console.WriteLine($"Slides: {prs.Slides.Count}");