marucat / php-puppeteer
PHP Wrapper for Google Chrome Puppeteer
Requires
- php: >=5.4.0
This package is not auto-updated.
Last update: 2024-10-25 16:22:46 UTC
README
This project provides the ability to generate PDF/PNG with Puppeteer in PHP
Dependencies
The library is running based on Nodejs(7.6 above) and Puppeteer It is tested under NodeJS 8.
Installation on CentOS 7:
sudo curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
sudo yum install -y nodejs pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64 ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc
sudo npm install --global --unsafe-perm puppeteer
sudo chmod -R o+rx /usr/lib/node_modules/puppeteer/.local-chromium
Installation on Ubuntu 16.04:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
sudo npm install --global --unsafe-perm puppeteer
sudo chmod -R o+rx /usr/lib/node_modules/puppeteer/.local-chromium
Installation
Install marucat/php-puppeteer
using Composer.
composer require marucat/php-puppeteer
Usage
Parameters
The library has set some default parameter values to support basic features, you can set the customized parameters to override the default ones, it supports all parameters of Puppeteer API
Sample parameter array:
$config = [
'html' => "<h1>Hello World</h1>",
'pdf' => [
'path' => '/tmp/test.pdf',
'margin' => [
'top' => '10mm',
'right' => '10mm',
'bottom' => '10mm',
'left' => '10mm',
]
]
];
Note:
- If both
$config['pdf']['html']
and $config['pdf']['url'] are set,html
will be picked up. - If
$config['pdf']['path']
is not set, will return pdf data
Import
You need to import this namespace at the top of your PHP class
use Marucat\PhpPuppeteer\Browser;
PDF by URL
You can generate PDF by URL through pdf
function:
public function actionTest1()
{
$config = [
"url" => "https://www.highcharts.com/demo/line-basic",
];
$browser = new Browser();
$browser->isDebug = true;
$content = $browser->pdf($config);
header("Content-type:application/pdf");
echo $content;
}
You can set any parameter in $config
to override the default values
PDF by HTML
You can generate PDF by html code through pdf
function:
public function actionTest2()
{
$config = [
"html" => "<h1>Hello Wolrd</h1>"
];
$browser = new Browser();
$content = $browser->pdf($config);
header("Content-type:application/pdf");
echo $content;
}
Debug The class
Browser
has one parameter$isDebug
, it would be debug mode if it'strue
, detailed error messages would be returned from
PDF to specific path
You can generate PDF to a specific path by setting $config['pdf']['path']
public function actionTest3()
{
$config = [
"html" => "<h1>Hello Wolrd</h1>",
'pdf' => [
'path' => '/tmp/test.pdf',
]
];
$browser = new Browser();
$browser->isDebug = true;
$result = $browser->pdf($params);
if (isset($result['returnVal'])&& $result['returnVal'] == 0) {
echo "PDF generated successfully";
} else {
echo "Failed to generate PDF";
var_dump($result['output']);
}
}
Start a new page on PDF
You can add following html code in the html where you'd like to start a new page for PDF.
<div style="page-break-after:always;"></div>
More Examples?
You can find more examples from here