pontedilana/php-weasyprint

PHP 库,可以从 URL 或 HTML 页面生成 PDF。是 Kozea/WeasyPrint 的包装器。

1.4.0 2023-11-20 08:58 UTC

This package is auto-updated.

Last update: 2024-09-21 15:38:37 UTC


README

PhpWeasyPrint 是一个 PHP 库,可以从 URL 或 HTML 页面生成 PDF。它是 WeasyPrint 的包装器,一个智能解决方案,帮助网络开发者创建 PDF 文档,可在 Python 运行的任何地方使用。

您需要下载并安装 WeasyPrint 才能使用 PhpWeasyPrint(建议使用版本 56 或更高版本)。

这个库大量受到了 KnpLabs/snappy 的启发,旨在成为一对一的替代品(GeneratorInterface 是相同的)。参见 "与 Snappy 的差异" 部分,了解两个库之间的差异。

使用 Composer 安装

$ composer require pontedilana/php-weasyprint

使用方法

初始化

<?php

require __DIR__ . '/vendor/autoload.php';

use Pontedilana\PhpWeasyPrint\Pdf;

$pdf = new Pdf('/usr/local/bin/weasyprint');

// or you can do it in two steps
$pdf = new Pdf();
$pdf->setBinary('/usr/local/bin/weasyprint');

在浏览器中显示 PDF

$pdf = new Pdf('/usr/local/bin/weasyprint');
header('Content-Type: application/pdf');
echo $pdf->getOutput('https://www.github.com');

从浏览器下载 PDF

$pdf = new Pdf('/usr/local/bin/weasyprint');
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="file.pdf"');
echo $pdf->getOutput('https://www.github.com');

生成本地 PDF 文件

$pdf = new Pdf('/usr/local/bin/weasyprint');
$pdf->generateFromHtml('<h1>Bill</h1><p>You owe me money, dude.</p>', '/tmp/bill-123.pdf');

向 PhpWeasyPrint 传递选项

// Type weasyprint -h to see the list of options
$pdf = new Pdf('/usr/local/bin/weasyprint');
$pdf->setOption('encoding', 'utf8');
$pdf->setOption('media-type', 'screen');
$pdf->setOption('presentational-hints', true);
$pdf->setOption('optimize-images', true);
$pdf->setOption('stylesheet', ['/path/to/first-style.css', '/path/to/second-style.css']);
$pdf->setOption('attachment', ['/path/to/image.png', '/path/to/logo.jpg']);

重置选项

可以使用 resetOptions() 方法将选项重置为其初始值。

$pdf = new Pdf('/usr/local/bin/weasyprint');
// Set some options
$pdf->setOption('media-type', 'screen');
// ..
// Reset options
$pdf->resetOptions();

与 Snappy 的差异

尽管 PhpWeasyPrint 和 Snappy 可以互换使用,但由于 WeasyPrint CLI API,两者之间仍有一些差异。

  • WeasyPrint 不支持将多个来源合并到一个单一的输出 PDF 中,因此 PhpWeasyPrint 只接受一个输入来源(字符串或 URL);
  • WeasyPrint 版本 >= 53 不生成图像,因此从 HTML 字符串或 URL 生成图像仅适用于 WeasyPrint 较低版本和不支持的 PhpWeasyPrint 版本(Pontedilana\PhpWeasyPrint\Image 已在 PhpWeasyPrint 0.13.0 上与 Weasyprint 52.5 一起成功测试过)。

错误 & 支持

如果您发现了一个错误,请填写一个包含以下所有点的详细问题 详细问题。如果您需要一些帮助,请至少提供一个完整的重现器,这样我们就可以基于事实而不是假设来帮助您。

  • 操作系统及其版本
  • WeasyPrint,其版本和您如何安装它
  • 包含相关 PHP 和 html/css/js 代码的完整重现器

如果您的重现器很大,请尝试将其缩小。这将帮助每个人缩小错误范围。

致谢

PhpWeasyPrint 最初由 Pontedilana 开发团队开发。
Snappy 最初由 KnpLabs 团队开发。