PHP使用Browsershot進行網頁截圖

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');

一些使用方法介紹

  1. url(string $url): 指定要截圖的網頁URL。
  2. save(string $filePath): 設置截圖保存的路徑。
  3. windowSize(int $width, int $height): 設置截圖的寬度和高度。
  4. timeout(int $timeout): 設置超時時間,單位為秒。
  5. waitUntilNetworkIdle(bool $strict = true): 等待網絡空閑,即所有請求都已完成。
  6. 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同名

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13341.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13341.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13341.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

整理好了!2024年最常見 100 道 Java基礎面試題(四十九)

上一篇地址:整理好了!2024年最常見 100 道 Java基礎面試題(四十八)-CSDN博客 九十七、Class.forName 和 ClassLoader 的區別? Class.forName 和 ClassLoader 是Java中用于加載類的兩個不同的概念,它們在類…

10W 3KVAC隔離 寬電壓輸入 AC/DC 電源模塊 ——TP10AF系列

TP10AF系列輸出功率為10W,具有可靠性高、更小的體積、性價比高等特點,廣泛用于工控和電力儀器、儀表、智能家居等相關行業。

SMB攻擊利用之-mimikatz上傳/下載流量數據包逆向分析

SMB協議作為windows環境下最為常見的一種協議,在歷史上出現過無數的通過SMB協議進行網絡攻擊利用的案例,包括針對SMB協議本身以及通過SMB協議實施網絡攻擊。 本文將介紹一種通過SMB協議的常見利用方式,即向遠程主機傳輸mimikatz,作為我的專欄《SMB攻擊流量數據包分析》中的…

Oracle數據塊之數據行中的SCN

從Oracle 10g開始,如果在表級別打開ROW DEPENDENCIES,業務數據行發生更改時會在數據塊中進行登記。 可以通過DUMP數據塊來觀察上述SCN: (1)創建測試表,插入3條測試數據,插入一條提交一次。并調用…

解析建筑裝飾乙級資質標準及申請流程

建筑裝飾乙級資質標準 資歷與信譽 必須具備獨立的企業法人資格。社會信譽良好,注冊資本不少于100萬元人民幣。 技術條件 專業技術人員配備齊全、合理,滿足相應資質標準中對主要專業技術人員數量和專業的具體要求。通常包括但不限于室內設計、建筑、環境藝…

jar包增量更新分析

jdk自帶工具jdeps,可分析class依賴關系(依賴的其它類和jar)。 團隊,可以在此工具結果的基礎上再詳細分析對比出增量文件; 思路如下: jdeps分別分析出舊包和新包的文件依賴關系。并對比出新增的文件列表、…

前端學習第一課

AJAX 事先說明,這只是記錄,并不是從零到一的教學內容,如果想要學習的話,可以跳過本文章了 ok,轉回正題,正如上面所說,這只是記錄。其實我是有一定的前端基礎的,也做過涉及相關的開發…

【工具】macOS、window11訪問limux共享目錄\共享磁盤,samba服務安裝使用

一、samba服務安裝 Samba是一個免費的開源軟件實現,使得非Windows操作系統能夠與Windows系統進行文件和打印服務共享。它實現了SMB/CIFS協議,并且能夠在Linux、Unix、BSD等多種系統上運行。 安裝 samba: sudo yum install samba配置 samba…

【kali工具】NMAP 高級使用技巧

NMAP 高級使用技巧 6.1.3 NMAP 語法及示例 語法:nmap [Scan Type(s)] [Options] 例 1:使用 nmap 掃描一臺服務器 默認情況下,Nmap 會掃描 1000 個最有可能開放的 TCP 端口。 ┌──(root💀xuegod53)-[~] └─# nmap 192.168…

【介紹下Python多線程,什么是Python多線程】

🌈個人主頁: 程序員不想敲代碼啊 🏆CSDN優質創作者,CSDN實力新星,CSDN博客專家 👍點贊?評論?收藏 🤝希望本文對您有所裨益,如有不足之處,歡迎在評論區提出指正,讓我們共…

【氣象常用】時間序列的線性擬合

效果圖: 主要步驟: 1. 數據準備:下載Hadley Centre observations datasets的HadSST數據 可參考【氣象常用】時間序列圖-CSDN博客 2. 數據處理:計算線性擬合 3. 圖像繪制:繪制折線及擬合線,并添加文本 …

Nacos部署選擇數據源mysql8.0,啟動報錯No DataSource Set(終極解決方案)

Nacos部署選擇數據源mysql8.0,啟動報錯No DataSource Set(終極解決方案) 選擇mysql5.7正常,但是選擇mysql8.0就報這個錯,配置都確認無問題,但就是用不了mysql8.0 排查了好久,發現是數據庫字符集…

其他自動化工程師都在偷偷學習AI技術,你再不學就落后了!一篇文章教會你使用AI!

其他自動化工程師都在偷偷學習AI技術,你再不學就落后了!一篇文章教會你使用AI! 哈嘍,大家好,我是小叔。了解小叔的朋友都清楚,我從來都不是標題黨,我只會用美女圖片來吸引你們😂&am…

python 六句話讓電腦告訴你,剛才插入的串口編號

六句話讓電腦告訴你,我的串口號 第一步,安裝python 編譯器以及pyserial 模塊第二步,寫入代碼 import serial.tools.list_ports usart_list list(serial.tools.list_ports.comports()) input("Please insert your serial port:")…

【OpenCV 基礎知識 4】分離圖像通道

cvSplit()是openCV中的一個函數,它分別復制每個通道到多個單通道圖像。 void cvSplit( const CvArr* src, CvArr* dst0, CvArr* dst1, CvArr* dst2, CvArr* dst3 );.cvSplit()函數將復制src的各個通道到圖像dst0,dst1,dst2和dst3中…

midjourney里有哪些常用參數?

一、stylize參數 Midjourney 經過訓練,可以生成更加具有藝術色彩、構圖和形式的圖像。 --stylize或參數--s影響該訓練的應用程度。 低風格化值生成的圖像與提示詞非常匹配,但藝術性較差。數值越高藝術性更好,但是和描述詞相關性更差&#…

Polars,一個高效處理數據的python庫

Polars 庫簡介 Polars 是一個用于數據操作和分析的快速、內存優化的Rust編寫的DataFrame庫,具有類似于Pandas的API接口。它提供了高性能的數據操作、并行計算和內存效率,適用于處理大規模數據集。 安裝與使用 使用 pip 安裝 Polars:pip install polarsPython 中導…

【python量化交易】—— 雙均線擇時策略 - Qteasy自定義交易策略【附源碼】

使用qteasy自定義并回測雙均線交易策略 使用qteasy自定義并回測一個雙均線擇時策略策略思想導入qteasy模塊創建一個新的策略回測交易策略,查看結果 使用qteasy自定義并回測一個雙均線擇時策略 我們今天使用qteasy來回測一個雙均線擇時交易策略,qteasy是…

Spring初學入門(跟學筆記)

一、Spring概述 Spring是一款主流的Java EE輕量級開源框架。 Spring的核心模塊:IoC(控制反轉,指把創建對象過程交給Spring管理 )、AOP(面向切面編程,在不修改源代碼的基礎上增強代碼功能) 二、…

AI大語言模型在公共服務中的應用實例

隨著計算機技術的飛速發展,人工智能已經成為了當今科技領域的熱門話題。從早期的圖靈測試到現在的深度學習和神經網絡,人工智能已經取得了令人矚目的成就。特別是近年來,大數據、云計算、高性能計算等技術的發展為人工智能的研究提供了更加廣…