Browsershot是什么
Spatie Browsershot 是一個開源PHP庫,它允許開發者在PHP應用程序中生成網頁的截圖。 這個庫特別適用于Laravel框架,但也可以在其他 PHP 應用程序中使用。
主要特點
- 無頭瀏覽器截圖:使用無頭版本的 Chrome 或 Chromium 瀏覽器來捕獲網頁的截圖,無需打開完整的瀏覽器界面。
- 多種輸出格式:支持生成 PNG、JPEG 以及 PDF 格式的文件。
- 自定義選項:可以自定義截圖的尺寸、縮放比例、用戶代理、超時時間等。
- 等待特定元素:可以設置等待頁面上的某個元素出現或者等待一定時間后再進行截圖。
- JavaScript支持:能夠等待頁面上的 JavaScript 加載完成,確保動態內容被正確渲染。
- 自定義HTML:不僅支持對在線網頁進行截圖,還可以對自定義的 HTML 字符串進行截圖。
- 錯誤處理:提供清晰的錯誤信息,幫助開發者快速定位問題。
- 易于集成:通過 Composer 進行安裝,易于集成到現有的 PHP 項目中。
安裝
Spatie Browsershot 可以通過 Composer 進行安裝:
composer require spatie/browsershot
使用
使用時,可以通過簡單的門面方法調用:
use Spatie\Browsershot\Browsershot;Browsershot::url('https://www.baidu.com')->save('/path/to/save/baidu.png');
一些使用方法介紹
- url(string $url): 指定要截圖的網頁URL。
- save(string $filePath): 設置截圖保存的路徑。
- windowSize(int $width, int $height): 設置截圖的寬度和高度。
- timeout(int $timeout): 設置超時時間,單位為秒。
- waitUntilNetworkIdle(bool $strict = true): 等待網絡空閑,即所有請求都已完成。
- setChromePath(string $path): 設置Chrome或Chromium瀏覽器的可執行文件路徑。
示例
use Spatie\Browsershot\Browsershot;Browsershot::url('https://www.baidu.com')->windowSize(1920,1080)->timeout(30)->waitUntilNetworkIdle()->setChromePath('/usr/bin/google-chrome')->save('/path/to/save/baidu.png');
更多的使用方法請參考官方文檔
注意事項
- 需要安裝Chrome或Chromium瀏覽器,并確保其可執行文件路徑正確。
- 如果報錯puppeteer未找到需要安裝
yarn add puppeteer
#或者
npm i puppeteer
- 報錯puppeteer報錯chrome未找到,就需要通過setChromePath設置Chrome或Chromium的可執行文件路徑
最后
Spatie Browsershot 提供了一個簡單而強大的接口,讓開發者可以輕松地在 PHP 應用程序中生成網頁截圖,無論是用于開發、測試還是生產環境。通過其豐富的參數和選項,開發者可以根據需要定制截圖過程,以滿足特定的應用場景。
– 歡迎點贊、關注、收藏【我碼玄黃】,gonghao同名