.NETでプレゼンテーションをロードする方法

.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 プロパティがありません

一部のシェイプ(ConnectorPictureFrame)にはTextFrameがありません。IAutoShapeにキャストし、テキストにアクセスする前に null をチェックしてください。


よくある質問

ロードすると元のコンテンツがすべて保持されますか?

はい。未知のXMLパーツはラウンドトリップ保存時にそのまま保持されます。ライブラリはまだ認識できないXMLコンテンツを削除しません。

パスワードで保護された PPTX を読み込めますか?

このエディションでは、パスワードで保護された(暗号化された)プレゼンテーションはサポートされていません。

埋め込み画像を抽出できますか?

画像コレクションにアクセスします: prs.ImagesImageCollection を返します。各画像には、生の画像データを読み取るためのプロパティがあります。

MemoryStreamからのロードはサポートされていますか?

はい。Presentation コンストラクタは Stream を受け入れます:

using var stream = new MemoryStream(pptxBytes);
using var prs = new Presentation(stream);
Console.WriteLine($"Slides: {prs.Slides.Count}");

参照

 日本語