Snappy:卓越的Web页面转换工具
Snappy是一个PHP库,用于从URL或HTML页面生成缩略图、快照或PDF文件。它依赖于基于WebKit的优秀软件wkhtmltopdf和wkhtmltoimage,这些工具在OSX、Linux和Windows上都可使用。
在开始使用之前,请确保下载wkhtmltopdf的0.12.x
版本。
除了基本的库之外,还有针对Symfony的knplabs/knp-snappy-bundle
,Laravel的barryvdh/laravel-snappy
以及Zend Framework的mvlabs/mvlabs-snappy
等集成解决方案。
安装与Composer
通过以下命令,你可以轻松地将Snappy添加到你的PHP项目中:
composer require knplabs/knp-snappy
使用方法
初始化Snappy很简单,如下所示:
<?php
require __DIR__ . '/vendor/autoload.php';
use Knp\Snappy\Pdf;
$snappy = new Pdf('/usr/local/bin/wkhtmltopdf');
然后,你可以直接在浏览器中显示PDF:
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="file.pdf"');
echo $snappy->getOutput('http://www.github.com');
或者让用户下载PDF:
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="file.pdf"');
echo $snappy->getOutput('http://www.github.com');
甚至合并多个网页为一个PDF:
echo $snappy->getOutput(array('http://www.github.com','http://www.knplabs.com','http://www.php.net'));
此外,还可以从HTML生成本地PDF文件:
$snappy->generateFromHtml('<h1>Bill</h1><p>You owe me money, dude.</p>', '/tmp/bill-123.pdf');
配置选项
Snappy支持传递各种选项给wkhtmltopdf,例如禁用JavaScript、设置封面、生成目录等:
$snappy->setOption('disable-javascript', true);
$snappy->setOption('no-background', true);
$snappy->setOption('allow', array('/path1', '/path2'));
$snappy->setOption('cookie', array('key' => 'value', 'key2' => 'value2'));
$snappy->setOption('post', array('key' => 'value'));
$snappy->setOption('cover', 'pathToCover.html');
wkhtmltopdf二进制文件作为Composer依赖项
如果你希望通过Composer安装wkhtmltopdf,可以在composer.json
中添加以下内容:
composer require h4cc/wkhtmltopdf-i386 0.12.x
composer require h4cc/wkhtmltoimage-i386 0.12.x
或者在64位系统上:
composer require h4cc/wkhtmltopdf-amd64 0.12.x
composer require h4cc/wkhtmltoimage-amd64 0.12.x
然后,你可以指定路径来使用它们。
应用场景
Snappy非常适合在线文档预览、网站截图服务、电子商务中的商品图片生成、电子发票的自动化生成等多种场景。
项目特点
- 简洁易用:Snappy提供了一个简单的API,使得开发者可以快速集成到现有项目。
- 跨平台兼容:支持OSX、Linux和Windows操作系统。
- 高度定制化:允许传递大量选项以自定义PDF的生成过程,如CSS样式表、页眉页脚等。
- 社区支持:有多种框架的集成方案,并且有一个活跃的开发团队和用户群。
如果你在使用过程中遇到问题或需要帮助,可以通过详细的问题报告参与社区交流,共同解决问题。
现在就尝试用Snappy为你的项目增添新的功能吧!