Snappy es una biblioteca PHP que permite la generación de miniaturas, instantáneas o PDF desde una URL o una página HTML. Utiliza los excelentes wkhtmltopdf y wkhtmltoimage basados en webkit disponibles en OSX, Linux y Windows.
Tendrás que descargar wkhtmltopdf 0.12.x
para poder utilizar Snappy.
Por favor, consulte las preguntas frecuentes antes de abrir una nueva edición. Snappy es un pequeño contenedor de wkhtmltox, por lo que muchos problemas ya están respondidos, resueltos o relacionados con wkhtmltox.
Están disponibles las siguientes integraciones:
knplabs/knp-snappy-bundle
, para Symfonybarryvdh/laravel-snappy
, para Laravelmvlabs/mvlabs-snappy
, para 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 ' );
Las opciones se pueden restablecer a sus valores iniciales con el método resetOptions()
.
$ snappy = new Pdf ( ' /usr/local/bin/wkhtmltopdf ' );
// Set some options
$ snappy -> setOption ( ' copies ' => 4 );
// ..
// Reset options
$ snappy -> resetOptions ();
Si desea descargar wkhtmltopdf y wkhtmltoimage con Composer, agregue a composer.json
:
composer require h4cc/wkhtmltopdf-i386 0.12.x
composer require h4cc/wkhtmltoimage-i386 0.12.x
o esto si estás en un sistema basado en 64 bits:
composer require h4cc/wkhtmltopdf-amd64 0.12.x
composer require h4cc/wkhtmltoimage-amd64 0.12.x
Y luego puedes usarlo
<?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: Estos binarios estáticos se extraen de paquetes de Debian7, por lo que es posible que no sean compatibles con distribuciones de Linux no basadas en Debian.
Si desea generar una tabla de contenido y desea utilizar una hoja de estilo XSL personalizada, haga lo siguiente:
<?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 ' );
Si encontró un error, complete un problema detallado con todos los puntos siguientes. Si necesita ayuda, al menos proporcione un reproductor completo para que podamos ayudarlo basándonos en hechos y no en suposiciones.
Si su reproductor es grande, intente reducirlo. Ayudará a todos a reducir el error.
KNPLabs está buscando mantenedores (vea por qué).
Si está interesado, no dude en abrir un PR para solicitar que lo agreguen como mantenedor.
Estaremos encantados de saber de usted :)
Snappy fue desarrollado originalmente por el equipo de KnpLabs.