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);
替换前后对比图:
二、图片替换图片
下面的示例展示了如何使用图片替换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");
替换前后对比图:
感谢阅读,希望本文能给大家带来帮助!