チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル».NET»Spire.Doc for .NET»画像と図形»C#/VB.NET:Word の画像を置き換える方法
2023-01-28

C#/VB.NET:Word の画像を置き換える方法

場合によっては、Word ドキュメント内の画像を別の画像やテキストに置き換えたい場合があります。たとえば、履歴書を作成する場合、テンプレートの元にある画像を自分の写真に置き換える必要があります。この記事では、Spire.Doc for .NET を使用して、C# および VB.NET でプログラムによって Word の画像を置き換える方法を示します。

Spire.Doc for .NET をインストールします

まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.Doc

C# および VB.NET で Word の画像を新しい画像に置き換る

Word 内の画像を別の画像に置き換えるには、ドキュメントの要素をループします。画像を検索してリストに追加します。次に、置換する画像をリストから取得し、DocPicture.LoadImage() メソッドを使用して別の画像に置換します。詳細な手順は次のとおりです。

  • Document クラスのインスタンスを初期化します。
  • Document.LoadFromFile() メソッドを使用して Word ドキュメントをロードします。
  • List クラスのインスタンスを初期化します。
  • ドキュメント内のすべてのセクションをループします。
  • 各セクションのすべての段落をループします。
  • 各段落のすべてのサブオブジェクトをループします。
  • 画像を検索してリストに追加します。
  • リストから特定の画像を取得し、DocPicture.LoadImage() メソッドを使用して別の画像に置換します。
  • Document.SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C#
  • VB.NET
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Collections.Generic;
using System.Drawing;

namespace ReplaceImageWithImage
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //Documentクラスのインスタンスを初期化する
            Document doc = new Document();
            //Wordドキュメントをロードする
            doc.LoadFromFile("Sample.docx");

            //Listクラスのインスタンスを初期化する
            List pictures = new List();

            //ドキュメント内のすべてのセクションをループする
            foreach (Section sec in doc.Sections)
            {
                //各セクションのすべての段落をループする
                foreach (Paragraph para in sec.Paragraphs)
                {
                    //各段落内のすべてのサブオブジェクトをループする
                    foreach (DocumentObject docObj in para.ChildObjects)
                    {
                        //画像を検索してリストに追加する
                        if (docObj.DocumentObjectType == DocumentObjectType.Picture)
                        {
                            pictures.Add(docObj);
                        }
                    }
                }
            }

            //リストの最初の画像を別の画像に置き換える
            DocPicture picture = pictures[0] as DocPicture;
            picture.LoadImage(Image.FromFile(@"doc.png"));

            //結果ドキュメントを保存する
            doc.SaveToFile("ReplaceWithNewImage.docx", FileFormat.Docx2013);

        }
    }
}
Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields
Imports System.Collections.Generic

Namespace ReplaceImageWithImage
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            'Documentクラスのインスタンスを初期化する
            Dim doc As Document = New Document()
            'Wordドキュメントをロードする
            doc.LoadFromFile("Sample.docx")

            'Listクラスのインスタンスを初期化する
            Dim pictures As List(Of DocumentObject) = New List(Of DocumentObject)()

            'ドキュメント内のすべてのセクションをループする
            For Each sec As Section In doc.Sections
                '各セクションのすべての段落をループする
                For Each para As Paragraph In sec.Paragraphs
                    '各段落内のすべてのサブオブジェクトをループする
                    For Each docObj As DocumentObject In para.ChildObjects
                        '画像を検索してリストに追加する
                        If docObj.DocumentObjectType Is DocumentObjectType.Picture Then
                            pictures.Add(docObj)
                        End If
                    Next
                Next
            Next

            'リストの最初の画像を別の画像に置き換える
            Dim picture As DocPicture = TryCast(pictures(0), DocPicture)
            picture.LoadImage(Image.FromFile("doc.png"))

            '結果ドキュメントを保存する
            doc.SaveToFile("ReplaceWithNewImage.docx", FileFormat.Docx2013)

        End Sub
    End Class
End Namespace

C#/VB.NET:Word の画像を置き換える方法

C# および VB.NET で Word の画像をテキストに置き換える

