在Web開發(fā)中,我們經(jīng)常需要獲取頁面的截圖、生成PDF文件等操作。而這些需求往往都可以通過使用PhantomJS來實(shí)現(xiàn)。PhantomJS是一個(gè)基于WebKit的JavaScript API,它可以在無需顯示瀏覽器的情況下,渲染頁面并提供截圖、PDF輸出等操作。而結(jié)合PHP exec函數(shù),我們可以很輕松地在PHP中調(diào)用PhantomJS命令行工具。
使用exec函數(shù)調(diào)用PhantomJS,最簡(jiǎn)單的用法就是在PHP文件中直接執(zhí)行PhantomJS的命令行工具。比如,我們要獲取某個(gè)網(wǎng)頁的截圖,可以使用如下代碼:
$url = "http://www.baidu.com"; $output_file = "baidu.png"; $command = "phantomjs screenshot.js $url $output_file"; exec($command);
這里的screenshot.js是一個(gè)使用PhantomJS的腳本文件,它的內(nèi)容如下:
var page = require('webpage').create(); var system = require('system'); if (system.args.length< 3) { console.log("Usage: screenshot.js
上述代碼中,我們首先創(chuàng)建了一個(gè)webpage對(duì)象,然后通過system.args獲取了PHP傳遞過來的URL和輸出文件名,最后使用page.open函數(shù)打開網(wǎng)頁,調(diào)用page.render將網(wǎng)頁截圖輸出。
除了截圖功能,PhantomJS還可以方便地生成PDF文件。下面是一個(gè)使用PhantomJS生成PDF的示例:
$url = "http://www.baidu.com"; $output_file = "baidu.pdf"; $command = "phantomjs pdf.js $url $output_file"; exec($command);
pdf.js的代碼如下:
var page = require('webpage').create(); var system = require('system'); if (system.args.length< 3) { console.log("Usage: pdf.js
這里的pdf.js與screenshot.js的區(qū)別只在于使用了page.paperSize設(shè)置了PDF的頁面大小、方向和邊緣距離。
當(dāng)然,PhantomJS的功能遠(yuǎn)不止于此,在實(shí)際開發(fā)中,我們還可以利用它進(jìn)行自動(dòng)化測(cè)試、爬蟲等操作,使用exec函數(shù)調(diào)用PhantomJS的命令行工具,可以方便地將這些操作整合到PHP腳本中。