在句子之间使用C#在word中插入图像

Inserting images in word using C# between the sentence

我有一个 MS word 文件,里面有一些句子,我需要在行与行之间插入一些图像。当我在 Microsoft.Office.Interop.Word 中使用 AddPicture 方法时,我可以插入图像但不能插入特定位置。

除了 AddPicture 将图像插入现有 word 文件外,我没有找到任何插入方法。 我正在尝试在 apple 之后的特定行之后插入一张图片,应该有一张 apple 的图片

这里我正在创建一个段落并尝试添加图像。这是我的初始文件:

这包含包含单词 apple、mango 和 grape 的段落。

这是我的代码的输出(如下)

图像应插入到苹果行之后 所需输出:

Required Output

using System;
using System.Collections.Generic;
using System.Reflection;
using System.Reflection.Metadata;
using Word =Microsoft.Office.Interop.Word;
using System.IO;
namespace ConsoleApp2 
{
    class Program
    {
        static void Main(string[] args)
        {
            Word.Application ap = new Word.Application();
            Word.Document document = ap.Documents.Open(@"C:\Users\ermcnnj\Desktop\Doc1.docx");
            //document.InlineShapes.AddPicture(@"C:\Users\ermcnnj\Desktop\apple.png");
            String read = string.Empty;
            List<string> data = new List<string>();
            for (int i = 0; i < document.Paragraphs.Count; i++)
            {
                string temp = document.Paragraphs[i + 1].Range.Text.Trim();
                if (temp != string.Empty && temp.Contains("Apple"))
                {
                    var pPicture = document.Paragraphs.Add();
                    pPicture.Format.SpaceAfter = 10f;
                    document.InlineShapes.AddPicture(@"C:\Users\ermcnnj\Desktop\apple.png", Range: pPicture.Range);
                }

            }

        }
    }
}

以上是我使用的代码

以下代码片段说明了如何完成此操作。注意。为了清楚起见,仅设置要查找的文本已被简化——可能需要指定许多其他属性;阅读 Word 语言参考中的 Find 功能。

如果找到搜索词,与 Find 关联的 Range 会更改为找到的词,并且可以采取进一步的操作。在这种情况下,在找到的术语之后插入一个新的(空)段落。 (问题指定术语是段落的全部内容,所以这就是本示例所假设的!)然后 Range 被移动到这个新段落并插入 InlineShape

注意图形是如何分配给 InlineShape 对象的。如果需要对此对象执行任何操作,请使用对象变量 ils.

Word.Application ap = new Word.Application();
Word.Document document = ap.Documents.Open(@"C:\Users\ermcnnj\Desktop\Doc1.docx");

Word.Range rng = document.Content;
Word.Find wdFind = rng.Find;

wdFind.Text = "apple";
bool found = wdFind.Execute();

if (found)
{
    rng.InsertAfter("\n");
    rng.MoveStart(Word.WdUnits.wdParagraph, 1);
    Word.InlineShape ils = rng.InlineShapes.AddPicture(@"C:\Test\avatar.jpg", false, true, rng);
 }