Using phantomjs client in laravel
Via Composer
$ composer require ahmedzidan/laravel-phantomjs
Add the following provider to providers part of config/app.php
Josh\Component\PhantomJs\PhantomJsServiceProvider::class
and the following Facade to the aliases part
'PhantomJs' => Josh\Component\PhantomJs\Facade\PhantomJs::class
and then you can run vendor:publish command for generating phantomjs config file
$ php artisan vendor:publish --provider="Josh\Component\PhantomJs\PhantomJsServiceProvider"
The following illustrates how to make a basic GET request and output the page content:
// Tells the client to wait for all resources before rendering
$request = \PhantomJs::get('http://phantomjs.org/');
\PhantomJs::isLazy()->send($request);
// you can use Facade or app make function to use phantomjs
// ex: app('phantomjs') or \PhantomJs
$request = \PhantomJs::get('http://phantomjs.org/');
$response = \PhantomJs::send($request);
if($response->getStatus() === 200) {
// Dump the requested page content
echo $response->getContent();
}
Saving a screen capture to local disk:
$request = \PhantomJs::createImage('http://phantomjs.org/', 'GET');
$request->setOutputFile(public_path('file.jpg'));
$request->setViewportSize(800, 600);
$request->setCaptureDimensions(800, 600, 0, 0);
$response = \PhantomJs::send($request);
if($response->getStatus() === 200) {
// Dump the requested page content
echo $response->getContent();
}
Outputting a page as PDF:
$request = \PhantomJs::createPdf('http://phantomjs.org/', 'GET');
$request->setOutputFile(public_path('document.pdf'));
$request->setFormat('A4');
$request->setOrientation('landscape');
$request->setMargin('1cm');
$response = \PhantomJs::send($request);
if($response->getStatus() === 200) {
// Dump the requested page content
echo $response->getContent();
}
The MIT License (MIT)