Hello,
You can try this approach:
1.
uses ... Soap.EncdDecd;
2.
procedure TMainForm.UniButton1Click(Sender: TObject);
begin
with UniButton1 do
JSInterface.JSCode('html2canvas(document.querySelector("#' + JSId +'")).then(function(canvas) {ajaxRequest('#1', "getData", ["base64Data="+canvas.toDataURL()])});');
end;
3.
procedure TMainForm.UniButton1AjaxEvent(Sender: TComponent; EventName: string;
Params: TUniStrings);
var
stream: TBytesStream;
base64s: string;
AUrl: string;
begin
if EventName = 'getData' then
begin
base64s := Params.Values['base64Data'];
base64s := StringReplace(base64s, 'data:image/png;base64,', '', [rfReplaceAll]);
stream := TBytesStream.Create(DecodeBase64(base64s));
try
stream.SaveToFile(UniServerModule.NewCacheFileUrl(False, 'png', '', '', AUrl, True));
UniImage1.Url := AUrl;
finally
stream.Free;
end;
end;
end;
4. CustomFiles:
files/html2canvas.min.js