Snappy は、URL または HTML ページからサムネイル、スナップショット、または PDF を生成できる PHP ライブラリです。 OSX、Linux、Windows で利用できる優れた Webkit ベースの wkhtmltopdf および wkhtmltoimage を使用します。
Snappy を使用するには、wkhtmltopdf 0.12.x
をダウンロードする必要があります。
新しい問題を開く前に、FAQ を確認してください。 Snappy は wkhtmltox の小さなラッパーであるため、多くの問題はすでに回答、解決されており、wkhtmltox の問題も解決されています。
次の統合が利用可能です。
knplabs/knp-snappy-bundle
、Symfony 用barryvdh/laravel-snappy
、Laravel 用mvlabs/mvlabs-snappy
、Zend Framework 用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 ();
wkhtmltopdf と wkhtmltoimage を Composer でダウンロードしたい場合は、 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 チームによって開発されました。