Snappy ist eine PHP-Bibliothek, die die Erstellung von Miniaturansichten, Schnappschüssen oder PDFs aus einer URL oder einer HTML-Seite ermöglicht. Es verwendet die hervorragenden Webkit-basierten Programme wkhtmltopdf und wkhtmltoimage, die unter OSX, Linux und Windows verfügbar sind.
Sie müssen wkhtmltopdf 0.12.x
herunterladen, um Snappy verwenden zu können.
Bitte lesen Sie die FAQ, bevor Sie eine neue Ausgabe eröffnen. Snappy ist ein kleiner Wrapper für Wkhtmltox, daher sind viele Probleme bereits beantwortet, gelöst oder Wkhtmltox-Probleme.
Folgende Integrationen sind verfügbar:
knplabs/knp-snappy-bundle
, für Symfonybarryvdh/laravel-snappy
, für Laravelmvlabs/mvlabs-snappy
für 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 ' );
Optionen können mit der Methode resetOptions()
auf ihre Anfangswerte zurückgesetzt werden.
$ snappy = new Pdf ( ' /usr/local/bin/wkhtmltopdf ' );
// Set some options
$ snappy -> setOption ( ' copies ' => 4 );
// ..
// Reset options
$ snappy -> resetOptions ();
Wenn Sie wkhtmltopdf und wkhtmltoimage mit Composer herunterladen möchten, fügen Sie zu composer.json
Folgendes hinzu:
composer require h4cc/wkhtmltopdf-i386 0.12.x
composer require h4cc/wkhtmltoimage-i386 0.12.x
oder dies, wenn Sie ein 64-Bit-basiertes System verwenden:
composer require h4cc/wkhtmltopdf-amd64 0.12.x
composer require h4cc/wkhtmltoimage-amd64 0.12.x
Und dann können Sie es verwenden
<?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 ' );
Hinweis: Diese statischen Binärdateien werden aus Debian7-Paketen extrahiert und sind daher möglicherweise nicht mit nicht auf Debian basierenden Linux-Distributionen kompatibel
Wenn Sie ein Inhaltsverzeichnis erstellen und ein benutzerdefiniertes XSL-Stylesheet verwenden möchten, gehen Sie wie folgt vor:
<?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 ' );
Wenn Sie einen Fehler gefunden haben, füllen Sie bitte ein detailliertes Problem mit allen folgenden Punkten aus. Wenn Sie Hilfe benötigen, stellen Sie bitte zumindest eine vollständige Reproduktion zur Verfügung, damit wir Ihnen auf der Grundlage von Fakten und nicht auf Annahmen helfen können.
Wenn Ihr Wiedergabegerät groß ist, versuchen Sie bitte, es zu verkleinern. Es wird jedem helfen, den Fehler einzugrenzen.
KNPLabs sucht Betreuer (siehe warum).
Wenn Sie interessiert sind, können Sie gerne eine PR eröffnen und darum bitten, als Betreuer hinzugefügt zu werden.
Wir freuen uns, von Ihnen zu hören :)
Snappy wurde ursprünglich vom KnpLabs-Team entwickelt.