snappy
v1.5.0
Snappy 是一个 PHP 库,允许从 url 或 html 页面生成缩略图、快照或 PDF。它使用优秀的基于 webkit 的 wkhtmltopdf 和 wkhtmltoimage,可在 OSX、linux、windows 上使用。
您必须下载 wkhtmltopdf 0.12.x
才能使用 Snappy。
请在打开新问题之前查看常见问题解答。 Snappy 是 wkhtmltox 的一个小型包装器,因此许多问题已经得到解答、解决或解决 wkhtmltox 问题。
可以使用以下集成:
knplabs/knp-snappy-bundle
,用于 Symfonybarryvdh/laravel-snappy
,用于 Laravelmvlabs/mvlabs-snappy
,用于 Zend 框架composer require knplabs/knp-snappy
<?php
require __DIR__ . ' /vendor/autoload.php ' ;
use Knp Snappy Pdf ;
$ snappy = new Pdf ( ' /usr/local/bin/wkhtmltopdf ' );
// or you can do it in two steps
$ snappy = new Pdf ();
$ snappy -> setBinary ( ' /usr/local/bin/wkhtmltopdf ' );
$ snappy = new Pdf ( ' /usr/local/bin/wkhtmltopdf ' );
header ( ' Content-Type: application/pdf ' );
echo $ snappy -> getOutput ( ' http://www.github.com ' );
$ snappy = new Pdf ( ' /usr/local/bin/wkhtmltopdf ' );
header ( ' Content-Type: application/pdf ' );
header ( ' Content-Disposition: attachment; filename="file.pdf" ' );
echo $ snappy -> getOutput ( ' http://www.github.com ' );
$ snappy = new Pdf ( ' /usr/local/bin/wkhtmltopdf ' );
header ( ' Content-Type: application/pdf ' );
header ( ' Content-Disposition: attachment; filename="file.pdf" ' );
echo $ snappy -> getOutput ( array ( ' http://www.github.com ' , ' http://www.knplabs.com ' , ' http://www.php.net ' ));
$ snappy = new Pdf ( ' /usr/local/bin/wkhtmltopdf ' );
$ snappy -> generateFromHtml ( ' <h1>Bill</h1><p>You owe me money, dude.</p> ' , ' /tmp/bill-123.pdf ' );
// Type wkhtmltopdf -H to see the list of options
$ snappy = new Pdf ( ' /usr/local/bin/wkhtmltopdf ' );
$ 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 ' );
// .. or pass a cover as html
$ snappy -> setOption ( ' cover ' , ' <h1>Bill cover</h1> ' );
$ snappy -> setOption ( ' toc ' , true );
$ snappy -> setOption ( ' cache-dir ' , ' /path/to/cache/dir ' );
可以使用resetOptions()
方法将选项重置为其初始值。
$ snappy = new Pdf ( ' /usr/local/bin/wkhtmltopdf ' );
// Set some options
$ snappy -> setOption ( ' copies ' => 4 );
// ..
// Reset options
$ snappy -> resetOptions ();
如果您想使用composer下载wkhtmltopdf和wkhtmltoimage,请添加到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
然后你就可以使用它了
<?php
use Knp Snappy Pdf ;
$ myProjectDirectory = ' /path/to/my/project ' ;
$ snappy = new Pdf ( $ myProjectDirectory . ' /vendor/h4cc/wkhtmltopdf-i386/bin/wkhtmltopdf-i386 ' );
// or
$ snappy = new Pdf ( $ myProjectDirectory . ' /vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64 ' );
注意这些静态二进制文件是从 Debian7 软件包中提取的,因此它可能与非基于 Debian 的 Linux 发行版不兼容
如果您想要生成目录并且想要使用自定义 XSL 样式表,请执行以下操作:
<?php
$ snappy = new Pdf ( ' /path/to/binary ' );
$ snappy -> setOption ( ' toc ' , true );
$ snappy -> setOption ( ' xsl-style-sheet ' , ' http://path/to/stylesheet.xsl ' ) //or local file;
$ snappy -> generateFromHtml ( ' <p>Some content</p> ' , ' test.pdf ' );
如果您发现错误,请填写包含以下所有要点的详细问题。如果您需要帮助,请至少提供完整的重现器,以便我们可以根据事实而不是假设为您提供帮助。
如果您的复制器很大,请尝试缩小它。它将帮助大家缩小错误范围。
KNPLabs 正在寻找维护人员(看看原因)。
如果您有兴趣,请随时打开 PR 要求添加为维护者。
我们很高兴收到您的来信:)
Snappy 最初由 KnpLabs 团队开发。