php-phantomjs中文文檔用法示例集合

php-phantomjs中文用法示例集合.安裝那些就不講了,都是很簡單的東西.
以下是對英文版的文檔API整理的集合DEMO,根據自身選取對應內容組成頁面即可

 <?php
require 'vendor/autoload.php';
use JonnyW\PhantomJs\Client;//引入客戶端
/*自定義模塊*/
use JonnyW\PhantomJs\DependencyInjection\ServiceContainer;
$location = '/path/to/your/script/directory';//自定義模塊所在文件夾
$serviceContainer = ServiceContainer::getInstance();
$procedureLoader = $serviceContainer->get('procedure_loader_factory')
->createProcedureLoader($location);//詳細參見本文頁尾

/*正常實例*/
$client = Client::getInstance();//實例

/*自定義模塊*/
 $client->setProcedure('my_procedure');//加載一個名爲my_procedure.proc的自定義js模塊,詳見本文頁尾
$client->getProcedureLoader()->addLoader($procedureLoader);//自動加載模塊

/*自設phantomjs參數*/
$client->getEngine()->addOption('--load-images=true');//phantomjs參數,參數地址:http://phantomjs.org/api/command-line.html
$client->getEngine()->addOption('--config=/path/to/config.json');//除了單獨配置命令,還可配置命令集配置的json文件::本文頁尾列舉了常用的配置

/*調試與緩存*/
$client->getEngine()->debug(true);//允許或禁止調試
$client->getLog(); //開啓調試則輸出結果
 $client->getProcedureCompiler()->clearCache();//清除緩存.建議允許前進行清除
$client->getProcedureCompiler()->enableCache();//允許緩存,建議開啓
 $client->getProcedureCompiler()->disableCache();//禁止讀取緩存


/*渲染與請求方式*/
 $link='http://jonnnnyw.github.io/php-phantomjs/4.0/3-usage/#on-load-finished';//請求的url
$client->isLazy(); // 是否讓客戶端等待所有資源加載完畢,開啓此項務必開始setTimeout,避免輪詢頁面不斷等待.
$request = $client->getMessageFactory()->createRequest();
$response = $client->getMessageFactory()->createResponse();
$request->setUrl($link);
$request->setMethod('GET');//可GET|POST|OPTIONS|HEAD|DELETE|PATCH|PUT
$request->setTimeout(5000);//超過指定時間則中斷渲染
$request->setDelay(5);//設置延遲5秒
$request->setRequestData(array('param1' => 'Param 1','param2' => 'Param 2'));//POST時發送的數據
$request->addHeader('custom_header_key', 'custom_header_value');//自定義頭信息
$client->send($request, $response);//發送請求

/*截圖(圖或PDF文件)*/
$request->setRepeatingHeader('<h1>Header <span style="float:right">%pageNum% / %pageTotal%</span></h1>',100);//自定義PDF類的頭尾及其高度
$request->setRepeatingFooter('<footer>Footer <span style="float:right">%pageNum% / %pageTotal%</span></footer>',100);//自定義PDF類的頭尾
$request->setViewportSize(200, 100);//設置可視寬高
 $request->setBodyStyles(array('backgroundColor' => '#ff0000'));//設置紙張背景色
 $request->setFormat('A4');//設置尺寸格式,如A4
 $request->setOrientation('landscape');//設置紙張方向如縱向
$request->setPaperSize('10cm', '20cm');//PDF紙張大小
$request->setMargin('1cm');//PDF紙張邊距
$request->setOutputFile('E:\php\file.jpg|file.pdf');//截圖或PDF存儲路徑
$request->setCaptureDimensions(240, 320, 10, 20);//設置截圖寬高與邊距$width, $height, $top, $left

/*響應結果*/
$response->getHeaders();//返回頭組成的數組
$response->getHeader();//返回頭
$response->getStatus();//返回狀態碼:200則正確,其餘錯誤.
$response->getContent();//返回正文
$response->getContentType();//返回正文類型
$response->getUrl();//返回請求地址
$response->getRedirectUrl();//返回重定向後的地址
$response->isRedirect();//返回是否重定向
$response->getConsole();//返回JS控制檯內容

A. 常用命令參數:
1.--ignore-ssl-errors=[true|false]忽略SSL錯誤,例如過期或自簽名證書錯誤(默認爲false)。
2.--load-images=[true|false]加載所有內聯圖像(默認爲true)。
//其它的很少用得到,http://phantomjs.org/api/command-line.html

B.自定義模塊用法:
global_variables.partial 允許任何javascript變量注入腳本的頂部。
page_clip_rect.partial 如果請求是屏幕捕獲,這將定義頁面裁剪矩形。
page_custom_headers.partial 在頁面對象上設置任何自定義標題。
page_on_error.partial 定義頁面錯誤執行的代碼。
page_on_resource_received.partial 定義在資源接收時執行的代碼。
page_on_resource_timeout.partial 定義在資源超時時執行的代碼。
page_open.partial 定義頁面打開時執行的代碼。
page_paper_size.partial 如果請求是PDF輸出,這將設置紙張尺寸。
page_settings.partial 最明顯地定義任何頁面設置資源超時值。
page_viewport_size.partial 如果在請求中定義,請設置視口大小。
page_body_styles.partial 在請求的頁面的body標籤上設置CSS樣式。
phantom_on_error.partial 定義在PhantomJS錯誤中執行的代碼。
procedure_capture.partial 定義請求是捕獲請求時執行的代碼。
procedure_default.partial 定義爲默認請求執行的代碼。
procedure_pdf.partial 定義請求是PDF請求時執行的代碼。
編譯的時候所對應的位置:https://github.com/jonnnnyw/php-phantomjs/blob/master/src/JonnyW/PhantomJs/Resources/procedures/http_default.proc

除了上方的默認模塊之外,你也可以自定義一個js模塊.
首先創建至少755權限的.proc文件,例如/my_procedure(名稱隨意,上面引入時無需後綴).proc

//.proc示例腳本
var page  = require('webpage').create();
page.open ('{{ input.getUrl() }}', '{{ input.getMethod() }}', '{{ input.getBody() }}', function (status) {
//你的js腳本
phantom.exit(1);//退出
});
...

//更多細節,詳見.http://jonnnnyw.github.io/php-phantomjs/4.0/4-custom-scripts/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章