把整个网页保存成JPG图片(针对单框架网页)

procedure TForm1.Button1Click(Sender: TObject);
var
Doc: IHTMLDocument2;
ViewObject: IViewObject;
sourceDrawRect: TRect;
a, getjpg: TBitMap;
i, m: integer;
pdest, psour: hbitmap;
jpg: tjpegimage;
begin
Doc :
= WebBrowser.Document as IHTMLDocument2;
if Webbrowser.Document <> nil then
try
webbrowser.Document.QueryInterface(IViewObject, ViewObject);
if ViewObject <> nil then
try
Doc.Get_ParentWindow.Scroll(
0, 0); //跳到网页头
getjpg :
= TBitMap.Create();
getjpg.PixelFormat :
= pf24bit;
getjpg.Height :
= doc.Body.getAttribute(\'scrollHeight\', 0);
getjpg.Width :
= doc.Body.getAttribute(\'scrollwidth\', 0);
pdest :
= getjpg.Canvas.Handle;
m :
= Trunc(doc.Body.getAttribute(\'ScrollHeight\', 0) / (doc.Body.getAttribute(\'offsetHeight\', 0) - 20));
i :
= Trunc(doc.Body.getAttribute(\'Scrollwidth\', 0) / (doc.Body.getAttribute(\'offsetwidth\', 0) - 20));
for i := 0 to i do
begin
for m := 0 to m 1 do
begin
a :
= TBitMap.Create();
a.Height :
= doc.Body.getAttribute(\'offsetHeight\', 0);
a.Width :
= doc.Body.getAttribute(\'offsetwidth\', 0);
psour :
= a.Canvas.handle;
sourceDrawRect :
= Rect(0, 0, a.Width, a.Height);
ViewObject.Draw(DVASPECT_CONTENT,
1, nil, nil, Self.Handle, a.Canvas.Handle, @sourceDrawRect, nil, nil, 0);
bitblt(pdest, doc.Body.getAttribute(
\'scrollLeft\', 0), doc.Body.getAttribute(\'Scrolltop\', 0), a.Width, a.Height, psour, 2, 2, srccopy);
Doc.Get_ParentWindow.Scroll(doc.Body.getAttribute(
\'scrollLeft\', 0), doc.Body.getAttribute(\'offsetHeight\', 0) doc.Body.getAttribute(\'Scrolltop\', 0) - GetSystemMetrics(SM_CXVSCROLL) - 24);
a.Free;
end;
Doc.Get_ParentWindow.Scroll(doc.Body.getAttribute(
\'offsetwidth\', 0) doc.Body.getAttribute(\'scrollLeft\', 0) - GetSystemMetrics(SM_CXVSCROLL) - 24, 0);
end;
jpg :
= tjpegimage.Create;
jpg.Assign(getjpg);
getjpg.Free;
jpg.SaveToFile(
\'c:\test.jpg\');
jpg.Free;
finally
ViewObject._Release;
end;
except
end;
end;

版权声明:本文为jxsoft原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jxsoft/archive/2011/03/21/1990092.html