Snappy adalah perpustakaan PHP yang memungkinkan pembuatan thumbnail, snapshot, atau PDF dari url atau halaman html. Ia menggunakan wkhtmltopdf dan wkhtmltoimage berbasis webkit yang sangat baik yang tersedia di OSX, linux, windows.
Anda harus mengunduh wkhtmltopdf 0.12.x
untuk menggunakan Snappy.
Silakan periksa FAQ sebelum membuka terbitan baru. Snappy adalah pembungkus kecil seputar wkhtmltox, jadi banyak masalah yang sudah terjawab, terselesaikan, atau masalah wkhtmltox.
Integrasi berikut tersedia:
knplabs/knp-snappy-bundle
, untuk Symfonybarryvdh/laravel-snappy
, untuk Laravelmvlabs/mvlabs-snappy
, untuk 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 ' );
Opsi dapat disetel ulang ke nilai awalnya dengan metode resetOptions()
.
$ snappy = new Pdf ( ' /usr/local/bin/wkhtmltopdf ' );
// Set some options
$ snappy -> setOption ( ' copies ' => 4 );
// ..
// Reset options
$ snappy -> resetOptions ();
Jika Anda ingin mengunduh wkhtmltopdf dan wkhtmltoimage dengan composer Anda tambahkan ke composer.json
:
composer require h4cc/wkhtmltopdf-i386 0.12.x
composer require h4cc/wkhtmltoimage-i386 0.12.x
atau ini jika Anda menggunakan sistem berbasis 64 bit:
composer require h4cc/wkhtmltopdf-amd64 0.12.x
composer require h4cc/wkhtmltoimage-amd64 0.12.x
Dan kemudian Anda bisa menggunakannya
<?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 ' );
NB Biner statis ini diekstraksi dari paket Debian7, jadi mungkin tidak kompatibel dengan distro linux berbasis non-debian
Jika Anda ingin membuat daftar isi dan ingin menggunakan lembar gaya XSL khusus, lakukan hal berikut:
<?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 ' );
Jika Anda menemukan bug, harap isi masalah terperinci dengan semua poin berikut. Jika Anda memerlukan bantuan, setidaknya berikan reproduksi lengkap sehingga kami dapat membantu Anda berdasarkan fakta, bukan asumsi.
Jika alat reproduksi Anda besar, silakan coba kecilkan. Ini akan membantu semua orang untuk mempersempit bug.
KNPLabs sedang mencari pengelola (lihat alasannya).
Jika Anda tertarik, silakan membuka PR untuk meminta ditambahkan sebagai pengelola.
Kami akan senang mendengar pendapat Anda :)
Snappy awalnya dikembangkan oleh tim KnpLabs.