C# 中使用 Word 文档对图像进行操作
Download Files: ImageOperationsInWord.zip
简介
在这篇文章中我们可以学到在 C# 程序中使用一个 Word 文档对图像的各种操作。图像会比阅读文字更有吸引力,而且图像是与内容紧密相关的。有时图像可以将内容描述的更为清晰,就像使用图表显示某一周期内的数据变化。
Spire.Doc for .NET 是一个的基于 .NET 的 专业 Word 组件,它不仅可以在脱离微软 office 自动化的情况下快速地生成、打开、修改、保存 Word 文档 ,还支持用户使用 C# 将图像插入 Word 并根据页面设置它的大小。这篇就是介绍给大家一个简单的方法来插入图像 ---- 使用 Spire.Doc for .NET。
以下就是我们要学习的操作步骤:
1、 在 Word 文档中插入一张图片。
2、 从 Word 文档中提取一张图片。
3、 在 Word 文档中将图片替换成文字。
在进行这些操作之前我们要先创建 Word 文档。在这里我使用 Spire.Doc for .NET 来创建文档并完成后续的操作。
创建一个控制台程序来做演示。根据以下步骤:
1、 打开 Visual Studio
2、 "File" -> "New" -> "Project..."
3、 选择 C# 语言然后选择控制台程序并命名为 “ImageOperationInWord”
4、 单击 OK 。
在 Word 中插入图片
首先,创建新的 Word 文档并为之添加章节和段。然后,使用 p.AppendPicture(Image) 方法将图像插入到新段中。设置图像的高度和宽度属性来规定图片大小。使用以下代码来用 C# 把图片插入到 Word 中。
Namespace 使用:
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Drawing;
在 Word 文档中创建并插入图像:
// Create Document
Document document = new Document();
Section s = document.AddSection();
Paragraph p = s.AddParagraph();
// Insert Image and Set Its Size
DocPicture Pic = p.AppendPicture(Image.FromFile( @" D:\C# Corner.png " ));
Pic.Width = 500 ;
Pic.Height = 500 ;
// Save and Launch
document.SaveToFile( " Image.docx " , FileFormat.Docx);
System.Diagnostics.Process.Start( " Image.docx " );
}
结果
从 Word 文档中提取图片
在这里我们学习下如何在 C# 中从已存在的 Word 文档中提取图片并将图片保存到指定的路径。图片是一种属于段落项目的文档对象。 Spire.Doc for .NET 提供了一个 DocumentObject 类来存储文档中的图像,并且还提供 DocPicture 类来获得和设置文档中的图像。在这里我使用了 ExtractImages.docx 并在其中保存了两幅图。在输出图像文件夹中我们可以看到红色框中的来自 Word 文档的两幅图像。
提取 Word 图片代码:
{
// Load document
Document document = new Document( @" D:\ExtractImages.docx " );
int index = 0 ;
// Get Each Section of Document
foreach (Section section in document.Sections)
{
// Get Each Paragraph of Section
foreach (Paragraph paragraph in section.Paragraphs)
{
// Get Each Document Object of Paragraph Items
foreach (DocumentObject docObject in paragraph.ChildObjects)
{
// If Type of Document Object is Picture, Extract.
if (docObject.DocumentObjectType == DocumentObjectType.Picture)
{
DocPicture pic = docObject as DocPicture;
String imgName = String.Format( @" D:\Extracted_Image-{}.png " , index);
// Save Image
pic.Image.Save(imgName, System.Drawing.Imaging.ImageFormat.Png);
index++;
}
}
}
}
}
结果
在 Word 文档中将图片替换为文字
我们来看下 Spire.Doc 是如何帮助开发者们解决他们关于 office 技术的程序问题的。观察以上问题的描述,我们最终是想使用相应的 “C# Corner Demo Example - {image index}” 来将 Word 文件中的每幅图都替换掉。我们还是用下面的演示代码来解决吧。
Word 文档中的图片替换为文字的代码:
private static void ReplaceImageWithText()
{
Document doc = new Document( @" D:\ExtractImages.docx " );
int j = 1 ;
foreach (Section sec in doc.Sections)
{
foreach (Paragraph para in sec.Paragraphs)
{
List<DocumentObject> images = new List<DocumentObject>();
foreach (DocumentObject docObj in para.ChildObjects)
{
if (docObj.DocumentObjectType == DocumentObjectType.Picture)
{
images.Add(docObj);
}
}
foreach (DocumentObject pic in images)
{
int index = para.ChildObjects.IndexOf(pic);
TextRange range = new TextRange(doc);
range.Text = string .Format( " C# Corner Demo Example {} " , j);
para.ChildObjects.Insert(index, range);
para.ChildObjects.Remove(pic);
j++;
}
}
doc.SaveToFile( @" D:\result.docx " , FileFormat.Docx);
System.Diagnostics.Process.Start( @" D:\result.docx " );
}
在替换前
将图片替换为文字后
注意:更详细的代码请下载最上面的附加的压缩包。
总结
希望大家看完后都理解了如何以编程方式在 Word 文档中对图像进行操作。如果大家有其他的关于图像操作的好建议,欢迎讨论哦。
关于 Spire.Doc 的更多内容点击 这里 。