Spire.Doc は画像をテキストに直接置き換える方法を提供していない。しかし、この機能は、画像の位置にテキストを挿入し、ドキュメントから画像を削除することで実現できます。次の手順では、Word 内のすべての画像をテキストに置換き換える方法を示します。

  • Document クラスのインスタンスを初期化します。
  • Document.LoadFromFile() メソッドを使用して Word ドキュメントをロードします。
  • ドキュメント内のすべてのセクションをループします。
  • 各セクションのすべての段落をループします。
  • List クラスのインスタンスを初期化します。
  • 各段落のすべてのサブオブジェクトをループします。
  • 画像を検索してリストに追加します。
  • リスト内の画像をループします。
  • Paragraph.ChildObjects.Indexof() メソッドを使用して、段落の画像のインデックスを取得します。
  • TextRange クラスのインスタンスを初期化し、TextRange.Text プロパティを使用してテキスト範囲のテキストを設定します。
  • Paragraph.ChildObjects.Insert() メソッドを使用して、画像の位置にテキスト範囲を挿入します。
  • Paragraph.ChildObjects.Remove() メソッドを使用して段落から画像を削除します。
  • Document.SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C#
  • VB.NET
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Collections.Generic;

namespace ReplaceImageWithText
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //Documentクラスのインスタンスを初期化する
            Document doc = new Document();
            //Wordドキュメントをロード する
            doc.LoadFromFile("Sample.docx");

            int j = 1;
            //ドキュメント内のすべてのセクションをループする
            foreach (Section sec in doc.Sections)
            {
                //各セクションのすべての段落をループする
                foreach (Paragraph para in sec.Paragraphs)
                {
                    //Listクラスのインスタンスを初期化する
                    List pictures = new List();
                    //画像を検索してリストに追加する
                    foreach (DocumentObject docObj in para.ChildObjects)
                    {
                        if (docObj.DocumentObjectType == DocumentObjectType.Picture)
                        {
                            pictures.Add(docObj);
                        }
                    }

                    //リスト内のすべての画像をループし、テキストに置き換える
                    foreach (DocumentObject pic in pictures)
                    {
                        int index = para.ChildObjects.IndexOf(pic);
                        TextRange range = new TextRange(doc);
                        range.Text = string.Format("Image-{0}", j);
                        para.ChildObjects.Insert(index, range);
                        para.ChildObjects.Remove(pic);
                        j++;
                    }
                }
            }

            //結果ドキュメントを保存する
            doc.SaveToFile("ReplaceWithText.docx", FileFormat.Docx);
        }
    }
}
Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields
Imports System.Collections.Generic

Namespace ReplaceImageWithText
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            'Documentクラスのインスタンスを初期化する
            Dim doc As Document = New Document()
            'Wordドキュメントをロード する
            doc.LoadFromFile("Sample.docx")

            Dim j = 1
            'ドキュメント内のすべてのセクションをループする
            For Each sec As Section In doc.Sections
                '各セクションのすべての段落をループする
                For Each para As Paragraph In sec.Paragraphs
                    'Listクラスのインスタンスを初期化する
                    Dim pictures As List(Of DocumentObject) = New List(Of DocumentObject)()
                    '画像を検索してリストに追加する
                    For Each docObj As DocumentObject In para.ChildObjects
                        If docObj.DocumentObjectType Is DocumentObjectType.Picture Then
                            pictures.Add(docObj)
                        End If
                    Next

                    'リスト内のすべての画像をループし、テキストに置き換える
                    For Each pic As DocumentObject In pictures
                        Dim index As Integer = para.ChildObjects.IndexOf(pic)
                        Dim range As TextRange = New TextRange(doc)
                        range.Text = String.Format("Image-{0}", j)
                        para.ChildObjects.Insert(index, range)
                        para.ChildObjects.Remove(pic)
                        j += 1
                    Next
                Next
            Next

            '結果ドキュメントを保存する
            doc.SaveToFile("ReplaceWithText.docx", FileFormat.Docx)
        End Sub
    End Class
End Namespace

C#/VB.NET:Word の画像を置き換える方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Read 817 times