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 團隊開發。