在操作 Word 文档时,您有时可能会遇到需要替换文档中的图片的情况。例如,在使用模板创建简历时,您可能需要用自己的照片替换模板中的个人照片。本文将演示如何使用 Spire.Doc for .NET 通过 C# 替换 Word 文档中的图片。
安装 Spire.Doc for .NET
首先,您需要将 Spire.Doc for.NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从此链接下载,也可以通过 NuGet 安装。
PM> Install-Package Spire.Doc
C# 将 Word 中的图片替换为新图片
要想用另一张图片替换 Word 文档中的图片,需要遍历文档中的元素,找到图片并将其添加到列表中,然后从列表中获取要替换的图片,并调用 DocPicture.LoadImage() 方法将其替换为另一张图片。具体步骤如下:
- 创建 Document 类的对象。
- 使用 Document.LoadFromFile() 方法加载 Word 文档。
- 创建一个列表来存储图片。
- 遍历文档中的所有节。
- 遍历每一节中的所有段落。
- 遍历每个段落中的所有子对象。
- 查找图片并将其添加到列表中。
- 获取列表中的指定图片并使用 DocPicture.LoadImage() 方法将其替换为另一张图片。
- 使用 Document.SaveToFile() 方法保存结果文档。
- C#
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Collections;
using System.Drawing;
namespace ReplaceImageWithImage
{
internal class Program
{
static void Main(string[] args)
{
//创建Document对象
Document doc = new Document();
//加载Word文档
doc.LoadFromFile("示例.docx");
//创建一个列表
ArrayList pictures = new ArrayList();
//遍历文档中所有节
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("图片.png"));
//保存结果文件
doc.SaveToFile("替换图片.docx", FileFormat.Docx2013);
}
}
}
C# 将 Word 中的图片替换为文本
Spire.Doc for .NET 没有提供用文本替换图片的直接方法,但您可以通过在图片位置插入文本,然后删除文档中的图片来实现这一功能。以下是用文本替换 Word 文档中所有图片的详细步骤:
- 创建 Document 类的对象。
- 使用 Document.LoadFromFile() 方法加载 Word 文档。
- 遍历文档中的所有节。
- 遍历每一节中的所有段落。
- 创建一个列表来存储图片。
- 遍历每个段落中的所有子对象。
- 查找图片并将其添加到列表中。
- 遍历列表中的图片,然后使用 Paragraph.ChildObjects.Indexof() 方法获取段落中图片的索引。
- 初始化 TextRange 类的实例,并通过 TextRange.Text 属性设置文本范围的文本。
- 使用 Paragraph.ChildObjects.Insert() 方法在图片位置插入文本。
- 使用 Paragraph.ChildObjects.Remove() 方法删除段落中的图片。
- 使用 Document.SaveToFile() 方法保存结果文档。
- C#
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Collections;
namespace ReplaceImageWithText
{
internal class Program
{
static void Main(string[] args)
{
//创建Document对象
Document doc = new Document();
//加载Word文档
doc.LoadFromFile("示例.docx");
int j = 1;
//遍历文档中所有节
foreach (Section sec in doc.Sections)
{
//遍历每一节中所有段落
foreach (Paragraph para in sec.Paragraphs)
{
//创建一个列表
ArrayList pictures = new ArrayList();
//查找图片并将其添加到列表中
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("这是图片-{0}", j);
para.ChildObjects.Insert(index, range);
para.ChildObjects.Remove(pic);
j++;
}
}
}
//保存结果文件
doc.SaveToFile("文字替换图片.docx", FileFormat.Docx);
}
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。