codestudios / php-chrome-html2pdf
一个用于使用 Google Chrome 将 HTML 转换为 PDF 的 PHP 库
1.4.2
2020-06-04 16:36 UTC
Requires
- php: >=7.0
- eloquent/composer-npm-bridge: ^4
Requires (Dev)
- codeclimate/php-test-reporter: dev-master
- phpunit/phpunit: ~5.0
README
一个使用 Google Chrome 将 HTML 转换为 PDF 的 PHP 库。
工作原理
此库基于 puppeteer,一个由 Chrome DevTools 团队维护的无头 Chrome Node API。
它提供了一个简单的 PHP 包装器,围绕 Node API,专注于生成美观的 PDF 文件。
与其他 HTML 到 PDF 转换器(如 wkhtmltopdf)、相应的 PHP 包装器 或类似库相比,它基于当前的 Chrome 版本,而不是过时的、不再维护的 WebKit 构建。因此,此库完全支持 CSS3、HTML5、SVGs、SPAs 以及人们现在使用的所有其他花哨功能。
要求
- PHP 7.0+ 并启用程序执行功能(proc_open)和 'fopen 包装器'
- Node.js 6.4+
- 一些 操作系统特定依赖
安装
可以通过在项目中的 composer.json
中要求 spiritix/php-chrome-html2pdf
包来通过 Composer 安装 PHP Chrome HTML to PDF。或者简单地运行此命令
composer require spiritix/php-chrome-html2pdf
所需的 JS 包将自动在后台安装。
用法
使用此库非常简单。选择输入和输出处理器,将它们传递给转换器,如果需要设置一些选项,然后根据输出处理器,对生成的 PDF 文件进行操作。
use Spiritix\Html2Pdf\Converter; use Spiritix\Html2Pdf\Input\UrlInput; use Spiritix\Html2Pdf\Output\DownloadOutput; $input = new UrlInput(); $input->setUrl('https://www.google.com'); $converter = new Converter($input, new DownloadOutput()); $converter->setOption('landscape', true); $converter->setOptions([ 'printBackground' => true, 'headerTemplate' => '<p>I am a header</p>', ]); $output = $converter->convert(); $output->download('google.pdf');
输入处理器
以下输入处理器可用
- StringInput - 接受 HTML 内容作为字符串
- UrlInput - 从 URL 获取 HTML 内容
输出处理器
以下输出处理器可用
- StringOutput - 返回二进制 PDF 内容作为字符串
- FileOutput - 在服务器的文件系统中存储 PDF 文件
- DownloadOutput - 强制浏览器下载 PDF 文件
- EmbedOutput - 强制浏览器嵌入 PDF 文件
选项
scale
<[number]> 页面渲染的缩放比例。默认为1
。displayHeaderFooter
<[boolean]> 显示页眉和页脚。默认为false
。headerTemplate
<[string]> 打印页眉的 HTML 模板。应该是有效的 HTML 标记,并使用以下类注入打印值date
格式化的打印日期title
文档标题url
文档位置pageNumber
当前页码totalPages
文档中的总页数
footerTemplate
<[string]> 打印页脚的 HTML 模板。应使用与headerTemplate
相同的格式。printBackground
<[boolean]> 打印背景图形。默认为false
。landscape
<[boolean]> 纸张方向。默认为false
。pageRanges
<[string]> 要打印的纸张范围,例如,'1-5, 8, 11-13'。默认为空字符串,表示打印所有页面。format
<[string]> 纸张格式。如果设置,则优先于width
或height
选项。默认为 'Letter'。width
<[string]> 纸张宽度,接受带有单位的值。height
<[string]> 纸张高度,接受带有单位的值。margin
<[array]> 纸张边距,默认无。top
<[string]> 顶部边距,接受带有单位的值。right
<[string]> 右边距,接受带有单位的值。bottom
<[字符串]> 底部边距,接受带单位的值。left
<[字符串]> 左边距,接受带单位的值。
mediaType
<?[字符串]> 改变页面CSS媒体类型。允许的值只有'screen'
,'print'
和null
。传入null
将禁用媒体模拟。viewport
<[数组]>width
<[数字]> 页面宽度(像素)。height
<[数字]> 页面高度(像素)。deviceScaleFactor
<[数字]> 指定设备缩放因子(可以认为是dpr)。默认为1
。isMobile
<[布尔值]> 是否考虑meta viewport
标签。默认为false
。hasTouch
<[布尔值]> 指定视口是否支持触摸事件。默认为false
isLandscape
<[布尔值]> 指定视口是否处于横幅模式。默认为false
。
pageWaitFor
<[整数]> 等待的毫秒数。cookies
<[数组]> 要设置的Cookie对象。
注意
headerTemplate
和footerTemplate
标记有以下限制
- 模板内部的脚本标签不会被执行。
- 模板内部不可见页面样式。
注意 默认情况下,此库生成具有修改颜色的PDF以供打印。使用
-webkit-print-color-adjust
属性强制渲染精确颜色。
故障排除
- 请确保您已安装所有 操作系统特定的依赖项。
- 使用
$converter->setNodePath()
方法手动设置Node.js可执行文件的路径。
贡献
欢迎以任何形式贡献。请在提交拉取请求之前考虑以下指南
- 编码标准 - 主要遵循PSR。
- 添加测试! - 如果您的PR没有测试,则不会接受。
许可证
PHP Chrome HTML到PDF是免费软件,根据MIT许可证条款发布。