codestudios/php-chrome-html2pdf

一个用于使用 Google Chrome 将 HTML 转换为 PDF 的 PHP 库

1.4.2 2020-06-04 16:36 UTC

This package is not auto-updated.

Last update: 2024-09-21 12:09:58 UTC


README

一个使用 Google Chrome 将 HTML 转换为 PDF 的 PHP 库。

Build Status Code Climate Total Downloads Latest Stable Version Latest Unstable Version License

工作原理

此库基于 puppeteer,一个由 Chrome DevTools 团队维护的无头 Chrome Node API。

它提供了一个简单的 PHP 包装器,围绕 Node API,专注于生成美观的 PDF 文件。

与其他 HTML 到 PDF 转换器(如 wkhtmltopdf)、相应的 PHP 包装器 或类似库相比,它基于当前的 Chrome 版本,而不是过时的、不再维护的 WebKit 构建。因此,此库完全支持 CSS3、HTML5、SVGs、SPAs 以及人们现在使用的所有其他花哨功能。

要求

安装

可以通过在项目中的 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]> 纸张格式。如果设置,则优先于 widthheight 选项。默认为 '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对象。

注意 headerTemplatefooterTemplate 标记有以下限制

  1. 模板内部的脚本标签不会被执行。
  2. 模板内部不可见页面样式。

注意 默认情况下,此库生成具有修改颜色的PDF以供打印。使用 -webkit-print-color-adjust 属性强制渲染精确颜色。

故障排除

贡献

欢迎以任何形式贡献。请在提交拉取请求之前考虑以下指南

  • 编码标准 - 主要遵循PSR。
  • 添加测试! - 如果您的PR没有测试,则不会接受。

许可证

PHP Chrome HTML到PDF是免费软件,根据MIT许可证条款发布。