xeurun / knp-snappy
PHP5 library allowing thumbnail, snapshot or PDF generation from a url or a html page. Wrapper for wkhtmltopdf/wkhtmltoimage.
Requires
- php: >=5.3.3
- symfony/process: ~2.1
Requires (Dev)
- phpunit/phpunit: 4.7.*
Suggests
- h4cc/wkhtmltopdf-amd64: Provides wkhtmltopdf-amd64 binary for Linux-compatible machines, use version `~0.12` as dependency
- h4cc/wkhtmltopdf-i386: Provides wkhtmltopdf-i386 binary for Linux-compatible machines, use version `~0.12` as dependency
- wemersonjanuario/wkhtmltopdf-windows: Provides wkhtmltopdf executable for Windows, use version `~0.12` as dependency
This package is auto-updated.
Last update: 2020-02-07 20:53:13 UTC
README
Snappy is a PHP5 library allowing thumbnail, snapshot or PDF generation from a url or a html page. It uses the excellent webkit-based wkhtmltopdf and wkhtmltoimage available on OSX, linux, windows.
You will have to download wkhtmltopdf 0.12.x
in order to use Snappy.
Installation using Composer
$ composer require xeurun/knp-snappy
Usage
<?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'); // Display the resulting pdf in the browser // by setting the Content-type header to pdf $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'); // Merge multiple urls into one pdf // by sending an array of urls to getOutput() $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')); // .. or simply save the PDF to a file $snappy = new Pdf('/usr/local/bin/wkhtmltopdf'); $snappy->generateFromHtml('<h1>Bill</h1><p>You owe me money, dude.</p>', '/tmp/bill-123.pdf'); // Pass options to snappy // 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('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');
wkhtmltopdf binary as composer dependencies
If you want to download wkhtmltopdf and wkhtmltoimage with composer you add to composer.json
:
{ "require": { "h4cc/wkhtmltopdf-i386": "0.12.x", "h4cc/wkhtmltoimage-i386": "0.12.x" } }
or this if you are in 64 bit based system:
{ "require": { "h4cc/wkhtmltopdf-amd64": "0.12.x", "h4cc/wkhtmltoimage-amd64": "0.12.x" } }
And then you can use it
<?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');
Some use cases
If you want to generate table of contents and you want to use custom XSL stylesheet, do the following:
<?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');
Credits
Snappy has been originally developed by the KnpLabs team.