mvlabs / mvlabs-snappy
MvlabsSnappy 是一个 Zend Framework 和 Laminas 模块,允许通过 Snappy PHP 包装器轻松地将 URL 或 HTML 页面转换为缩略图、快照或 PDF 文件。
2.0.0
2020-08-31 09:53 UTC
Requires
- php: ^5.6 || ^7.0
- knplabs/knp-snappy: ^1.0
- laminas/laminas-servicemanager: ^3.1
Requires (Dev)
- composer/composer: >=1.0.0-alpha10
- filp/whoops: ^2.1.12
- laminas/laminas-coding-standard: ~1.0.0
- laminas/laminas-development-mode: ^3.1
- laminas/laminas-mvc: ^3.0.1
- laminas/laminas-test: ^3.2
- phpunit/phpunit: ^5.7 || ^5.7.14
This package is not auto-updated.
Last update: 2024-09-14 13:25:18 UTC
README
MvlabsSnappy 是一个 Laminas 3 模块,允许通过 Snappy PHP (5.6+) 包装器轻松地从 URL 或 HTML 页面生成缩略图、快照或 PDF 文件。
安装
使用 composer
php composer.phar require mvlabs/mvlabs-snappy
安装后
-
在
application.config.php
文件中启用它。<?php return [ 'modules' => [ // ... 'MvlabsSnappy', ], // ... ];
配置
安装 MvlabsSnappy 后,将 ./vendor/mvlabs/MvlabsSnappy/config/mvlabs-snappy.local.php.dist
复制到 ./config/autoload/mvlabs-snappy.local.php
,然后更改二进制路径并添加所需的选项。
# /config/autoload/mvlabs-snappy.local.php
<?php return [ 'mvlabs-snappy' => [ 'pdf' => [ 'binary' => '/usr/local/bin/wkhtmltopdf', 'options' => [], // Type wkhtmltopdf -H to see the list of options ], 'image' => [ 'binary' => '/usr/local/bin/wkhtmltoimage', 'options' => [], // Type wkhtmltoimage -H to see the list of options ] ] ];
将 wkhtmltopdf 二进制文件作为 composer 依赖项
如果您想使用 composer 下载 wkhtmltopdf,请将其添加到 composer.json
{ "require": { "h4cc/wkhtmltopdf-i386": "0.12.4" } }
或者使用以下命令为 i386 要求该软件包
php composer.phar require h4cc/wkhtmltopdf-i386 "0.12.4"
如果您是在基于 64 位系统的系统上
{ "require": { "h4cc/wkhtmltopdf-amd64": "0.12.4" } }
或者使用以下命令为 amd64 要求该软件包
php composer.phar require h4cc/wkhtmltopdf-amd64 "0.12.4"
二进制文件将位于
vendor/h4cc/wkhtmltopdf-i386/bin/wkhtmltopdf-i386
此外,在您配置的 bin 文件夹中创建一个符号链接,例如
vendor/bin/wkhtmltopdf-i386
使用方法
该模块注册了两个服务
mvlabssnappy.image.service
服务允许您生成图像;mvlabssnappy.pdf.service
服务允许您生成 PDF 文件。
从 URL 生成图像
$mvlabsSnappyImage = $container->get('mvlabssnappy.image.service'),
$mvlabsSnappyImage->generate('http://www.mvlabs.it', '/path/to/myapp/data/image.jpg');
从 URL 生成 PDF 文档
$mvlabsSnappyPdf = $container->get('mvlabssnappy.pdf.service'),
$mvlabsSnappyPdf->generate('http://www.mvlabs.it', '/path/to/myapp/data/document.pdf');
从控制器作为响应渲染 PDF 文档
class IndexController extends AbstractActionController { /** * @var Knp\Snappy\Pdf; */ protected $mvlabsSnappyPdf; /** * @var Laminas\View\Renderer\RendererInterface */ protected $renderer; public function __construct(Pdf $mvlabsSnappyPdf, RendererInterface $renderer) { $this->mvlabsSnappyPdf = $mvlabsSnappyPdf; $this->renderer = $renderer; } public function testPdfAction() { $now = new \DateTime(); $layoutViewModel = $this->layout(); $layoutViewModel->setTemplate('layout/pdf-layout'); $viewModel = new ViewModel([ 'vars' => $vars, ]); $viewModel->setTemplate('myModule/myController/pdf-template'); $layoutViewModel->setVariables([ 'content' => $this->renderer->render($viewModel), ]); $htmlOutput = $this->renderer->render($layoutViewModel); $output = $this->mvlabsSnappyPdf->getOutputFromHtml($htmlOutput); $response = $this->getResponse(); $headers = $response->getHeaders(); $headers->addHeaderLine('Content-Type', 'application/pdf'); $headers->addHeaderLine('Content-Disposition', "attachment; filename=\"export-" . $now->format('d-m-Y H:i:s') . ".pdf\""); $response->setContent($output); return $response; } }
致谢
MvlabsSnappy 和 Snappy 基于出色的 wkhtmltopdf。MvlabsSnappy 由 mvlabs 开发。