jaxwilko/php-chrome-pdf

一个利用 Chrome 作为 PHP PDF 渲染器的软件包

v0.1.2 2023-07-10 13:29 UTC

This package is auto-updated.

Last update: 2024-09-10 16:13:11 UTC


README

此软件包提供了一个使用 Chrome 生成 PDF 的接口。

注意:此软件包需要 google-chrome/chromium 已安装并且对 php 用户可用

安装

composer require jaxwilko/php-chrome-pdf

用法

对于基本用法,您可以使用 make() 辅助方法

$pdf = \ChromePdf\ChromePdf::make($content);
// or printing to file
\ChromePdf\ChromePdf::make($content, '/path/to/out.pdf');

ChromePdf 支持多种输入类型,包括

  • url 用于渲染网站 URL(例如 https://example.com
  • file 用于渲染文件
  • text 用于渲染文本内容
use ChromePdf\ChromePdf;

$chromePdf = new ChromePdf();

// Render text content (this is the default option)
$chromePdf->setInput($content);
$chromePdf->setInput($content, ChromePdf::INPUT_TEXT);

// Render a url
$chromePdf->setInput('https://example.com', ChromePdf::INPUT_URL);

// Render a file
$chromePdf->setInput('/path/to/example.html', ChromePdf::INPUT_FILE);

// Print PDF to file
$chromePdf->print(__DIR__ . '/example.pdf');

// Print PDF and get as binary
$pdf = $chromePdf->print();

如果您需要自定义 Chrome 标志,可以使用以下方法

// Set a single flag
$chromePdf->setFlag('--example-flag');

// Set multiple flags
$chromePdf->setFlag([
    '--example-flag-a',
    '--example-flag-b',
]);

// Replace all flags
$chromePdf->setFlags([
    '--example-flag-a',
    '--example-flag-b',
    '--example-flag-c'
]);

// You can also retrieve flag via
$flags = $chromePdf->getFlags();

// Removing a flag
$chromePdf->clearFlag('--example-flag');

Chrome 标志

以下是一些可能有用的标志。

  • --virtual-time-budget=1000 这将确保远程资源(例如字体)在打印页面之前完成加载。如果设置,系统将等待指定的虚拟毫秒数,然后认为页面已准备好。对于确定性,虚拟时间在存在待处理网络获取时不会前进(即没有计时器会触发)。一旦所有网络获取完成,计时器触发,如果系统耗尽虚拟时间,则会快速前进,以便下一个计时器立即触发,直到耗尽指定的虚拟时间预算。
  • --run-all-compositor-stages-before-draw 通过等待每个阶段完成后再完成一个帧来有效地禁用合成器帧生产阶段的管道化。

更多信息请参见 Peter Beverloo 的非常有用的页面