its404/php-puppeteer

PHP 对 Google Chrome Puppeteer 的封装

安装次数: 208,188

依赖: 2

建议者: 0

安全性: 0

星标: 30

关注者: 1

分支: 9

开放问题: 0

类型:php-wrapper

0.1.1 2018-01-07 10:08 UTC

This package is not auto-updated.

Last update: 2024-09-15 05:20:37 UTC


README

此项目提供在 PHP 中使用 Puppeteer 生成 PDF 的功能

  • 兼容 PHP 5
  • 无依赖包
  • 易于使用

依赖

该库基于 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 安装 its404/php-puppeteer

composer require its404/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 Its404\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>

更多示例?

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