MHT文件本质上是MIME。因此,可以使用Chilkat.Mime或完全免费的System.Net.Mime组件来访问其内部结构。例如,如果MHT包含图像,则可以用输出HTML中的base64字符串替换它们。

Imports HtmlAgilityPack

Imports Fizzler.Systems.HtmlAgilityPack

Imports Chilkat

Public Function ConvertMhtToHtml(ByVal mhtFile As String) As String

Dim chilkatWholeMime As New Chilkat.Mime

'Load mime'

chilkatWholeMime.LoadMimeFile(mhtFile)

'Get html string, which is 1-st part of mime'

Dim html As String = chilkatWholeMime.GetPart(0).GetBodyDecoded

'Create collection for storing url of images and theirs base64 representations'

Dim allImages As New Specialized.NameValueCollection

'Iterate through mime parts'

For i = 1 To chilkatWholeMime.NumParts - 1

Dim m As Chilkat.Mime = chilkatWholeMime.GetPart(i)

'See if it is image'

If m.IsImage AndAlso m.Encoding = "base64" Then

allImages.Add(m.GetHeaderField("Content-Location"), "data:" + m.ContentType + ";base64," + m.GetBodyEncoded)

End If : m.Dispose()

Next : chilkatWholeMime.Dispose()

'Now it is time to replace the source attribute of all images in HTML with dataURI'

Dim htmlDoc As New HtmlDocument : htmlDoc.LoadHtml(html) : Dim docNode As HtmlNode = htmlDoc.DocumentNode

For i = 0 To allImages.Count - 1

'Select all images, whose src attribute is equal to saved URL'

Dim keyURL As String = allImages.GetKey(i) 'Saved url from MHT'

Dim elementsWithPics() As HtmlNode = docNode.QuerySelectorAll("img[src='" + keyURL + "']").ToArray

Dim imgsrc As String = allImages.GetValues(i)(0) 'dataURI as base64 string'

For j = 0 To elementsWithPics.Length - 1

elementsWithPics(j).SetAttributeValue("src", imgsrc)

Next

'Select all elements, whose style attribute contains saved URL'

elementsWithPics = docNode.QuerySelectorAll("[style~='" + keyURL + "']").ToArray

For j = 0 To elementsWithPics.Length - 1

'Get and modify style'

Dim modStyle As String = Strings.Replace(elementsWithPics(j).GetAttributeValue("style", String.Empty), keyURL, imgsrc, 1, 1, 1)

elementsWithPics(j).SetAttributeValue("style", modStyle)

Next : Erase elementsWithPics

Next

'Get final html'

Dim tw As New StringWriter()

htmlDoc.Save(tw) : html = tw.ToString : tw.Close() : tw.Dispose()

Return html

End Function

