如何使用C#从word文档中提取图片
作者:mrr 发布时间:2022-04-17 06:58:09
标签:word,文档,提取,图片
图片和文字是word文档中两种最常见的对象,在微软word中,如果我们想要提取出一个文档内的图片,只需要右击图片选择另存为然后命名保存就可以了,今天这篇文章主要是实现如何使用C#从word文档中提取图片。
这里我准备了一个含有文字和图片的word文档:
详细步骤与代码:
步骤1 : 添加引用。
新建一个Visual C#控制台项目,添加引用并使用如下命名空间:
using System;
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
步骤2 : 新建一个word文档对象并加载需要提取图片的word文档。
Document document = new Document("法国景点.docx ");
步骤3 : 遍历文档中的所有section,找到图片,将它们提取出来并保存。
int index = 0;
//获取文档的section
foreach (Section section in document.Sections)
{
//获取section中的段落
foreach (Paragraph paragraph in section.Paragraphs)
{
//获取段落中的文档对象
foreach (DocumentObject docObject in paragraph.ChildObjects)
{
//对对象的type进行判断,如果是图片,就提取出来
if (docObject.DocumentObjectType == DocumentObjectType.Picture)
{
DocPicture picture = docObject as DocPicture;
//给图片命名
String imageName = String.Format(@"images\Image-{0}.png", index);
//保存图片
picture.Image.Save(imageName, System.Drawing.Imaging.ImageFormat.Png);
index++;
}
}
}
}
提取出来的图片:
全部代码:
using System;
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Drawing;
namespace Extract_image_from_word
{
class Program
{
static void Main(string[] args)
{
Document document = new Document("法国景点.docx");
int index = 0;
foreach (Section section in document.Sections)
{
foreach (Paragraph paragraph in section.Paragraphs)
{
foreach (DocumentObject docObject in paragraph.ChildObjects)
{
if (docObject.DocumentObjectType == DocumentObjectType.Picture)
{
DocPicture picture = docObject as DocPicture;
String imageName = String.Format(@"images\Image-{0}.png", index);
picture.Image.Save(imageName, System.Drawing.Imaging.ImageFormat.Png);
index++;
}
}
}
}
}
}
}
总结:
这里我使用的是E-iceblue公司的免费 word 组件,它除了可以从文档中提取图片,还可以提取文本,这里我只写了提取图片的,提取文本的也差不多,如有需要可以留言。


猜你喜欢
- 上周,公司的项目改版要求加上一个右滑返回上一个界面,于是就在网上找了一些开源库打算实现.但是在使用的时候遇见了许多的问题.试了两天用过 ht
- schedule的四种用法schedule(task,time)task-所安排的任务 time-执行任务的时间作用:在时间等于
- 比如:int (*foo)(int arg),记住要和另一个指针函数区分开来,类似这样:int *foo(int arg).比如我们可以这样
- IDEA 2020.1 版自动导入MAVEN依赖的方法(新版MAVEN无法自动导入/更新POM依赖、MAVEN设置自动更新、自动更新快捷键)
- WPF 实现筛选下拉多选控件框架使用.NET4 至 .NET6;Visual Studio 2022;创建 MultiSelect
- class ftp{ private string host = null; &n
- 如下所示:package com.lstc.test;public class TestDemo3 {String str = new St
- 可以用抽象工厂模式来造车。车的品牌有很多,而且车的属性也不少,比如车的类型、排量、门的数量,等等。可以提炼出有关车的一个抽象类:public
- 代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式,即通过代理对象访问目标对象。这样做的好处是:可以在目标对象实现的基
- 本文实例讲述了Android编程实现禁止系统锁屏与解锁亮屏的方法。分享给大家供大家参考,具体如下:需求:某个时刻任务执行完毕,关闭屏幕,某时
- 实践过程效果代码public partial class Form1 : Form{ public Form1()
- 1. Spring框架的注解式开发# Spring框架的注解式(Annotation)开发1. 注解式开发定义:通过Spring框架提供的一
- 本文实例为大家分享了android实现密码框右侧显示小眼睛的具体代码,供大家参考,具体内容如下实现效果<?xml version=&q
- 什么是TKMybatisTKMybatis 是基于Mybatis 框架开发的一个工具,内部实现了对单表的基本数据操作,只需要简单继承 TKM
- 本人是用易语言起步的,起初是为了兴趣,后来由于易语言被杀软误杀严重,连空白程序都杀,后来转到了学C#,随着学习的深入,接触越来越复杂的东西之
- 一、单线程扫描1.代码using System;using System.Windows.Forms;using System.Net;us
- 前言:小伙伴说能不能用springboot整合一下mybatis多数据源不使用JPA进行数据库连接操作。那么说干就干创建一个springbo
- 不依赖任何外界包,maven如何生成可以执行的jar?pom中不包含任何引用的情况下,只需要在pom中添加 maven-jar-plugin
- 在日常开发过程中时常需要用到设计模式,但是设计模式有23种,如何将这些设计模式了然于胸并且能在实际开发过程中应用得得心应手呢?和我一起跟着《
- Android传感器概述:动作传感器、环境传感器、位置传感器等,如方向传感器(电子罗盘)、重力传感器(横纵切换)。Android SDK支持