如何在 C# 中向 DOCX 添加图像

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronWord 提供了 ImageContent 类,用于在 DOCX 文件中插入图像(.jpg、.png、.bmp、.tiff、.gif),并可自定义宽度、高度和文本封装等属性。 使用 IronWord 将图像添加到 Word 文档中,实现文档自动化和报告生成。

as-heading:2(快速入门:在 C# 中为 DOCX 添加图像)

1.通过 NuGet 软件包管理器安装 IronWord 2.创建一个新的 WordDocument 实例 3.使用 ImageContent 类加载图片 4.使用 AddImage() 将图像添加到文档中 5.将文档保存为 DOCX

Nuget Icon立即开始使用 NuGet 创建 PDF 文件:

  1. 使用 NuGet 包管理器安装 IronWord

    PM > Install-Package IronWord

  2. 复制并运行这段代码。

    using IronWord;
    using IronWord.Models;
    
    // Create new document
    WordDocument doc = new WordDocument();
    
    // Add image
    ImageContent image = new ImageContent("photo.jpg");
    doc.AddImage(image);
    
    // Save document
    doc.SaveAs("document-with-image.docx");
  3. 部署到您的生产环境中进行测试

    立即开始在您的项目中使用 IronWord,免费试用!
    arrow pointer

试用 IronWord


如何在 DOCX 中添加图片?

使用文件路径引用图片。 首先,以字符串文件路径实例化 ImageContent 类。 在整个文件中使用 image 变量来修改宽度和高度等属性。 使用 AddImage() 函数将图像添加到 .docx 文件中。 导出文档并保存在本地。

下面的示例在文档中添加了一张图片,但没有任何父节点。 支持的文件格式包括 .jpg、.png、.bmp、.tiff 和 .gif。 这种灵活性使您可以使用任何常见的图像格式。

提示将图像作为子元素插入段落中,以改善文档层次结构。 该段定义了文本换行和其他文本格式属性。 这种方法可以更好地控制图片的位置,并使图片与周围的文字保持流畅

:path=/static-assets/word/content-code-examples/how-to/add-image-insert-image.cs
using IronWord;
using IronWord.Models;
using IronWord.Models.Enums;

// initializing docx file
WordDocument doc = new IronWord.WordDocument();

// instantiating image file
IronWord.Models.ImageContent image = new IronWord.Models.ImageContent("sample-image.jpg");

// modifying image properties
image.Width = 200;
image.Height = 200;

// AddImage function saving the image
doc.AddImage(image);

// Save and export the file
doc.SaveAs("inserted-image.docx");
Imports IronWord
Imports IronWord.Models
Imports IronWord.Models.Enums

' Initializing docx file
Dim doc As New IronWord.WordDocument()

' Instantiating image file
Dim image As New IronWord.Models.ImageContent("sample-image.jpg")

' Modifying image properties
image.Width = 200
image.Height = 200

' AddImage function saving the image
doc.AddImage(image)

' Save and export the file
doc.SaveAs("inserted-image.docx")
$vbLabelText   $csharpLabel
Word文档,显示插入的夜间城市天际线图像,主页选项卡功能区显示格式选项

支持哪些图像格式?

支持的文件格式:.jpg、.png、.bmp、.tiff 和 .gif。 每种格式在插入时都要保持其质量。 JPEG 最适用于照片。PNG 支持徽标和图形的透明度。 BMP 可提供未压缩的质量。 TIFF 适合高质量的打印文档。 GIF 允许使用简单的动画(在静态文档中只显示第一帧)。

图像在文档中的位置?

图片默认添加在当前光标位置,不包含任何父节点。 为了精确定位,在段落中插入图片作为子元素。这样可以更好地控制文本流,并将图片与文档结构融为一体。

为什么使用 ImageContent 类?

ImageContent 类以结构化的方式管理图像属性。 插入前修改尺寸、定位和格式。 这种方法可确保文档生成流程的一致性,并在整个应用程序中应用标准格式规则。 该类封装了所有与图像相关的属性,使代码更易于维护并减少格式错误。

如何通过流添加图片?

使用前一种方法很容易添加本地或静态 URL 图像。 然而,应用程序通常使用数据库、网络服务或动态生成内容中的图像。 使用 Stream 方法在需要身份验证的安全 API 后面添加图像。

下面的示例显示了 HTTP 客户端发送授权令牌以检索经过验证的图像流。 语流在导出前直接集成到文档中。 这种方法消除了临时文件存储,提高了敏感图像数据的安全性。

:path=/static-assets/word/content-code-examples/how-to/add-image-insert-image-via-http-stream.cs
using IronWord;
using IronWord.Models;
using IronWord.Models.Enums;

// initializing docx file
WordDocument doc = new IronWord.WordDocument();

using (HttpClient client = new HttpClient())
{
    // Add authentication headers
    client.DefaultRequestHeaders.Add("Authorization", "Bearer YOUR_API_KEY_HERE");
    client.DefaultRequestHeaders.Add("User-Agent", "MyApp/1.0");

    // Get image from authenticated endpoint
    Stream authenticatedStream = client.GetStreamAsync("https://api.example.com/secure/image.png");
    doc.AddImage(authenticatedStream);
}

// Export docx
doc.SaveAs("added-image-via-http-stream.docx");
Imports IronWord
Imports IronWord.Models
Imports IronWord.Models.Enums
Imports System.Net.Http

' Initializing docx file
Dim doc As New IronWord.WordDocument()

Using client As New HttpClient()
    ' Add authentication headers
    client.DefaultRequestHeaders.Add("Authorization", "Bearer YOUR_API_KEY_HERE")
    client.DefaultRequestHeaders.Add("User-Agent", "MyApp/1.0")

    ' Get image from authenticated endpoint
    Dim authenticatedStream As Stream = client.GetStreamAsync("https://api.example.com/secure/image.png").Result
    doc.AddImage(authenticatedStream)
End Using

' Export docx
doc.SaveAs("added-image-via-http-stream.docx")
$vbLabelText   $csharpLabel

何时应使用流方法?

在以下情况下使用 Stream 方法:

  • 图片位于需要身份验证的安全 API 后面
  • 从内存动态处理图像
  • 处理数据库中作为二进制数据存储的图像

在企业应用中,图像存储在文档管理系统、云存储中,或由图像处理服务生成,这种方法非常适用。

流加载有哪些优点?

流加载集成了来自认证端点的图像,无需保存临时文件。 这样可以提高安全性和性能。 福利包括:

  • 减少磁盘 I/O 操作
  • 磁盘上无敏感图像缓存
  • 实时图像处理工作流程
  • 更好地管理大型图像的内存
  • 灵活的图像源选项

如何修改图像属性?

<! -- 待办事项:在此处添加图片 --> <! --! 修改图像属性实现示意图 --> <!--说明:说明代码概念的图表或截图 -->

IronWord 提供了自定义图像属性的综合方法。 在将图片添加到文档之前或之后调整这些属性。

设置 说明 范例
Width 图片的水平尺寸(像素 `image.Width = 500;`
Height 图片的垂直尺寸(像素 `image.Height = 300;`
包文本 图像周围的文字包装行为 `image.包文本 = 包文本.Square;`
左侧距离 从左边缘开始的间距测量,单位为像素 `image.左侧距离 = 10;`
距离 以像素为单位从右边开始测量间距 `image.距离 = 10;`
距离顶部 从上边缘开始的间距测量,单位为像素 `image.距离顶部 = 15;`
距离底部 以像素为单位从底边开始测量间距 `image.距离底部 = 15;`
职位 空间位置信息(X 和 Y 坐标) `image.职位 = new Element职位(50, 100);`
规模 X 轴和 Y 轴的比例大小系数 `image.规模 = new PointF(1.5f, 1.5f);`
翻译 用于重新定位的位移坐标 `image.翻译 = new PointF(20, 30);`

如何自定义宽度和高度?

通过改变宽高比实现自定义宽度和高度。 控制图像在文档中的显示方式,无论是保持比例还是适应特定的布局限制。

:path=/static-assets/word/content-code-examples/how-to/add-image-custom-size.cs
using IronWord;
using IronWord.Models;
using IronWord.Models.Enums;

// initializing docx file
WordDocument doc = new IronWord.WordDocument();

// instantiating image file
IronWord.Models.ImageContent image = new IronWord.Models.ImageContent("sample-image.tiff");

// modifying the aspect ratio by introducing custom width
image.Width = 800;
image.Height = 200;

// AddImage function saving the image
doc.AddImage(image);

// Save and export the file
doc.SaveAs("custom-size-image.docx");
Imports IronWord
Imports IronWord.Models
Imports IronWord.Models.Enums

' initializing docx file
Dim doc As New IronWord.WordDocument()

' instantiating image file
Dim image As New IronWord.Models.ImageContent("sample-image.tiff")

' modifying the aspect ratio by introducing custom width
image.Width = 800
image.Height = 200

' AddImage function saving the image
doc.AddImage(image)

' Save and export the file
doc.SaveAs("custom-size-image.docx")
$vbLabelText   $csharpLabel
显示笔记本图像的 Word 文档,带有'标记图像文件 F'覆盖文本,演示图像属性显示

高宽比会发生什么变化?

自定义宽度和高度值将覆盖原始宽高比。 拉伸或压缩图片,以适应标题、侧边栏或固定大小容器等布局要求。 极度失真会显得不专业。 为了在调整大小时保持长宽比,请根据目标尺寸计算比例尺寸。

我应该先设置哪些属性?

按以下顺序设置属性: 1.尺寸(宽/高)--图像布局的基础 2.定位(DistanceFrom 属性)--控制间距和边距 3.高级属性(缩放/翻译)--微调

这种方法可确保每个属性都在前一个属性的基础上进行逻辑构建。 某些属性会相互作用--文本包装会影响距离属性的工作方式。

常见问题解答

如何用 C# 在 DOCX 文件中添加图片?

使用 IronWord,您可以通过创建一个带有图片文件路径的 ImageContent 实例,然后使用 AddImage() 方法将图片添加到 DOCX 文件中。IronWord 支持 JPG、PNG、BMP、TIFF 和 GIF 等常见格式,因此可以轻松地以编程方式在 Word 文档中插入图片。

在 Word 文档中添加图片时支持哪些图片格式?

IronWord 支持所有主流图像格式,包括 .jpg、.png、.bmp、.tiff 和 .gif 文件。每种格式在插入时都能保持其质量--JPEG 适用于照片,PNG 适用于透明图形,BMP 适用于未压缩质量,TIFF 适用于高质量打印文档,GIF 适用于简单动画(只显示第一帧)。

能否控制 DOCX 文件中图片的大小和位置?

是的,IronWord 的 ImageContent 类允许您自定义宽度、高度和文本封装等图像属性。您可以在插入前修改尺寸和定位,从而完全控制图片在 Word 文档中的显示效果。

如何在段落中插入图片以改善文档结构?

IronWord 允许您将图片作为子元素插入段落中,从而提供更好的文档层次结构和对文本包装的控制。与添加无父节点的图像相比,这种方法将图像与周围的文本流整合在一起,并为您提供更精确的定位选项。

以编程方式在 Word 文档中添加图片的最快方法是什么?

使用 IronWord 的最快方法是创建一个 WordDocument 实例,使用 new ImageContent('photo.jpg') 加载图片,调用 doc.AddImage(image),然后使用 doc.SaveAs('document-with-image.docx') 保存。这个简单的四步流程处理了整个图片插入工作流程。

Ahmad Sohail
全栈开发者

Ahmad 是一名全栈开发人员,拥有扎实的 C#、Python 和 Web 技术基础。他对构建可扩展的软件解决方案深感兴趣,并喜欢探索设计和功能在实际应用中如何结合。

在加入 Iron Software 团队之前,Ahmad 致力于自动化项目和 API 集成,专注于提高性能和开发人员体验。

在业余时间,他喜欢尝试 UI/UX 想法,贡献开源工具,并偶尔从事技术写作和文档工作,以便让复杂主题更易于理解。

准备开始了吗?
Nuget 下载 32,629 | 版本: 2026.2 刚刚发布