DELPHI HTM文件保存为MHT文件

teststudio 2013-11-20 02:35:15
求解:
把一个HTM文件保存为MHT文件

把 C:\1.htm 文件 保存为 C:\2.mht文件
注这个1.htm文件里面有图片的

最重要的功能是把图片文件写入到 2.mht文件中 如果用的是一个绝对路径那就失败了
把一个HTM文件保存为MHT文件 这一功能wizHtmlEditor能做到


下面这段代码是用DELPHI实现的保存HTM为MHT文件 但不能实现我这一要求


implementation
uses ADODB_TLB, CDO_TLB,ComObj ;
{$R *.dfm}


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, cdoSuppressImages, '', '');//cdoSuppressNone,cdoSuppressImages,cdoSuppressAll
Stream := Msg.GetStream;
Stream.SaveToFile(FileName, adSaveCreateOverWrite);
finally
Msg := nil;
Conf := nil;
Stream := nil;
end;
end; (* WB_SaveAs_MHT *)



procedure TForm1.Button1Click(Sender: TObject);
var
f:string;
begin
f:=ExtractFilePath(Application.ExeName)+'WebDoc.htm';
webbrowser1.Navigate(f);
end;


procedure TForm1.Button2Click(Sender: TObject);
var
f1:string;
begin
f1:=ExtractFilePath(Application.ExeName)+'1.mht';
WB_SaveAs_MHT(webbrowser1,f1);
end;


它保存的图片仍然是绝对路径 如图
这是无意义的
经反复测试 cdoSuppressNone,cdoSuppressImages,cdoSuppressAll修改成这3个的其中一个都不能实现下面的功能


WIZ的是保存成这样的



这里多了个mhtml 和 cid 把这个BBBBB.mht 文件复制到别人的电脑上是图片不会丢失

这是MHT文件用记事本打开的

...全文
306 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