编程方式加载css文件夹,如何以编程方式(或使用工具)将.MHT mhtml文件转换为常规的HTML和CSS文件?...相关推荐

  1. 使用SDWebImage淡入淡出的方式加载图片

    使用SDWebImage淡入淡出的方式加载图片 效果: 请通过以下方式下载源码: 找到它修改文件的地方: 以下是使用源码: // // ViewController.m // SDWebImageFa ...

  2. Linux下编译、链接、加载运行C++ OpenCV的两种方式及常见问题的解决

    Linux下编译.链接.加载运行C++ OpenCV的两种方式及常见问题的解决 在Linux下安装完OpenCV C++之后(还没有安装的读者请参考Ubuntu 18.04 安装OpenCV C++) ...

  3. Javascript 的模块化编程及加载模块【转载+整理】

    http://www.ruanyifeng.com/blog/2012/10/javascript_module.html 本文内容 引入 模块化 最初写法 对象写法 立即执行函数写法 放大模式 宽放 ...

  4. 【js】【cornerstone】cornerstone使用url方式加载图像

    [js][cornerstone]cornerstone使用url方式加载图像 引入cornerstoneWebImageLoader loadImage 引入cornerstoneWebImageL ...

  5. Unity两中方式加载图片

    看到草羊发的图片,也是真懒. 想起来当时写天气预报现在都忘干净了,好记性不如烂笔头,还是应该多记.自己打下来好了 using System; using System.Collections; usi ...

  6. layui信息加载流的方式加载数据

    SSM项目中使用layui信息加载流的方式加载数据 这里首先jsp页面来一个div容器,这里数数据显示的地方 //css样式: <style type="text/css"& ...

  7. ListView上拉加载和下拉刷新多种实现方式

    ListView上拉加载和下拉刷新多种实现方式 该篇为ListView下拉刷新和上拉加载实现的各种方法大合集.可能在具体的细节逻辑上处理不太到位,但基本上完成逻辑的实现.细节方面,个人可以根据自己的需 ...

  8. maven使用systemPath方式加载本地jar

    1.背景 在对接第三方厂商时,会提供对应jar,maven公开仓库上没有发布,提供的处理方法. 上传的公司私服. systemPath方式加载本地jar. 本文要讲的就是使用systemPath方式加 ...

  9. 在html中怎么插入腾讯视频,腾讯视频加载方案, 网页嵌入腾讯视频方式 iframe, 网页嵌入腾讯视频方式...

    前言:更多详细内容可以参考腾讯开发平台的文档,我在这里简单备忘一下 方法一:引入iframe 在视频播放界面的左下方,鼠标移动到分享,复制通用代码放在页面上即可 腾讯视频加载方案, 网页嵌入腾讯视频方 ...

  10. 《ArcGIS Runtime SDK for Android开发笔记》——(13)、图层扩展方式加载Google地图...

    1.前言 http://mt2.google.cn/vt/lyrs=m@225000000&hl=zh-CN&gl=cn&x=420&y=193&z=9& ...

最新文章

  1. 隐藏原生select下拉框的向下箭头▼
  2. 【Spring】【JUnit】单元测试
  3. 如何应用设计模式设计你的足球引擎
  4. 华中农业大学第五届程序设计大赛网络同步赛-G
  5. oracle job 定时执行参数
  6. python远程监控jvm_python和jstat命令采集jvm数据导入zabbix监控-阿里云开发者社区
  7. Unity Text 插入超链接
  8. hostingEnvironment与宿主环境
  9. 基于 Redis3.2.4 集群搭建说明
  10. firefox关闭窗口问题
  11. 计算机专业基础 -- Spring系列框架相关基础知识
  12. 【翻译】Sencha Touch 2入门:创建一个实用的天气应用程序之一
  13. web系统之猜数游戏——项目总结
  14. 流氓又见流氓!-有感雅虎中国通过公证部门 证明雅虎助手非恶意软件
  15. Krpano全景漫游开发手册
  16. 中文讲解 机器学习 Machine Learning in Business 第二版,约翰.赫尔(John C. Hull ),Chenghsi Hsieh老师
  17. 百度坐标转换中文地址(百度地图JavaScript API逆地址解析 )
  18. dw注册页面html,在 Dreamweaver 中生成注册页 - Dreamweaver 用户指南
  19. Spring MVC的数据绑定(简单数据绑定+POJO类型绑定)
  20. 计算几何(中线长计算三角形面积) - Medians - UVA 10347

热门文章

  1. TCP 和 UDP 讲解
  2. 剧本杀开连锁店,有戏吗?
  3. [ZJOI2019]麻将 题解(dp 套 dp)
  4. 在程序中添加背景音乐!...
  5. NLP领域基本名词、算法
  6. 算法图解第十章笔记与习题(KNN算法)
  7. 天之炼狱之超狼,双狼,超级蝙蝠变法
  8. Office 365 Achievement in Information-based Teaching
  9. 用linux的curl实现自动投票
  10. 全角字符与半角字符的互相转化