PHP 的 imagegrabscreen() 與 imagegrabwindow() 函數結合 COM 元件,可在 Windows 環境下透過控制 Internet Explorer 實現網頁截圖功能。本文提供四種常見應用場景的完整程式碼範例,並說明常見失敗原因與解決方案。
php_com_dotnet.dll 擴展<?php $im = imagegrabscreen(); imagepng($im, "myscreenshot.png"); ?>
<?php
$browser = new COM("InternetExplorer.Application");
$handle = $browser->HWND;
$browser->Visible = true;
$im = imagegrabwindow($handle);
$browser->Quit();
imagepng($im, "iesnap.png");
$im = imagegrabscreen(); // 可選:再截一次全螢幕
?>
<?php
$browser = new COM("InternetExplorer.Application");
$handle = $browser->HWND;
$browser->Visible = true;
$browser->Navigate("https://www.jb51.net");
// 等待頁面載入完成
while ($browser->Busy) {
com_message_pump(4000);
}
$im = imagegrabwindow($handle, 0); // 0 表示包含客戶區內容
$browser->Quit();
imagepng($im, "iesnap.png");
?>
<?php
$browser = new COM("InternetExplorer.Application");
$handle = $browser->HWND;
$browser->Visible = true;
$browser->FullScreen = true;
$browser->Navigate("https://www.jb51.net");
while ($browser->Busy) {
com_message_pump(4000);
}
$im = imagegrabwindow($handle, 0);
$browser->Quit();
imagepng($im, "iesnap.png");
?>
若執行結果為全黑圖片,通常有兩個原因:
Apache2.4)右鍵「內容」考慮到 IE 已停止支援、跨平台需求與維護性,建議新專案採用以下方案:
chrome-php/chrome)。