pmh / pdf-report-bundle
Symfony Bundle. Wrapper of wkhtmltopdf that uses twig templating to generate pdf files.
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:42:50 UTC
README
Symfony Bundle. Wrapper of wkhtmltopdf that uses twig templating to generate pdf files.
Instalation
You need of the wkhtmltopdf installed in your OS.
Require the bundle with composer:
composer require pmh/internal-pdf-report-bundle
Enable the bundle in the kernel:
public function registerBundles()
{
$bundles = [
// ...
new PMH\PdfReportBundle\PMHPdfReportBundle(),
// ...
];
...
}
How to use
In controllers instead of use:
return $this->render(...);
You should use:
$pdfReport = $this->get('pmh.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 PMH\PdfReportBundle\Service\PdfReport;
class DefaultController extends Controller
{
/**
* @Route("/", name="homepage")
*/
public function indexAction(Request $request)
{
$pdfReport = $this->get('pmh.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
Prefeitura Municipal de Hortolândia - Secretaria Municipal de Planejamento Urbano e Gestão Estratégica - Departamento de Tecnologia da Informação - Setor de Desenvolvimento de Software