C#でPowerPointのハイパーリンクを追加、修正、削除する方法

今回はC#でPowerPointのスライドにハイパーリンクを追加する方法を紹介します。リンクを追加するには、テキストや画像などを対象にハイパーリンクを追加することができます。リンクの対象については、サイトのページ、メールのアドレスおよび指定されたスライドなどにジャンプできます。その他、この文章で紹介された既にスライドにあったリンクの編集、削除する方法を参照してもいいです。

使用すべきのプログラムクラスライブラリー:Free Spire.Presentation for .NET(無料版)

Dllファイルの取得と参照:

方法1  Free Spire.Presentation for .NETの公式サイトからアーカイブをダウンロードして、解凍したら「Bin」フォルダのプログラムを指定されたパスにインストールします。インストール完了したあと、パスの下の「Bin」フォルダにあるSpire.Presentation.dllファイルをプログラムを参照に追加し、using指令を追加します。

方法2 Nugetを通してインストールする

DLLを参照に追加した効果は以下のようになります:

f:id:uha_noki:20211008164022p:plain

f:id:uha_noki:20211008164039p:plain

C#コード一覧

  • PowerPointスライドにハイパーリンクを追加

using Spire.Presentation;

using Spire.Presentation.Drawing;

using System.Drawing;

 

namespace AddHyperlink

{

    class Program

    {

        static void Main(string args)

        {

            //Presentationインスタンスを初期化する

            Presentation PowerPoint = new Presentation();

 

            //スライドを追加して2番目のスライそにする(ドキュメントを作成するとデフォルトで一つのスライドを作る)

            PowerPoint.Slides.Append();

 

            //1番目のスライドを取得して形状を追加する

            ISlide slide1 = PowerPoint.Slides[0];

            IAutoShape shape = slide1.Shapes.AppendShape(ShapeType.Rectangle, new RectangleF(100, 100, 450, 200));

            shape.Fill.FillType = FillFormatType.Solid;

            shape.Fill.SolidColor.Color = Color.LightYellow;

            shape.ShapeStyle.LineColor.Color = Color.White;

 

            //文字列変数を編集する

            string s1 = "Google";

            string s2 = "は世界最大の捜索エンジンであり、情報と知識を中心としたインターネット統合サービス会社と世界をリードする人工知能プラットフォーム会社です。";

            string s3 = "詳細は2ページの概要を参照してください";

 

            //形状段落を取得(デフォルトでは空白の段落がある)

            TextParagraph paragraph = shape.TextFrame.TextRange.Paragraph;

            paragraph.Alignment = TextAlignmentType.Left;

 

            //文字列s1によりtr1を作成し、文字にWebアドレスに指すリンクを追加する

            TextRange tr1 = new TextRange(s1);

            tr1.ClickAction.Address = "https://www.google.com/";

            //tr1.ClickAction.Address = "123654zz@gmail.com";//メールアドレスに指す

 

            //文字列s2によりtr2を作成する

            TextRange tr2 = new TextRange(s2);

 

            //文字列s3によりtr3を作成し、文字に2番目のスライドに指すリンクを追加する

            TextRange tr3 = new TextRange(s3);

            ClickHyperlink link = new ClickHyperlink(PowerPoint.Slides[1]);

            tr3.ClickAction = link;

 

            //TextRangeを段落に追加する

            paragraph.TextRanges.Append(tr1);

            paragraph.TextRanges.Append(tr2);

            paragraph.TextRanges.Append(tr3);

 

            //段落のフォントを設置する

            foreach (TextRange tr in paragraph.TextRanges)

            {

                tr.LatinFont = new TextFont("Yu Mincho");

                tr.FontHeight = 20f;

                tr.IsBold = TriState.True;

                tr.Fill.FillType = FillFormatType.Solid;

                tr.Fill.SolidColor.Color = Color.Black;

            }

            //2番目のスライドを取得して形状を追加し、そして画像を形状に追加してWebアドレスに指すリンクを設置する

            ISlide slide2 = PowerPoint.Slides[1];

            RectangleF rect = new RectangleF(250, 175, 195, 130);

            IEmbedImage image = slide2.Shapes.AppendEmbedImage(ShapeType.Rectangle, @"tp.png", rect);

            ClickHyperlink hyperlink = new ClickHyperlink("https://www.google.com/");

            image.Click = hyperlink;

 

            //ドキュメントを保存する

            PowerPoint.SaveToFile("AddHyperlink.pptx", FileFormat.Pptx2010);

            System.Diagnostics.Process.Start("AddHyperlink.pptx");

        }

    }

}

スライドショーでハイパーリンクの追加効果を確認できます。

テキストハイパーリンク追加効果:

f:id:uha_noki:20211008164104p:plain

画像ハイパーリンク追加効果:

f:id:uha_noki:20211008164117p:plain

  • PowerPointスライドのハイパーリンクを編集、削除

using Spire.Presentation;

 

namespace ModifyHyperlink

{

    class Program

    {

        static void Main(string args)

        {

            //Presentationインスタンスを初期化する

            Presentation PowerPoint = new Presentation();

 

            //既にあったドキュメントをロードする

            PowerPoint.LoadFromFile("AddHyperlink.pptx");

 

            //1番目のスライドを取得する

            ISlide slide = PowerPoint.Slides[0];

 

            //shapeをトラバーサル

            foreach (IShape shape in slide.Shapes)

            {

                //autoshapeかどうかを判断する

                if (shape is IAutoShape)

                {

                    //shapeをautoshapeに転換する

                    IAutoShape autoShape = shape as IAutoShape;

 

                    //autoshapeのparagraphをトラバーサル

                    foreach (TextParagraph tp in autoShape.TextFrame.Paragraphs)

                    {

                        //paragraphの下はtextrangeの存在を判断する

                        if (tp.TextRanges != null && tp.TextRanges.Count > 0)

                        {

                            //textrangeをトラバーサル

                            for (int tpcount = 0; tpcount < tp.TextRanges.Count; tpcount++)

                            {

                                //テキストの存在及びClickActionとリンクが含んでいるかどうかを判断する

                                if (tp.TextRanges[tpcount].ClickAction != null && !string.IsNullOrWhiteSpace(tp.TextRanges[tpcount].ClickAction.Address) && !string.IsNullOrWhiteSpace(tp.TextRanges[tpcount].Text))

                                {

                                    //http或いはhttpsリンクの存在を判断する

                                    if (tp.TextRanges[tpcount].ClickAction.Address.ToLower().Contains("http") || tp.TextRanges[tpcount].ClickAction.Address.ToLower().Contains("https"))

                                    {

                                        //リンクを再アロケーション

                                        tp.TextRanges[tpcount].ClickAction.Address = "https://ja.wikipedia.org/";

 

                                        //ハイパーリンクテキストを再設置する

                                        tp.TextRanges[tpcount].Text = "ウィキペディア";

 

                                        //ハイパーリンクを削除する

                                        //tp.TextRanges[tpcount].ClickAction = null;

                                    }

                                }

                            }

                        }

                    }

                }

            }

            //ドキュメントを保存する

            PowerPoint.SaveToFile("ModifyHyperlink.pptx", FileFormat.Pptx2010);

            System.Diagnostics.Process.Start("ModifyHyperlink.pptx");

        }

    }

}

ハイパーリンクの修正効果:

f:id:uha_noki:20211008164158p:plain

ハイパーリンクの削除効果:

f:id:uha_noki:20211008164211p:plain

以上は今回のC#でPowerPointのハイパーリンクを追加、修正、削除する方法でございます、読んでいただきありがとうございます!