mvlabs / mvlabs-snappy
MvlabsSnappy is a Zend Framework and Laminas module that allow easy to thumbnail, snapshot or PDF generation from a url or a html page using Snappy PHP wrapper for the wkhtmltopdf/wkhtmltoimage conversion utility.
Installs: 51 830
Dependents: 0
Suggesters: 0
Security: 0
Stars: 24
Watchers: 13
Forks: 10
Open Issues: 1
Type:laminas-module
Requires
- php: ^5.6 || ^7.0
- knplabs/knp-snappy: ^1.0
- laminas/laminas-servicemanager: ^3.1
Requires (Dev)
- composer/composer: >=1.0.0-alpha10
- filp/whoops: ^2.1.12
- laminas/laminas-coding-standard: ~1.0.0
- laminas/laminas-development-mode: ^3.1
- laminas/laminas-mvc: ^3.0.1
- laminas/laminas-test: ^3.2
- phpunit/phpunit: ^5.7 || ^5.7.14
This package is not auto-updated.
Last update: 2024-11-09 14:14:25 UTC
README
MvlabsSnappy is a Laminas 3 module that allow easy to thumbnail, snapshot or PDF generation from a url or a html page using Snappy PHP (5.6+) wrapper for the wkhtmltopdf conversion utility.
Installation
With composer
php composer.phar require mvlabs/mvlabs-snappy
Post installation
-
Enabling it in your
application.config.php
file.<?php return [ 'modules' => [ // ... 'MvlabsSnappy', ], // ... ];
Configuration
After installing MvlabsSnappy, copy
./vendor/mvlabs/MvlabsSnappy/config/mvlabs-snappy.local.php.dist
to
./config/autoload/mvlabs-snappy.local.php
and change the binaries path and add options as desired.
# /config/autoload/mvlabs-snappy.local.php
<?php return [ 'mvlabs-snappy' => [ 'pdf' => [ 'binary' => '/usr/local/bin/wkhtmltopdf', 'options' => [], // Type wkhtmltopdf -H to see the list of options ], 'image' => [ 'binary' => '/usr/local/bin/wkhtmltoimage', 'options' => [], // Type wkhtmltoimage -H to see the list of options ] ] ];
wkhtmltopdf binary as composer dependencies
If you want to download wkhtmltopdf with composer you add to composer.json
:
{ "require": { "h4cc/wkhtmltopdf-i386": "0.12.4" } }
Or require the package for i386 with:
php composer.phar require h4cc/wkhtmltopdf-i386 "0.12.4"
If you are in 64 bit based system:
{ "require": { "h4cc/wkhtmltopdf-amd64": "0.12.4" } }
Or require the package for amd64 with:
php composer.phar require h4cc/wkhtmltopdf-amd64 "0.12.4"
The binary will then be located at:
vendor/h4cc/wkhtmltopdf-i386/bin/wkhtmltopdf-i386
Also a symlink will be created in your configured bin/ folder, for example:
vendor/bin/wkhtmltopdf-i386
Usage
The module registers two services:
- the
mvlabssnappy.image.service
service allows you to generate images; - the
mvlabssnappy.pdf.service
service allows you to generate pdf files.
Generate an image from an URL
$mvlabsSnappyImage = $container->get('mvlabssnappy.image.service'),
$mvlabsSnappyImage->generate('http://www.mvlabs.it', '/path/to/myapp/data/image.jpg');
Generate a pdf document from an URL
$mvlabsSnappyPdf = $container->get('mvlabssnappy.pdf.service'),
$mvlabsSnappyPdf->generate('http://www.mvlabs.it', '/path/to/myapp/data/document.pdf');
Render a pdf document as response from a controller
class IndexController extends AbstractActionController { /** * @var Knp\Snappy\Pdf; */ protected $mvlabsSnappyPdf; /** * @var Laminas\View\Renderer\RendererInterface */ protected $renderer; public function __construct(Pdf $mvlabsSnappyPdf, RendererInterface $renderer) { $this->mvlabsSnappyPdf = $mvlabsSnappyPdf; $this->renderer = $renderer; } public function testPdfAction() { $now = new \DateTime(); $layoutViewModel = $this->layout(); $layoutViewModel->setTemplate('layout/pdf-layout'); $viewModel = new ViewModel([ 'vars' => $vars, ]); $viewModel->setTemplate('myModule/myController/pdf-template'); $layoutViewModel->setVariables([ 'content' => $this->renderer->render($viewModel), ]); $htmlOutput = $this->renderer->render($layoutViewModel); $output = $this->mvlabsSnappyPdf->getOutputFromHtml($htmlOutput); $response = $this->getResponse(); $headers = $response->getHeaders(); $headers->addHeaderLine('Content-Type', 'application/pdf'); $headers->addHeaderLine('Content-Disposition', "attachment; filename=\"export-" . $now->format('d-m-Y H:i:s') . ".pdf\""); $response->setContent($output); return $response; } }
Credits
MvlabsSnappy and Snappy are based on the awesome wkhtmltopdf. MvlabsSnappy has been developed by mvlabs.