marucat/php-puppeteer

PHP 对 Google Chrome Puppeteer 的封装

安装: 18

依赖: 0

建议者: 0

安全: 0

星星: 0

关注者: 1

分支: 9

类型:php-wrapper

0.1.1 2018-01-07 10:08 UTC

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',
		]
	]
];

注意

  1. 如果同时设置了 $config['pdf']['html'] 和 $config['pdf']['url'],则将选择 html
  2. 如果未设置 $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 函数返回详细的错误消息。

将 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>

更多示例?

您可以在 这里 找到更多示例