作成日:
TEdgeBrowserでPNGとして保存する
Delphiのバージョンは12.1です。
手動でよければ
コンテキストメニューで「スクリーンショット」を選ぶとPNGとして保存できます。
CapturePreview
TEdgeBrowserのCapturePreviewを使うとPNGとして保存できますが、ページ全体ではなく表示されている部分のみになります。
begin
EdgeBrowser1.CapturePreview('c:\temp\test.png');
end;
CallDevToolsProtocolMethod
CallDevToolsProtocolMethodを使ってDevToolsの機能を呼び出します。ページ全体をPNGにできますがExperimentalな方法です。
type
TCoreWebView2CallDevToolsProtocolMethodCompletedHandler = class
(TInterfacedObject, ICoreWebView2CallDevToolsProtocolMethodCompletedHandler)
private
function Invoke(errorCode: HResult; returnObjectAsJson: PWideChar): HResult; stdcall;
end;
implementation
uses
System.JSON, System.NetEncoding;
function TCoreWebView2CallDevToolsProtocolMethodCompletedHandler.Invoke
(errorCode: HResult; returnObjectAsJson: PWideChar): HResult;
var
JSON: TJSONObject;
Base64Data: String;
Stream: TMemoryStream;
Bytes: TArray;
begin
JSON := TJSONObject.ParseJSONValue(returnObjectAsJson) as TJSONObject;
try
Base64Data := JSON.GetValue('data');
Stream := TMemoryStream.Create;
try
Bytes := TNetEncoding.Base64.DecodeStringToBytes(Base64Data);
Stream.WriteData(Bytes, Length(Bytes));
Stream.SaveToFile('c:\temp\test.png');
finally
Stream.Free;
end;
finally
JSON.Free;
end;
Result := errorCode;
end;
const
Method = 'Page.captureScreenshot';
Params = '{"format":"png", "captureBeyondViewport":true}';
begin
EdgeBrowser1.DefaultInterface.CallDevToolsProtocolMethod(Method, PWideChar(Params),
TCoreWebView2CallDevToolsProtocolMethodCompletedHandler.Create);
end;