基于 Snappy 的基本包装,实现为 Yii 组件

v1.0.0 2016-03-09 10:23 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:26:02 UTC


README

这是一个基于 Snappy 的基本包装,实现为 Yii 应用组件。Snappy 是一个 PHP 库,使用 wkhtmltopdf 和 wkhtmltoimage 将 HTML 渲染为 PDF 和各种图像格式。

安装

使用 Composer 安装应该是直接的

% composer require dmitrivereshchagin/yii-snappy

要在您的应用程序中注册组件,请在配置 components 部分添加类似以下内容

'pdf' => array(
    'class' => 'dmitrivereshchagin\\yii\\snappy\\PdfComponent',
    'binary' => '/usr/local/bin/wkhtmltopdf',
    'options' => array('orientation' => 'landscape'),
    'tempdir' => basename(__DIR__).'/runtime/pdf',
),
'image' => array(
    'class' => 'dmitrivereshchagin\\yii\\snappy\\ImageComponent',
    'binary' => '/usr/local/bin/wkhtmltoimage',
    'tempdir' => basename(__DIR__).'/runtime/image',
),

指定二进制文件路径是强制性的。可选地,您可以配置默认的命令行参数,这些参数可以在以后覆盖或调整。还可以使用 snappyTempdir 应用程序参数为两个组件设置临时目录。

用法

使用 Yii::app()->pdfYii::app()->image 生成 PDF 文档和图像。这些组件提供了对 \Knp\Snappy\GeneratorInterface 声明的方法的访问。

以下是一些示例。

从 URL 生成图像

Yii::app()->image->generate('http://example.com', '/path/to/image.jpg');

从 URL 生成 PDF 文档

Yii::app()->pdf->generate('http://example.com', '/path/to/document.pdf');

从多个 URL 生成 PDF 文档

Yii::app()->pdf->generate(
    array('http://example.com', 'http://example.org'),
    '/path/to/document.pdf'
);

从视图生成 PDF 文档

Yii::app()->pdf->generateFromHtml(
    $this->render('view', array('name' => $value), $return = true),
    '/path/to/document.pdf'
);

从控制器生成作为响应的 PDF 文档

$html = $this->render('view', array('name' => $value), $return = true);

Yii::app()->request->sendFile(
    'document.pdf',
    Yii::app()->pdf->getOutputFromHtml($html)
);

在内部包含相对 URL 的 PDF 文档

$url = Yii::app()->createAbsoluteUrl('controller/action');

Yii::app()->request->sendFile(
    'document.pdf',
    Yii::app()->pdf->getOutput($url)
);

致谢

此代码使用 Snappy 库。Snappy 最初由 KnpLabs 团队开发。