marucat / php-puppeteer
PHP 对 Google Chrome Puppeteer 的封装
0.1.1
2018-01-07 10:08 UTC
Requires
- php: >=5.4.0
This package is not auto-updated.
Last update: 2024-09-27 15:58:06 UTC
README
该项目提供了在 PHP 中使用 Puppeteer 生成 PDF/PNG 的功能
依赖
该库基于 Nodejs(7.6 以上) 和 Puppeteer 运行,已在 NodeJS 8 下进行了测试。
在 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
在 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
安装
使用 Composer 安装 marucat/php-puppeteer
。
composer require marucat/php-puppeteer
用法
参数
该库已设置一些默认参数值以支持基本功能,您可以通过设置自定义参数来覆盖默认值,它支持所有 Puppeteer API 参数。
示例参数数组
$config = [
'html' => "<h1>Hello World</h1>",
'pdf' => [
'path' => '/tmp/test.pdf',
'margin' => [
'top' => '10mm',
'right' => '10mm',
'bottom' => '10mm',
'left' => '10mm',
]
]
];
注意
- 如果同时设置了
$config['pdf']['html']
和 $config['pdf']['url'],则将选择html
。 - 如果未设置
$config['pdf']['path']
,则将返回 PDF 数据
导入
您需要在 PHP 类顶部导入此命名空间
use Marucat\PhpPuppeteer\Browser;
通过 URL 生成 PDF
您可以通过 pdf
函数通过 URL 生成 PDF
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;
}
您可以在 $config
中设置任何参数以覆盖默认值
通过 HTML 生成 PDF
您可以通过 pdf
函数通过 HTML 代码生成 PDF
public function actionTest2()
{
$config = [
"html" => "<h1>Hello Wolrd</h1>"
];
$browser = new Browser();
$content = $browser->pdf($config);
header("Content-type:application/pdf");
echo $content;
}
调试 类
Browser
有一个参数$isDebug
,如果为true
,则为调试模式,如果在 Puppeteer 运行期间发生错误,将从
将 PDF 生成到指定路径
您可以通过设置 $config['pdf']['path']
将 PDF 生成到指定路径
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']);
}
}
在 PDF 上启动新页面
您可以在想要为 PDF 启动新页面的 HTML 代码中添加以下 HTML 代码。
<div style="page-break-after:always;"></div>
更多示例?
您可以在 这里 找到更多示例