使用TWebBrowser组件保存网页为html和mht文件 收藏

一、保存为HTML文件

uses ActiveX;
...
procedure WB_SaveAs_HTML(WB : TWebBrowser; const FileName : string) ;
var
  PersistStream: IPersistStreamInit;
  Stream: IStream;
  FileStream: TFileStream;
begin
  if not Assigned(WB.Document) then
  begin
    ShowMessage(‘Document not loaded!‘) ;
    Exit;
  end;

PersistStream := WB.Document as IPersistStreamInit;
  FileStream := TFileStream.Create(FileName, fmCreate) ;
  try
    Stream := TStreamAdapter.Create(FileStream, soReference) as IStream;
    if Failed(PersistStream.Save(Stream, True)) then ShowMessage(‘SaveAs HTML fail!‘) ;
  finally
    FileStream.Free;
  end;
end; (* WB_SaveAs_HTML *)

使用方法:

WebBrowser1.Navigate(‘http://www.uufax.com‘) ;

//then save
WB_SaveAs_HTML(WebBrowser1,‘c:/WebBrowser1.html‘) ;

二、另存为MHT单一文件

uses CDO_TLB, ADODB_TLB;
...
procedure WB_SaveAs_MHT(WB: TWebBrowser; FileName: TFileName) ;
var
  Msg: IMessage;
  Conf: IConfiguration;
  Stream: _Stream;
  URL : widestring;
begin
  if not Assigned(WB.Document) then Exit;

URL := WB.LocationURL;

Msg := CoMessage.Create;
  Conf := CoConfiguration.Create;
  try
    Msg.Configuration := Conf;
    Msg.CreateMHTMLBody(URL, cdoSuppressAll, ‘‘, ‘‘) ;
    Stream := Msg.GetStream;
    Stream.SaveToFile(FileName, adSaveCreateOverWrite) ;
  finally
    Msg := nil;
    Conf := nil;
    Stream := nil;
  end;
end; (* WB_SaveAs_MHT *)

使用方法:

//first navigate
WebBrowser1.Navigate(‘http://www.uufax.com‘) ;

//then save
WB_SaveAs_MHT(WebBrowser1,‘c:/WebBrowser1.mht‘) ;

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sunstone/archive/2009/11/09/4788743.aspx

时间: 2024-10-16 02:42:57

使用TWebBrowser组件保存网页为html和mht文件 收藏的相关文章

C#代码实现把网页文件保存为mht文件

MHT叫“web单一文件”.顾名思义,就是把网页中包含得图片,CSS文件以及HTML文件全部放到一个MHT文件里面.而且浏览器可以直接读取得. 由于项目需要,需实现把指定的网页文件保存为mht文件.于是到网上搜索了相关的资料.找到了一份代码.测试后通过. 现将实现过程记录如下: Step 1:项目引用文件: 安装目录/System32/cdosys.dll(c:/windows/System32/cdosys.dll),这样,将增加两个命名空间:ADODB, CDO. Step 2:放一个按钮b

组件接口(API)设计指南-文件夹

组件接口(API)设计指南-文件夹 组件接口(API)设计指南[1]-要考虑的问题 组件接口(API)设计指南[2]-类接口(class interface) 组件接口(API)设计指南[3]-托付(delegate)和数据源协议(data-source protocols) 组件接口(API)设计指南[4]-通知(Notifications) 组件接口(API)设计指南[5]-最后的思考 高速摘要: 译者注: 原文中"delegate"译为中文"托付/代理",含义

Webbrowser中显示MHT文件

把MHT文件存成临时文件,用WEBBROWSER的Navigate方法打开,代码如下: //从程序集中读取资源文件 Assembly asmm = Assembly.GetCallingAssembly(); Assembly asm = Assembly.ReflectionOnlyLoadFrom(AddInfo.HTMLAssembly); Stream str=asm.GetManifestResourceStream(AddInfo.HTMLNavigationFile); if (s

Android5.1 - Email app打开mht文件闪退

log如下: 07-16 01:58:54.966: E/AndroidRuntime(14224): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.email/com.android.mail.browse.EmlViewerActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat th

.NET/ASP.NET 4.5 Bundle组件(捆绑、缩小静态文件)

阅读目录: 1.开篇介绍 2.System.Web.Optimization 组件 3.System.Web.Optimization 组件基本原理 4.扩展自定义类型静态文件 1]开篇介绍 这篇文章将简单的分析一下有关静态文件捆绑的ASP.NET组件System.Web.Optimization的运行原理及基本的缓存问题: 在我们的项目里面充斥着很多静态文件,为了追求模块化.插件化很多静态文件都被设计成模块的方式或者被分解,在需要的时候在通过组合的方式在UI层上使用:这就带来一个问题,文件多了

vue单文件组件实例2:简单单文件组件

? Introduce.vue: <template> <div class="intro"> 单位介绍 </div> </template> <script> </script> <style scoped> .intro{ font-size:20px; color:#000; margin:20px auto; } </style> Employment.vue: <templa

drf框架 2 drf框架的请求生命周期(as_view和dispatch方法), 请求、解析、渲染、响应、异常, 序列化组件 ,ORM配置回顾(media文件配置),应用在settings.py中INSTALLED_APPS注册意义 ,数据库配置

应用是否需要在INSTALLED_APPS中注册 ''' 在没有使用到app的一些特殊操作时(比如数据库相关),不需要app的__init__文件注册时,文件夹可以不用注册,但是注册后,应用的所有功能都能使用 结论:所有应用都可以完成注册 ''' 数据库配置(全部在settings文件中完成即可) import pymysql pymysql.install_as_MySQLdb() DATABASES = { 'default': { 'ENGINE': 'django.db.backends

为工程添加组件+改写JSP页面为HTML文件

主要代码 一   配置文件--追加配置项 springMVC-servlet.xml <!-- thymeleaf的视图解析器 --> <bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver"> <property name="prefix" value="/WEB-IN

vue单文件组件实例1:简单单文件组件

? HelloWorld.vue: <template> <div class="hello"> <h1>{{msg}}</h1> </div> </template> <script> export default { name: 'HelloWorld', data: function (){ return { msg: 'Welcome to Your Vue.js App!' } } } <