- Notifications
You must be signed in to change notification settings - Fork142
Easily create PDF and images in Symfony by converting html using webkit
License
KnpLabs/KnpSnappyBundle
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Snappy is a PHP wrapper for thewkhtmltopdf conversion utility.It allows you to generate either pdf or image files from your html documents, using the webkit engine.
The KnpSnappyBundle provides a simple integration for your Symfony project.
If you use JavaScript to render your pages, you may encounter some issues because ofwkhtmltopdf not being fully compatible with ES6 apis.The only way to solve this issue is to provide polyfills that fix the gaps between modern ES6 apis and thewkhtmltopdf rendering engine.
Withcomposer, require:
composer require knplabs/knp-snappy-bundle
If you are not using Flex, enable it in your kernel :
// config/bundles.php<?phpreturn [//...Knp\Bundle\SnappyBundle\KnpSnappyBundle::class => ['all' =>true],//...];
If you need to change the binaries, change the instance options or even disable one or both services, you can do it through the configuration.
# config/packages/knp_snappy.yamlknp_snappy:pdf:enabled:truebinary:/usr/local/bin/wkhtmltopdf#"\"C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe\"" for Windows usersoptions:[]image:enabled:truebinary:/usr/local/bin/wkhtmltoimage#"\"C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltoimage.exe\"" for Windows usersoptions:[]
If you want to change temporary folder which issys_get_temp_dir()
by default, you can use
# config/packages/knp_snappy.yamlknp_snappy:temporary_folder:"%kernel.cache_dir%/snappy"
You can also configure the timeout used by the generators withprocess_timeout
:
# config/packages/knp_snappy.yamlknp_snappy:process_timeout:20# In seconds
The bundle registers two services:
- the
knp_snappy.image
service allows you to generate images; - the
knp_snappy.pdf
service allows you to generate pdf files.
// @var Knp\Snappy\Image$knpSnappyImage->generate('http://www.google.fr','/path/to/the/image.jpg');
// @var \Knp\Snappy\Pdf$knpSnappyPdf->generate('http://www.google.fr','/path/to/the/file.pdf');
// @var \Knp\Snappy\Pdf$knpSnappyPdf->generate(array('http://www.google.fr','http://www.knplabs.com','http://www.google.com'),'/path/to/the/file.pdf');
// @var \Knp\Snappy\Pdf$knpSnappyPdf->generateFromHtml($this->renderView('MyBundle:Foo:bar.html.twig',array('some' =>$vars ) ),'/path/to/the/file.pdf');
useKnp\Bundle\SnappyBundle\Snappy\Response\JpegResponse;useSymfony\Bundle\FrameworkBundle\Controller\AbstractController;class SomeControllerextends AbstractController{publicfunctionimageAction(\Knp\Snappy\Image$knpSnappyImage) {$html =$this->renderView('MyBundle:Foo:bar.html.twig',array('some' =>$vars ));returnnewJpegResponse($knpSnappyImage->getOutputFromHtml($html),'image.jpg' ); }}
useKnp\Bundle\SnappyBundle\Snappy\Response\PdfResponse;useSymfony\Bundle\FrameworkBundle\Controller\AbstractController;class SomeControllerextends AbstractController{publicfunctionpdfAction(\Knp\Snappy\Pdf$knpSnappyPdf) {$html =$this->renderView('MyBundle:Foo:bar.html.twig',array('some' =>$vars ));returnnewPdfResponse($knpSnappyPdf->getOutputFromHtml($html),'file.pdf' ); }}
useKnp\Bundle\SnappyBundle\Snappy\Response\PdfResponse;useSymfony\Bundle\FrameworkBundle\Controller\AbstractController;class SomeControllerextends AbstractController{publicfunctionpdfAction(\Knp\Snappy\Pdf$knpSnappyPdf) {$pageUrl =$this->generateUrl('homepage',array(),true);// use absolute path!returnnewPdfResponse($knpSnappyPdf->getOutput($pageUrl),'file.pdf' ); }}
KNPLabs is looking for maintainers (see why).
If you are interested, feel free to open a PR to ask to be added as a maintainer.
We’ll be glad to hear from you :)
SnappyBundle andSnappy are based on the awesomewkhtmltopdf.SnappyBundle has been developed byKnpLabs.
About
Easily create PDF and images in Symfony by converting html using webkit