DELPHI HTM文件保存为MHT文件

teststudio teststudio 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
求解:
把一个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文件用记事本打开的

...全文
评论 1
收藏 已收藏
分享
返回顶部
teststudio
Delphi 5,944 成员 262,941 内容