zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    弄懂Java为何只有值传递
    反转链表进阶
    剑指Offer-16:合并两个有序链表
    剑指Offer-15:反转链表
    剑指Offer-14:输入一个链表,输出该链表中倒数第k个结点。
    剑指Offer-13:调整数组位置使奇数位于偶数前面
    Java实现二分查找
    LDAP
    关于Prometheus运维实践项目
    LDAP-openldap服务部署和测试(YUM安装)
  • 原文地址:https://www.cnblogs.com/hyruur/p/3457493.html
Copyright © 2011-2022 走看看