C# Net Core openxml 提取 提出 取 word  文本  图片 Html Text Drawing

C# Net Core openxml 提取 提出 取 word  文本  图片 Html Text Drawing

注:只支持内嵌,不支持公式

------------------------------------------------

---------------文章最后为效果------------

------------------------------------------------

加入包:OpenXml

创建文件:Read.cs

复制下面全部代码到文件 Read.cs

using DocumentFormat.OpenXml;

using DocumentFormat.OpenXml.Packaging;

using DocumentFormat.OpenXml.Wordprocessing;

using System;

using System.Collections.Generic;

using System.IO;

using System.Text;

using System.Xml;

using System.Xml.Xsl;

namespace YCBX.Office.WordXml

{

public class WordRead

{

public static List ReadToHtml(string wordPathStr)

{

return ReadToHtml(new FileStream(wordPathStr, FileMode.Open));

}

public static List ReadToHtml(Stream wordStream)

{

using (WordprocessingDocument doc = WordprocessingDocument.Open(wordStream, false))

{

//XmlWriterSettings settings = new XmlWriterSettings() { OmitXmlDeclaration = true, ConformanceLevel = ConformanceLevel.Auto,DoNotEscapeUriAttributes=true};

List paragraphHtmls = new List();

MainDocumentPart mainPart = doc.MainDocumentPart;

Body body = doc.MainDocumentPart.Document.Body;

//段落

foreach (var paragraph in body.Elements())

{

StringBuilder paragraphHtml = new StringBuilder();

//块

foreach (var run in paragraph.ChildElements)

{

if (run is Run)

{

foreach (OpenXmlElement openXmlElement in run.Elements())

{

//软回车

if (openXmlElement is Break br)

{

paragraphHtmls.Add(paragraphHtml.ToString());

paragraphHtml = new StringBuilder();

}

//文字块

else if (openXmlElement is Text text)

{

paragraphHtml.Append(text.Text);

}

//图像块

else if (openXmlElement is Drawing drawing)

{

//得到图像的内嵌ID(外嵌没做处理)

var inline = drawing.Inline;

var extent = inline.Extent;

var pic = inline.Graphic.GraphicData.GetFirstChild();

var embed = pic.BlipFill.Blip.Embed.Value;

//得到图像流

var part = mainPart.GetPartById(embed);

var stream = part.GetStream();

//流转2进制

byte[] bytes = new byte[stream.Length];

stream.Read(bytes, 0, bytes.Length);

//2进制转base64

string imgHtml = $"";

paragraphHtml.Append(imgHtml);

}

}

}

//else if(run is DocumentFormat.OpenXml.Math.OfficeMath math)

//{

// var x = new XmlDocument();

// x.LoadXml(math.OuterXml);

// using var ms = ConvertToMatchMl(x, settings);

// paragraphHtml.Append(ConvertToLatex(settings, ms));

//}

}

paragraphHtmls.Add(paragraphHtml.ToString());

}

return paragraphHtmls;

}

}

///

/// 合并文档

///

///

///

public static void Combine(string finalFile, List files)

{

if (files.Count < 2)

{

return;

}

File.Copy(files[0], finalFile, true);

using (WordprocessingDocument doc = WordprocessingDocument.Open(finalFile, true))

{

Body b = doc.MainDocumentPart.Document.Body;

for (int i = 1; i < files.Count; i++)

{

using (WordprocessingDocument doc1 = WordprocessingDocument.Open(files[i], true))

{

foreach (var inst in doc1.MainDocumentPart.Document.Body.Elements())

{

b.Append(inst.CloneNode(true));

}

}

}

}

}

private string ConvertToLatex(XmlWriterSettings settings, Stream ms)

{

var latexTransform = new XslCompiledTransform();

latexTransform.Load(Path.Combine(AppContext.BaseDirectory, "xsltml", "mmltex.xsl"), new XsltSettings(true,true),new XmlUrlResolver() );

using var la = new MemoryStream();

latexTransform.Transform(new XmlTextReader(ms), XmlWriter.Create(la, settings));

la.Seek(0, SeekOrigin.Begin);

StreamReader sr = new StreamReader(la, Encoding.UTF8);

return sr.ReadToEnd();

}

private Stream ConvertToMatchMl(XmlDocument xmlDocument, XmlWriterSettings settings)

{

var ms = new MemoryStream();

var xslTransform = new XslCompiledTransform();

xslTransform.Load(Path.Combine(AppContext.BaseDirectory, "xsltml", "OMML2MML.XSL"));

xslTransform.Transform(xmlDocument, XmlWriter.Create(ms, settings));

ms.Seek(0, SeekOrigin.Begin);

return ms;

}

}

}

创建文件:ImageExtent.cs

复制下面全部代码到文件 ImageExtent.cs

using System;

using System.Collections.Generic;

using System.Text;

namespace YCBX.Office.WordXml

