eckinox / php-puppeteer
PHP 对 Google Chrome Puppeteer 的封装
Requires
- php: >=5.4.0
README
该项目提供了在 PHP 中使用 Puppeteer 生成 PDF 的功能。
- PHP 5 兼容
- 无依赖包
- 易于使用
入门指南
1. 安装 Puppeteer
为了安装 Puppeteer 和其依赖项,我们建议您查看 Puppeteer 的官方安装指南 以及他们的 官方故障排除指南。
以下是适用于 Ubuntu (已在 20.04 上测试) 的代码片段,在编写本文时运行良好
curl -sL https://deb.nodesource.com/setup_16.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 libappindicator3-1 libatk-bridge2.0-0 libgbm1
sudo npm install --global --unsafe-perm puppeteer
sudo chmod -R o+rx /usr/lib/node_modules/puppeteer/.local-chromium
2. 通过 Composer 安装包
使用 Composer 安装此包
composer require eckinox/php-puppeteer
3. 开始生成 PDF!
查看下面的示例和文档,了解如何使用此库
使用示例
以下是几个非常基础的示例以供入门
从 URL 生成 PDF
<?php require_once "vendor/autoload.php"; use Eckinox\PhpPuppeteer\Browser; $config = [ "url" => "https://github.com/eckinox/php-puppeteer" ]; $browser = new Browser(); $content = $browser->pdf($config); header("Content-type:application/pdf"); echo $content
从 HTML 字符串生成 PDF
<?php require_once "vendor/autoload.php"; use Eckinox\PhpPuppeteer\Browser; $config = [ "html" => "<h1>Hello World!</h1>" ]; $browser = new Browser(); $content = $browser->pdf($config); header("Content-type:application/pdf"); echo $content
选项
内容源
有两种方式可以定义要渲染的内容源
html
: 提供一个 HTML 片段作为字符串。url
: 提供一个指向公开网页的 URL。
Puppeteer 启动选项
launchArgs
允许您向 Chromium 启动参数添加额外的标志。cacheDir
允许您提供 Chromium 可以用来存储缓存文件和其他用户数据的目录路径。
视口选项
viewport
选项将被直接传递给 Puppeteer 的 page.setViewport()
。
有关更多信息,请参阅 Puppeteer 的 page.setViewport()
文档。
跳转选项(页面加载)
goto
选项将被直接作为参数传递给 Puppeteer 的 page.goto()
。
有关更多信息,请参阅 Puppeteer 的 page.goto()
文档。
PDF 选项(边距、大小等)
pdf
选项将在渲染 PDF 时直接传递给 Puppeteer 的 page.pdf()
。
有关更多信息,请参阅 Puppeteer 的 page.pdf()
文档。
Cookie
cookies
选项可以用一个包含 cookie 的数组设置,这些 cookie 将使用 Puppeteer 的 page.setCookie()
设置。
有关更多信息,请参阅 Puppeteer 的 page.setCookie()
文档。
更多提示...
开始新页面
您可以在想要为 PDF 开始新页面的 HTML 中添加以下代码。
<div style="page-break-after:always;"></div>
加载字体有困难吗?
如果您在加载字体方面遇到困难,请查看 字体加载示例。
鸣谢
此包是基于 its404/php-puppeteer 的分支,已更新以允许在更多现代操作系统和 NodeJS 版本上使用,并改进了文档。