PhantomJS é um WebKit sem cabeçalho com uma API Javascript e PHP PhatomJS é uma biblioteca PHP flexível para carregar páginas por meio do navegador sem cabeçalho PhantomJS.
Pré-requisitos
- PHP 5.3. * OU superior
- PHP Bz2
Os passos para instalar o PHP PhantomJS podem ser seguidos aqui .
Um exemplo rápido com o Laravel que tira uma captura de tela e salva no storage
.
use JonnyWPhantomJsClient;
$client = Client::getInstance();
// isLazy() is useful when we want to wait for all resources on the page to load.
$client->isLazy();
// Something important, set the absolute path to phatomjs bin file
$client->getEngine()->setPath(base_path('bin/phantomjs'));
// Some options
$client->getEngine()->addOption('--load-images=true');
$client->getEngine()->addOption('--ignore-ssl-errors=true')
// Here specify the page to take the screenshot
$request = $client->getMessageFactory->createCaptureRequest('https://eresendez.com', 'GET')
$request->setBodyStyles(['backgroundColor' => '#ffffff']);
$request->setOutputFile(storage_path('sample.jpg'));
$response = $client->getMessageFactory()->createResponse()
// Send the request
$client->send($request, $response);
Com isso, é possível obter e armazenar a captura de tela no storage
. O PhantomJs tem a opção de exportar para PDF, porém, se quisermos fazer mais operações com o PDF, é melhor usar outra ferramenta como o DOMPDF e passar essa imagem.
// Send to DOM PDF
$image = storage_path('sample.jpg');
$view = View::make('pdf.sample', compact('image')->render();
$pdf = App::make('dompdf.wrapper');
$pdf->loadHTML($view)->setPaper('letter', 'landscape');
return $pdf->stream();
Concluído, o PhantomJS tem muito mais opções, é muito robusto, mas para este exemplo simples, me ajudou a obter uma imagem de um site, salvá-la e depois tratá-la com DOM PDF.