{

///

/// 图像长度单位转换

///

public class ImageExtent

{

private const decimal CM_TO_PX = 96M;

private const decimal INCH_TO_CM = 2.54M;

///

/// 厘米到EMU(English Metric Unit)

///

private const decimal CM_TO_EMU = 360000M;

///

/// EMU(English Metric Unit) 到像素(px)

///

///

public static decimal EMU_TO_PX(decimal EMU)

{

return EMU / CM_TO_EMU / INCH_TO_CM * CM_TO_PX;

}

}

}

调用方法:

var sss = new Read().ParagraphHtmlAll("1.docx");

word文件中为:

创建一个test.html,将代码放在

中,查看效果为:

完成

Java 提取Word中的文本和图片

本文将介绍通过Java来提取或读取Word文档中文本和图片的方法.这里提取文本和图片包括同时提取文档正文当中以及页眉.页脚中的的文本和图片. 使用工具:Free Spire.Doc for Java ...

Java Word中的文本、图片替换功能

Word中的替换功能以查找指定文本然后替换为新的文本,可单个替换或全部替换.以下将要介绍的内容,除常见的以文本替换文本外,还将介绍使用不同对象进行替换的方法,具体可包括: 1. 指定字符串内容替换文本 ...

提取WORD中的所有InlineShape图片并保存成文件

InlineShape表示的类型其实不只是图片,还包括OLE, ACTIVE X等. 下面是MSDN中的定义:Represents an object in the text layer of a d ...

Java 读取Word批注中的文本和图片

本文将介绍读取Word批注的方法,包括读取Word批注中的文本及图片.关于操作Word批注的方法还可以参考这两篇文章:Java 添加.回复.修改.删除Word批注:Java 给Word指定字符串添加批 ...

word中创建文本框

word中创建文本框         在插入中点击"文本框"选项卡,例如以下图所看到的:        手工加入自己想要的文本框格式,然后选择所创建的文本框,在工具栏处会发现多了一 ...

C&num;提取PPT文本——提取SmartArt中的文本、批注中的文本

提取文本的情况在工作和学习中常会遇到,在前面的文章中,已经讲述了如何提取PPT中文本框里的文本,在本篇文章中,将介绍如何使用C#代码语言提取PPT文档中SmartArt和批注中的文本.同样的,程序里面 ...

Java 添加、删除、替换、格式化Word中的文本(基于Spire&period;Cloud&period;SDK for Java)

Spire.Cloud.SDK for Java提供了TextRangesApi接口可通过addTextRange()添加文本.deleteTextRange()删除文本.updateTextRang ...

C&num; 读取Word文本框中的文本、图片和表格(附VB&period;NET代码)

[概述] Word中可插入文本框,在文本框中可添加文本.图片.表格等内容.本篇文章通过C#程序代码介绍如何来读取文本框中的文本.图片和表格等内容.附VB.NET代码,有需要可作参考. [程序环境] 程 ...

Java 读取PDF中的文本和图片

本文将介绍通过Java程序来读取PDF文档中的文本和图片的方法.分别调用方法extractText()和extractImages()来读取.   使用工具:Free Spire.PDF for Ja ...

随机推荐

shell变量

定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名 ...

hpp头文件与h头文件的区别

hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译.而实现代码将直接 ...

使用hexo在github上写blog

使用hexo在github上写blog 安装nodejs http://nodejs.org/ 安装hexo npm install -g hexo 创建bolg文件夹 安装完成后在自己的工作目录创建 ...

linux中mail函数不能发送邮件怎么办

原因分析: 1.检查下本机25端口是否有开放 2.mail是利用linux自带的sendmail服务来发送邮件的,service sendmail status 查看下该服务的状态 发送命令:mail ...

Jenkins User on Apt-Get Install Installation

转自:http://stackoverflow.com/questions/6234016/jenkins-user-on-apt-get-install-installation QUESTION: ...

在Windows下基于libx264&period;a的Qt 4&period;8&period;2视频压缩

1.在用mingw 4.5.2编译x264后,生成libx264.a文件,将libx264.a和x264.h和x264_config.h拷贝到Qt工程中,将mingw/lib/libpthread.a ...

【读书笔记】【深入理解ES6】&num;9-JavaScript中的类

大多数面向对象的编程语言都支持类和类继承的特性,而JavaScript却不支持这些特性,只能通过其他方法定义并关联多个相似的对象.这个状态一直从ECMAScript 1持续到ECMAScript 5. ...

PDF编辑方法,PDF怎么去除背景

PDF文件现在是使用的频率很高的一个软件的格式,PDF文件能够更加直观清楚的表达,PDF文件的使用很方便但编辑起来就来没有那么容易了,PDF文件的编辑是需要借助软件的,今天小编就来跟大家分享一下PDF ...

C&plus;&plus; lamba使用

Moderm Effective C++ 条款31 第206提到了按引用捕获局部变量和函数形参时,如果lambda式的生命期依赖于局部变量和函数形参的生命期,需注意空悬引用的问题. 原书的例子不够直观 ...

通过PMP考试

带了几年项目,终于持证上岗了,5A通过.

