C#を使用してPowerPointドキュメントのすべてのタイトルを取得する方法

PowerPointドキュメントの中で、タイトルは不可欠な部分であり、適当にタイトルを使て、長いPowerPointドキュメントがちゃんと整理されたように見やすくなり、解説している人が次に大体何の内容を出すのかを聴衆たちにヒントになります。

 

操作を始める前に、先ずは一つの概念、つまりプレースホルダーを理解すべきです。PowerPointドキュメントには複数の図形が存在できることが分かっているでしょう、そして各図形には独自のプレースホルダー(placeholder)があります、各図形のプレースホルダのタイプもそれぞれ違います。例えば、テーブルのプレースホルダのタイプはtableで、画像のプレースホルダのタイプはpictureで、メディアファイルのプレースホルダのタイプはMediaで、そしてタイトルのプレースホルダのタイプはtitleです。今回の記事で図形のプレースホルダのタイプを判断して、ドキュメント内のタイトルを取得する方法を紹介します。

 

PowerPointドキュメントにはさまざまな種類のタイトルがあります。PowerPointドキュメントを作成してスライドを追加すると、中央タイトル(Centered title)、サブタイトル(Subtitle)、および他のスライドのタイトル(title)がスライドの中央に表示されます。以下の画像で直感的に見ましょう:

f:id:uha_noki:20211109180223p:plain

それからこのPowerPointドキュメントに何か内容を追加します:

f:id:uha_noki:20211109180239p:plain

必要なコンポーネント:

Visual Studioおよび無料版のPowerPointコンポーネント、Free Spire.Presentation

コンポーネントがインストール完了したら、Visual Studioを開き、新しいプロジェクトを作成してSpire.Presentation.dllを参照に追加します。すべてのコードは以下になります:

using System;

using System.Collections.Generic;

using Spire.Presentation;

namespace GetPresentationTitle

{

    class Program

    {

        static void Main(string[] args)

        {

            //PowerPointのインスタントを作成してPowerPointドキュメントをロードする

            Presentation ppt = new Presentation();

            ppt.LoadFromFile("test.pptx");

            //listのインスタントを作成する

            List<IShape> shapelist = new List<IShape>();

            //PowerPointドキュメントのすべてのスライドと各スライドのすべての図形をトラバースし、プレースホルダーの種類がタイトルである図形をリストに追加する

            foreach (ISlide slide in ppt.Slides)

            {

                foreach (IShape shape in slide.Shapes)

                {

                    if (shape.Placeholder != null)

                    {

                        switch (shape.Placeholder.Type)

                        {

                            case PlaceholderType.Title:

                                shapelist.Add(shape);

                                break;

                            case PlaceholderType.CenteredTitle:

                                shapelist.Add(shape);

                                break;

                            case PlaceholderType.Subtitle:

                                shapelist.Add(shape);

                                break;

                        }

                    }

                }

            }

            //リストをトラバースして、リスト内のすべての形状の内部テキストを取得する

            for (int i = 0; i < shapelist.Count; i++)

            {

                IAutoShape shape1 = shapelist[i] as IAutoShape;

                Console.WriteLine(shape1.TextFrame.Text);

            }

            Console.ReadKey();

        }

    }

}

結果は以下のように:

f:id:uha_noki:20211109180300p:plain

図形のプレースホルダーのタイプを判断するのはドキュメントのタイトルを取得できるだけではなく、また画像、動画、テーブルおよびフッターまでも取得できます。最後まで読んでいただき、ありがとうございました、ではまた!