C# 替换Word文档中的图片

图片是Word文档中非常常见的一种元素,我们在处理Word文档时经常会对图片进行如添加,提取,替换和删除等操作。之前我已经介绍过如何提取Word文档中的图片,这篇文章将介绍如何使用C#和免费Word组件Free Spire.Doc来替换Word文档中的图片。

我们知道图片替换可分为两种方式,文字替换图片和图片替换图片,接下来我将分两部分对它们进行介绍。

一、文字替换图片

下面的示例展示了如何使用文字替换Word文档中的所有图片:

//加载文档
Document document = new Document(@"模板.docx");
int j = 1;
//遍历文档的所有section
foreach (Section sec in document.Sections)
{
    //遍历section中的所有段落
   foreach (Paragraph para insec.Paragraphs)
    {
       List<DocumentObject> pictures = new List<DocumentObject>();
        //遍历段落中的所有子元素
       foreach (DocumentObject docObj inpara.ChildObjects)
        {
            //获取段落中的图片
           if(docObj.DocumentObjectType == DocumentObjectType.Picture)
            {
               pictures.Add(docObj);
            }
        }
       foreach (DocumentObject pic inpictures)
        {
            //获取图片的位置(index)
           int index =para.ChildObjects.IndexOf(pic);
            //插入文本到图片位置
            TextRange range = new TextRange(document);
           range.Text = string.Format("图片 {0}", j);
           para.ChildObjects.Insert(index, range);
            //删除图片
           para.ChildObjects.Remove(pic);
           j++;
        }
    }
}
//保存文档
document.SaveToFile(@"文本替换.docx", FileFormat.Docx);

替换前后对比图:

 C# 替换Word文档中的图片_替换

二、图片替换图片

下面的示例展示了如何使用图片替换Word文档中指定的某一张图片:

//加载文档
Document document = new Document(@"模板.docx");
 
//遍历文档第一个section的所有段落
foreach (Paragraphparagraph in document.Sections[0].Paragraphs)
{
   //遍历段落的所有子元素
   foreach (DocumentObject docObj inparagraph.ChildObjects)
{
    //获取段落中的图片
       if(docObj.DocumentObjectType == DocumentObjectType.Picture)
        {
            DocPicture picture = docObj as DocPicture;      
           if(picture.Title == "Figure 1")
            {
                //替换标题为“Figure1”的图片
               picture.LoadImage(Image.FromFile("玫瑰.jpg"));
            }
        }
    }
}
 
//Saves the Word document
document.SaveToFile("图片替换.docx");
替换前后对比图:

C# 替换Word文档中的图片_Word文档_02

感谢阅读,希望本文能给大家带来帮助!