discustecnologia / pdf-report-bundle
Symfony Bundle. Wrapper of wkhtmltopdf that uses twig templating to generate pdf files.
Installs: 16
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 0
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=5.5.9
- mikehaertl/phpwkhtmltopdf: ^2.2
- symfony/framework-bundle: ~2.7|~3.0
- twig/twig: ^1.0||^2.0
This package is not auto-updated.
Last update: 2025-03-21 22:47:06 UTC
README
Symfony Bundle. Wrapper of wkhtmltopdf that uses twig templating to generate pdf files.
Dependencies
You need of wkhtmltopdf installed in your system.
Instalation
You need of the wkhtmltopdf installed in your OS.
Require the bundle with composer:
composer require discustecnologia/pdf-report-bundle
Enable the bundle in the kernel:
public function registerBundles() { $bundles = [ // ... new DiscusTecnologia\PdfReportBundle\DiscusTecnologiaPdfReportBundle(), // ... ]; ... }
How to use
In controllers instead of use:
return $this->render(...);
You should use:
$pdfReport = $this->get('discus-tecnologia.pdf-report'); $pdfReport->setHeader('default/header.twig'); $pdfReport->setFooter('default/footer.twig'); $pdfReport->setMargins(20, 20, 20, 20); $pdfReport->addPages('default/testReport.twig', []); return $pdfReport->generate();
Example of twig report based on records which shows 4 records per page:
{% for i in ((pdfReportPageNumber -1) * 4)..(((pdfReportPageNumber * 4)-1) < (obj|length - 1) ? ((pdfReportPageNumber * 4)-1) : obj|length-1) %} <div>{{ obj[i] }}</div> {% endfor %}
Example Symfony Controller
namespace AppBundle\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; use DiscusTecnologia\PdfReportBundle\Service\PdfReport; class DefaultController extends Controller { /** * @Route("/", name="homepage") */ public function indexAction(Request $request) { $pdfReport = $this->get('discus-tecnologia.pdf-report'); $pdfReport->setSavePDF("/var/tmp/pdfreport.pdf"); $pdfReport->setHeader('default/header.twig'); $pdfReport->setFooter('default/footer.twig'); $pdfReport->setMargins(20, 20, 20, 20); //Default size is A4. You can use A0, A1, A2, A3, A4, A5 or pass custom size array as [width, height] $pdfReport->setPageSize(PdfReport::A3); $pdfReport->setGrayscale(true); $pdfReport->setOrientationLandscape(); $pdfReport->setTotalPages(2); $pdfReport->setHeaderHeight(40); $pdfReport->setFooterHeight(40); $pdfReport->setCss("#footer p { font-size: 10px; text-align: center; background: #ccc; } #content { width: 168mm; /*border: 1px #000000 solid;*/ } p { /*border: 1px #FF0000 solid;*/ max-width: 168mm; text-indent: 30px; margin-bottom: 15px; line-height: 20px; font-size: 14px; text-align: justify; }"); $pdfReport->addPages('default/testeRel.twig', ['obj' => ['a', 'b', 'c', 'd', 'e', 'f', 'g'] ]); return $pdfReport->generate(); //return $pdfReport->renderHTML(); //use for debug } }
Licence
This bundle is under the MIT license. See the complete license in the bundle.
Credits
Author: Rodrigo Ramos
Discus Tecnologia