Snappy — это библиотека PHP, позволяющая создавать миниатюры, снимки или PDF-файлы из URL-адреса или html-страницы. Он использует превосходные wkhtmltopdf и wkhtmltoimage на основе webkit, доступные в OSX, Linux и Windows.
Чтобы использовать Snappy, вам необходимо загрузить wkhtmltopdf 0.12.x
Пожалуйста, ознакомьтесь с FAQ, прежде чем открывать новый выпуск. Snappy — это крошечная оболочка wkhtmltox, поэтому на множество вопросов уже есть ответы, решены или есть вопросы, связанные с wkhtmltox.
Доступны следующие интеграции:
knplabs/knp-snappy-bundle
для Symfonybarryvdh/laravel-snappy
для Laravelmvlabs/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.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 ' );
NB. Эти статические двоичные файлы извлечены из пакетов Debian7, поэтому они могут быть несовместимы с дистрибутивами Linux, отличными от Debian.
Если вы хотите создать оглавление и использовать собственную таблицу стилей 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.