Headless Chrome is shipping in Chrome 59. It's a way to run the Chrome browser in a headless environment. Essentially, running Chrome without chrome! It brings all modern web platform features provided by Chromium and the Blink rendering engine to the command line.
PHPHeadlessChrome provides a simple usage helper class to create PDF and / or screenshots using a Headless Chrome instance. Trigger PDF / Screenshots generation for webpages / string HTML or local URL.
In order to use this PHPHeadlessChrome helper make sure Google Chrome is correctly installer from version 59 or onwards.
Install the package through composer:
composer require daandesmedt/phpheadlesschrome
Make sure, that you include the composer autoloader somewhere in your codebase.
Use the PHPHeadlessChrome
tool when you want to convert a webpage / HTML text or (local) HTML file to a PDF or image screenshot.
Working examples can be found in the examples
folder.
<?php
require __DIR__ . '/../vendor/autoload.php';
use daandesmedt\PHPHeadlessChrome\HeadlessChrome;
$headlessChromer = new HeadlessChrome();
$headlessChromer->setUrl('http://www.google.be');
$headlessChromer->setBinaryPath('C:\Program Files (x86)\Google\Chrome\Application\chrome');
$headlessChromer->setOutputDirectory(__DIR__);
$headlessChromer->toPDF('output.pdf');
print 'PDF generated to : ' . $headlessChromer->getFilePath();
<?php
require __DIR__ . '/../vendor/autoload.php';
use daandesmedt\PHPHeadlessChrome\HeadlessChrome;
$headlessChromer = new HeadlessChrome();
$headlessChromer->setUrl('http://www.google.be');
$headlessChromer->setBinaryPath('C:\Program Files (x86)\Google\Chrome\Application\chrome');
$headlessChromer->setOutputDirectory(__DIR__);
$headlessChromer->toScreenShot('output.jpg');
print 'Screenshot saved to : ' . $headlessChromer->getFilePath();
<?php
require __DIR__ . '/../vendor/autoload.php';
use daandesmedt\PHPHeadlessChrome\HeadlessChrome;
$headlessChromer = new HeadlessChrome();
$headlessChromer->setBinaryPath('C:\Program Files (x86)\Google\Chrome\Application\chrome');
$headlessChromer->setOutputDirectory(__DIR__);
$headlessChromer->setHTML('<h1>Headless Chrome PHP example</h1><h3>HTML to PDF</h3>');
$headlessChromer->toPDF('output.pdf');
print 'PDF generated to : ' . $headlessChromer->getFilePath();
<?php
require __DIR__ . '/../vendor/autoload.php';
use daandesmedt\PHPHeadlessChrome\HeadlessChrome;
$headlessChromer = new HeadlessChrome();
$headlessChromer->setBinaryPath('C:\Program Files (x86)\Google\Chrome\Application\chrome');
$headlessChromer->setOutputDirectory(__DIR__);
$headlessChromer->setHTML('<h1>Headless Chrome PHP example</h1><h3>HTML to PDF</h3>');
$headlessChromer->toScreenShot('output.jpg');
print 'Screenshot saved to : ' . $headlessChromer->getFilePath();
<?php
require __DIR__ . '/../vendor/autoload.php';
use daandesmedt\PHPHeadlessChrome\HeadlessChrome;
$headlessChromer = new HeadlessChrome();
$headlessChromer->setBinaryPath('C:\Program Files (x86)\Google\Chrome\Application\chrome');
$headlessChromer->setOutputDirectory(__DIR__);
$headlessChromer->setHTMLFile(__DIR__ . '\assets\HTMLFile.html');
$headlessChromer->toPDF('output.pdf');
print 'PDF generated to : ' . $headlessChromer->getFilePath();
<?php
require __DIR__ . '/../vendor/autoload.php';
use daandesmedt\PHPHeadlessChrome\HeadlessChrome;
$headlessChromer = new HeadlessChrome();
$headlessChromer->setBinaryPath('C:\Program Files (x86)\Google\Chrome\Application\chrome');
$headlessChromer->setOutputDirectory(__DIR__);
$headlessChromer->setHTMLFile(__DIR__ . '\assets\HTMLFile.html');
$headlessChromer->toScreenShot('output.jpg');
print 'Screenshot saved to : ' . $headlessChromer->getFilePath();
<?php
require __DIR__ . '/../vendor/autoload.php';
use daandesmedt\PHPHeadlessChrome\HeadlessChrome;
$headlessChromer = new HeadlessChrome();
$headlessChromer->setBinaryPath('C:\Program Files (x86)\Google\Chrome\Application\chrome');
$headlessChromer->setOutputDirectory(__DIR__);
$headlessChromer->setHTMLFile(__DIR__ . '\assets\HTMLFile.html');
var_dump($headlessChromer->getDOM());
$headlessChromer->useMobile();
$headlessChromer->setWindowSize(375, 667);
$headlessChromer->disablePDFHeader();