openxml html to word,使用openxml提取word中的文本和图片并转为Html相关推荐

  1. openxml html to word,C# Net 使用 openxml 提取word中的文本和图片并转为Html

    C# Net Core openxml 提取 提出 取 word  文本  图片 Html Text Drawing C# Net Core openxml 提取 提出 取 word  文本  图片 ...

  2. Java 读取Word表格中的文本和图片

    本文通过Java程序来展示如何读取Word表格,包括读取表格中的文本和图片.下面是具体实现的步骤和方法. 1. 程序环境准备 代码编译工具:IntelliJ IDEA Jdk版本:1.8.0 测试文档 ...

  3. 【Python】导出docx格式Word文档中的文本、图片和附件等

    [Python]导出docx格式Word文档中的文本.图片和附件等 零.需求 为批量批改学生在机房提交的实验报告,我需要对所有的实验文档内容进行处理.需要批量提取Word文档中的图片和附件以便进一步检 ...

  4. Java 读取Word批注中的文本和图片

    本文将介绍读取Word批注的方法,包括读取Word批注中的文本及图片.下面将通过Java代码来演示如何读取批注. **工具使用:**Word类库(Free Spire.Doc for Java 免费版 ...

  5. java word文本框_Java 读取Word文本框中的文本、图片、表格

    Word可插入文本框,文本框中可嵌入文本.图片.表格等内容.对文档中的已有文本框,也可以读取其中的内容.本文以Java程序代码来展示如何读取文本框,包括读取文本框中的文本.图片以及表格等. [程序环境 ...

  6. html wmf 不显示,在Word、Excel、PPT中不能显示WMF图片

    在Word.Excel.PPT中不能显示WMF图片 有些时候在Word.Excel.PPT中不能正常显示WMF文件,其导致这一问题的是因为IE的临时文件存放路径不对所致,如下所示PPT文件中不能正常显 ...

  7. Java 读取Word文本框中的文本、图片、表格

    Word可插入文本框,文本框中可嵌入文本.图片.表格等内容.对文档中的已有文本框,也可以读取其中的内容.本文以Java程序代码来展示如何读取文本框,包括读取文本框中的文本.图片以及表格等. [程序环境 ...

  8. 【教程】Spire.PDF教程:C# 如何提取 PDF 文档中的文本和图片

    Spire.PDF是一个专业的PDF组件,能够独立地创建.编写.编辑.操作和阅读PDF文件,支持 .NET.Java.WPF和Silverlight. [下载Spire.PDF最新试用版] 文本和图片 ...

  9. php取tet文件内容,PHP中使用PDFlib TET提取PDF中的文本

    本文介绍了如何在PHP中使用PDFlib TET提取PDF中的文本: /* 全局参数表*/ $globaloptlist = "searchpath=../../../resource/cm ...

  10. java提取word中的文字_Java 提取Word中的文本和图片

    本文将介绍通过Java来提取或读取Word文档中文本和图片的方法.这里提取文本和图片包括同时提取文档正文当中以及页眉.页脚中的的文本和图片. 使用工具:Free Spire.Doc for Java ...

最新文章

  1. Kafka监控工具KafkaOffsetMonitor配置及使用
  2. python3精要(48)-os命令
  3. 【工具类】手动获取被spring管理的bean对象
  4. Managed keyedState中的ValueStateDescriptor与MapStateDescriptor
  5. HDU2068(错列排序)
  6. LeetCode 189. 旋转数组(环形替换)
  7. 如何修改网页中的文本内容改成自己希望的数值?
  8. 创意夜晚行驶迷路网站404页面源码
  9. Social Dialogue征集IT意见领袖和优秀博客的RSS地址
  10. 浏览器向服务器发送的消息称为,网络是怎样连接之浏览器的探索之旅读书笔记(一)...
  11. [转]C++操作oracle数据库
  12. 编译ffmpeg:no match insn: lbu $r16,0($r5)
  13. Excel函数实战技巧精粹(三)常用函数之INDEX与MATCH组合详解
  14. 百度日语输入法快捷键(baidu type)
  15. 小鬼授权系统源码全解密源码 附授权代码
  16. VMX(1) -- 简介
  17. OV强推性价比手机,小米或成最大受害者
  18. 5.12日,好多人的ksjsb遇到签名认证啦~ 勉强跑跑吧~
  19. 深度学习:ResNet(残差网络)
  20. 光线通过三棱镜模拟matlab仿真

热门文章

  1. Cloud 2.0时代,华为云EI助力内蒙煤焦化产业走向智能
  2. win10 C盘优化清理
  3. 关于RN报Unrecognized font family ionicons
  4. matlab中的连乘符号,数学中的连乘符号
  5. 宿主机上docker0 Linux 网桥设备是怎么来的?
  6. 全志linux视频硬解码,全志V316超清4K视频编解码芯片处理器介绍
  7. 关闭445端口操作手册
  8. Facebook努力回归中国,微博会被人们放弃吗?
  9. opencv之扩展模块安装
  10. 【Adobe Premiere Pro 2020】pr2020安装和基本操作【PR安装、新建项目流程、导入及管理素材项目文件、添加标记、创建出入点剪辑视频、快速剪接及自动音乐卡点的方法