Spire.Doc支持在Word文档中对图片进行多种操作,如添加,提取,替换和删除等。本文主要介绍如何使用Spire.Doc替换Word文档中的图片。
在Spire.Doc中,图片替换包含文本替换图片和图片替换图片两种方式,以下部分将对这两种方式逐一进行介绍。
文本替换图片
C#
//加载文档
Document document = new Document(@"模板.docx");
int j = 1;
//遍历文档的所有section
foreach (Section sec in document.Sections)
{
//遍历section中的所有段落
foreach (Paragraph para in sec.Paragraphs)
{
List<object> pictures = new List<object>();
//遍历段落中的所有子元素
foreach (DocumentObject docObj in para.ChildObjects)
{
//获取段落中的图片
if (docObj.DocumentObjectType == DocumentObjectType.Picture)
{
pictures.Add(docObj);
}
}
foreach (DocumentObject pic in pictures)
{
//获取图片的位置(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);
VB.NET
'加载文档
Dim document As Document = New Document("模板.docx")
Dim j As Integer = 1
'遍历文档的所有section
For Each sec As Section In document.Sections
'遍历section中的所有段落
For Each para As Paragraph In sec.Paragraphs
Dim pictures As List(Of Object) = New List(Of Object)
'遍历段落中的所有子元素
For Each docObj As DocumentObject In para.ChildObjects
'获取段落中的图片
If (docObj.DocumentObjectType = DocumentObjectType.Picture) Then
pictures.Add(docObj)
End If
Next
For Each pic As DocumentObject In pictures
'获取图片的位置(index)
Dim index As Integer = para.ChildObjects.IndexOf(pic)
'插入文本到图片位置
Dim range As TextRange = New TextRange(document)
range.Text = String.Format("图片{0}", j)
para.ChildObjects.Insert(index, range)
'删除图片
para.ChildObjects.Remove(pic)
j = (j + 1)
Next
Next
Next
'保存文档
document.SaveToFile("文本替换.docx", FileFormat.Docx)
替换前后对比图:
图片替换图片
C#
//加载文档
Document document = new Document(@"模板.docx");
//遍历文档第一个section的所有段落
foreach (Paragraph paragraph in document.Sections[0].Paragraphs)
{
//遍历段落的所有子元素
foreach (DocumentObject docObj in paragraph.ChildObjects)
{
//获取段落中的图片
if (docObj.DocumentObjectType == DocumentObjectType.Picture)
{
DocPicture picture = docObj as DocPicture;
if (picture.Title == "Figure 1")
{
//替换标题为“Figure 1”的图片
picture.LoadImage(Image.FromFile("玫瑰.jpg"));
}
}
}
}
//Saves the Word document
document.SaveToFile("图片替换.docx");
VB.NET
'加载文档
Dim document As Document = New Document("模板.docx")
'遍历文档第一个section的所有段落
For Each paragraph As Paragraph In document.Sections(0).Paragraphs
'遍历段落的所有子元素
For Each docObj As DocumentObject In paragraph.ChildObjects
'获取段落中的图片
If (docObj.DocumentObjectType = DocumentObjectType.Picture) Then
Dim picture As DocPicture = CType(docObj,DocPicture)
If (picture.Title = "Figure 1") Then
'替换标题为“Figure 1”的图片
picture.LoadImage(Image.FromFile("玫瑰.jpg"))
End If
End If
Next
Next
'保存文档
document.SaveToFile("图片替换.docx")
替换前后对比图: