C# html互转mht
using System;
using System.Runtime.InteropServices;
using System.Text;
using System.IO;

namespace HTMLConversion
{
/// <summary>
/// HtmlConvertToMht 类
/// </summary>
#region HtmlConvertToMht 类的实现
public class HtmlConvertToMhtByCdo : IHtmlConvertToMht
{
public HtmlConvertToMhtByCdo()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
#region 变量
string _CharSet="gb2312";
#endregion
#region 属性
public string CharSet
{
get
{
return _CharSet;
}
set
{
_CharSet = value;
}
}
#endregion
#region 方法
/// <summary>
/// 把Html格式二进制流转换成Mht格式的二进制流
/// </summary>
/// <param name="htmlUrl">Html格式的二进制流</param>
/// <returns>Mht格式的二进制流</returns>
public byte[] ConvertHtmlUrlToMht(string htmlUrl)
{
string strMhtContent = string.Empty;
byte[] BytMhtContent = null;
CDO.Message message = new CDO.MessageClass();
ADODB.Stream stream=null;
message.MimeFormatted =true;
message.CreateMHTMLBody(htmlUrl,CDO.CdoMHTMLFlags.cdoSuppressNone,"","");
stream = message.GetStream();
stream.Charset = _CharSet;
strMhtContent= stream.ReadText(stream.Size);
BytMhtContent = Encoding.GetEncoding(_CharSet).GetBytes(strMhtContent);
return BytMhtContent;
}
/// <summary>
/// 把Html格式二进制流转换成Mht格式的二进制流,成功返回true,失败返回false
/// </summary>
/// <param name="htmlUrl">Html格式的二进制流</param>
/// <param name="filePath">Mht文件的保存路径</param>
/// <returns>操作结果 成功:true,失败;false</returns>
public bool ConvertHtmlUrlToMht(string htmlUrl,string filePath)
{
bool isConvertHtmlBytesToMht = false;
CDO.Message message = new CDO.MessageClass();
ADODB.Stream stream=null;
message.MimeFormatted =true;
message.CreateMHTMLBody(htmlUrl,CDO.CdoMHTMLFlags.cdoSuppressNone,"","");
stream = message.GetStream();
stream.SaveToFile(filePath,ADODB.SaveOptionsEnum.adSaveCreateOverWrite);
message=null;
stream.Close();
isConvertHtmlBytesToMht=true;
return isConvertHtmlBytesToMht;
}
/// <summary>
/// 把Html格式二进制流转换成Mht格式的二进制流
/// </summary>
/// <param name="htmlContent">Html格式的二进制流</param>
/// <returns>Mht格式的二进制流</returns>
public byte[] ConvertHtmlBytesToMht(byte[] htmlContent)
{
string strMhtContent = string.Empty;
string strHtmlContent = Encoding.Default.GetString(htmlContent);
CDO.Message message = new CDO.MessageClass();
ADODB.Stream stream=null;
message.MimeFormatted =true;
message.HTMLBody = strHtmlContent;
stream = message.GetStream();
stream.Charset = _CharSet;
strMhtContent= stream.ReadText(stream.Size);
byte[] BytMhtContent = Encoding.GetEncoding(_CharSet).GetBytes(strMhtContent);
return BytMhtContent;
}
/// <summary>
/// 根据输入的Html文本内容(二进制)返回Mht文本内容(二进制流),成功返回true,失败返回false
/// </summary>
/// <param name="htmlContent">Html格式的二进制流</param>
/// <param name="filePath">Mht文件的保存路径</param>
/// <returns>操作结果 成功:true,失败;false</returns>
public bool ConvertHtmlBytesToMht(byte[] htmlContent,string filePath)
{
bool isConvertHtmlBytesToMht = false;
string strHtmlContent = Encoding.GetEncoding(_CharSet).GetString(htmlContent);
CDO.Message message = new CDO.MessageClass();
ADODB.Stream stream=null;
message.MimeFormatted =true;
message.HTMLBody = strHtmlContent;
stream = message.GetStream();
stream.Charset = _CharSet;
string strMhtContent= stream.ReadText(stream.Size);
byte[] BytMhtContent = Encoding.GetEncoding(_CharSet).GetBytes(strMhtContent);
FileStream fileStream = new FileStream(filePath,FileMode.Create,FileAccess.Write);
fileStream.Write(BytMhtContent,0,BytMhtContent.Length);
message=null;
stream.Close();
isConvertHtmlBytesToMht=true;
return isConvertHtmlBytesToMht;
}
/// <summary>
/// 根据输入的Html文本内容(字符串)返回Mht文本内容(二进制流)
/// </summary>
/// <param name="htmlContent">Html文本内容(字符串)</param>
/// <returns>Mht格式的二进制流</returns>
public byte[] ConvertHtmlTextToMht(string htmlContent)
{
string strMhtContent = String.Empty;
CDO.Message message = new CDO.MessageClass();
ADODB.Stream stream=null;
message.MimeFormatted =true;
message.HTMLBody = htmlContent;
stream = message.GetStream();
stream.Charset = _CharSet;
strMhtContent= stream.ReadText(stream.Size);
byte[] bytMhtContent = Encoding.GetEncoding(_CharSet).GetBytes(strMhtContent);
return bytMhtContent;
}
/// <summary>
/// 根据输入的Html文本内容(字符串)返回Mht文本内容(二进制流),成功返回true,失败返回false
/// </summary>
/// <param name="htmlContent">Html文本内容(字符串)</param>
/// <param name="filePath">Mht文件的保存路径</param>
/// <returns>操作结果:成功:true,失败:false</returns>
public bool ConvertHtmlTextToMht(string htmlContent,string filePath)
{
bool isConvertHtmlBytesToMht = false;
CDO.Message message = new CDO.MessageClass();
ADODB.Stream stream=null;
message.MimeFormatted =true;
message.HTMLBody = htmlContent;
stream = message.GetStream();
stream.Charset = _CharSet;
string strMhtContent= stream.ReadText(stream.Size);
byte[] BytMhtContent = Encoding.GetEncoding(_CharSet).GetBytes(strMhtContent);
FileStream fileStream = new FileStream(filePath,FileMode.Create,FileAccess.Write);
fileStream.Write(BytMhtContent,0,BytMhtContent.Length);
message=null;
stream.Close();
isConvertHtmlBytesToMht=true;
return isConvertHtmlBytesToMht;
}
#endregion
} // class HtmlConvertToMhtByCdo
#endregion
} // HTMLConversion
C# html互转mht的更多相关文章
- [No00009A]JsonToObject json与类互转
using System.Web.Script.Serialization; /// <summary> /// 内部类,保存jsonData /// </summary> p ...
- JavaScript 汉字与拼音互转终极方案 附JS拼音输入法
转:http://www.codeceo.com/article/javascript-pinyin.html 前言 网上关于JS实现汉字和拼音互转的文章很多,但是比较杂乱,都是互相抄来抄去,而且有的 ...
- vmware中虚拟机与主机ping不通,桥接模式,IP地址在同一网段,无法互ping!
现象描述:网卡选用的桥接模式,IP地址在同一个网段,虚拟机内部可以正常上网,但是Guest OS和Host OS无法互ping! 原因:虚拟机里的防火墙没有关闭,导致禁用ping功能. 解决方法:关闭 ...
- 【干货】JS版汉字与拼音互转终极方案,附简单的JS拼音输入法
前言 网上关于JS实现汉字和拼音互转的文章很多,但是比较杂乱,都是互相抄来抄去,而且有的不支持多音字,有的不支持声调,有的字典文件太大,还比如有时候我仅仅是需要获取汉字拼音首字母却要引入200kb的字 ...
- 王宝强新片P2P风波持续发酵,互金真的前途未卜?
王宝强离婚风波还未完全结束,一波未平一波又起,新片又引来话题爆点,其自导自演的电影<大闹天竺>陷P2P平台集资的新闻占据各大媒体头条. 该P2P平台为湖北武汉一家P2P互联网金融理财平台& ...
- json、javaBean、xml互转的几种工具介绍
json.javaBean.xml互转的几种工具介绍 转载至:http://blog.csdn.net/sdyy321/article/details/7024236 工作中经常要用到Json.Jav ...
- SQL2008使用json.net实现XML与JSON互转
借助CLR,首先实现字符串的互转,然后使用存储过程实现JSON2table public class JsonFunction { /// <summary> ...
- 使用scp在windows和Linux之间互传文件
转自:http://yangzhongfei.blog.163.com/blog/static/4610987520103141050918/ 为了进行系统维护操作,有时需要再windows和linu ...
- F2工作流引擎参与者类型成员的交、并、互拆计算规则
计算描述:计算规则指的是和其它“参与者类型成员”的之间的计算,必须求解处理人不为空的情况下才进行规则计算,各个“参与者类型成员”按序号顺序执行. 计算算法:并集(权重最低),交集(权重中) ...
随机推荐
- ftp 建立、配置、实用软件 fileZilla server
ftp 建立.配置.实用软件 fileZilla server
- Codeforces Round #215 (Div. 1) B
出来冒个泡 由于数比较大 开了map计数 然后边走边删边加 勉强可过 #include <iostream> #include<cstdio> #include<cs ...
- 【Todo】MQ学习-RabbitMQ, ActiveMQ, Kafka等
之前学习过RabbitMQ,并且还安装过.安装记录的文章如下: Erlang:http://www.cnblogs.com/charlesblc/p/5512380.html RabbitMQ:htt ...
- Android 用户界面---拖放(Drag and Drop)(三)
设计拖放操作 本节主要内容如下: 1. 如何开始拖拽: 2. 在拖拽期间如何响应事件: 3. 如何响应落下事件: 4. 如何结束拖放操作. 开始拖拽 用户使用一个拖拽手势开始拖拽,通常是在 ...
- 【Scala学习笔记】第01弹——Scala安装与配置
安装Scala之前先要安装JDK(1.5以上),最好安装JDK 1.8+,安装好JDK后配置JDK的环境变量. 然后去Scala官网(http://www.scala-lang.org/downloa ...
- HDU 1224 Free DIY Tour
题意:给出每个城市interesting的值,和城市之间的飞行路线,求一条闭合路线(从原点出发又回到原点) 使得路线上的interesting的值之和最大 因为要输出路径,所以用pre数组来保存前驱 ...
- 51nod1364 最大字典序排列
不断的在cur的后面找最大的符合条件的数扔到cur的前面. 用线段树维护操作就可以了. #include<cstdio> #include<cstring> #include& ...
- ubuntu搭建DNS
ubuntu搭建DNS 一. bind简介: BIND是Domain Name System (DNS) 协议的一个实现,提供了DNS主要功能的开放实现,主要包括以下三种: *域名服务器 *D ...
- [转]使用 jQuery Mobile 与 HTML5 开发 Web App —— jQuery Mobile 事件详解
在前文<使用 jQuery Mobile 与 HTML5 开发 Web App —— jQuery Mobile 默认配置与事件基础>中,Kayo 对 jQuery Mobile 事件的基 ...
- 重装yum
1)卸载yum rpm -aq|grep yum|xargs rpm -e --nodeps 2)下载并安装python-urlgrabber,python-pycurl,yum-metadata-p ...