2019年8月27日火曜日

FileMaker WEBビューアに表示されたページを画像として保存 Web Viewer Capture

FileMaker WEBビューアに表示されたページを画像として保存。
 動作検証
Windows 10
FileMaker 16, 17, 18
プラグイン:ScriptMakerPSが必要
サンプルファイル
https://sites.google.com/site/scriptmakerps/example/web-viewer-capture




$top=GetLayoutObjectAttribute ("WEB01" ; "top")
;$left=GetLayoutObjectAttribute ("WEB01" ; "left")
;$height=GetLayoutObjectAttribute ("WEB01" ; "height")
;$width=GetLayoutObjectAttribute ("WEB01" ; "width")

FileMaker 16 から、上記の様な感じでWEBビューアの位置情報を取得すると、"top"、"left"は、PC画面全体を基準とした位置を返します。コレを利用しPowerShellでWEBビューアに表示された部分を画像として保存することが出来ます。

PowerShell例:

$W={width};
$H={height};
$T={top};
$L={left};
Add-Type -AssemblyName System.Windows.Forms ;
Add-Type -AssemblyName  System.Drawing  ;
$rect = [System.windows.forms.Screen]::PrimaryScreen.Bounds;
$bitmap = new-object System.Drawing.Bitmap( $W, $H, [System.Drawing.Imaging.PixelFormat]::Format32bppArgb);
$graphics = [System.Drawing.Graphics]::FromImage($bitmap);
$graphics.CopyFromScreen( $L, $T,   0, 0,   $bitmap.Size , [System.Drawing.CopyPixelOperation]::SourceCopy);
$memStream = New-Object System.IO.MemoryStream;
$bitmap.Save($memStream,[System.Drawing.Imaging.ImageFormat]::Png );
[byte[]]$bytes = $memStream.ToArray();
$result=([convert]::ToBase64String($bytes)).ToString();
Write-Output  $result;

上記を実行してキャプチャ画像をpngにして、Base64で取得し、FileMakerで画像へ変換。頑張ればプラグイン無しでも実行可能。

サンプルは、プラグイン:ScriptMakerPSを使用。
サンプルファイル
https://sites.google.com/site/scriptmakerps/example/web-viewer-capture

0 件のコメント:

コメントを投稿