The BushidoIOPDFBundle adds PDF file creation support in Symfony.
Features included:
- PDF creation from HTML string content
Symfony\Component\HttpFoundation\Responseobject encapsulation withapplication/pdfcontent type- Temporal data and fonts paths can be located inside or outside Symfony app folder tree
Add the following require line to the composer.json file:
{
"require": {
"bushidoio/pdf-bundle": "dev-master"
}
}And actually install it in your project using Composer:
php composer.phar installYou can also do this in one step with this command:
$ php composer.phar require bushidoio/pdf-bundle "dev-master"Enable the bundle in the kernel:
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new BushidoIO\PDFBundle\BushidoIOPDFBundle(),
);
}Temporal content folders can be configured in app/config/config.yml. By
default both tmp and ttffontdatapath folder will be stored in app/cache.
Be sure you have write permissions on both folders.
bushidoio_pdf:
tmp: ~
ttffontdatapath: ~You can transform any HTML string to PDF with the bushidoio_pdf service:
public function indexAction()
{
...
$PDFService = $this->get('bushidoio_pdf');
$html = '...';
$pdf = $PDFService->createPDFFromHtml($html);
...
}You can use Twig templates, or anything you like, to create the HTML string:
public function indexAction()
{
...
$PDFService = $this->get('bushidoio_pdf');
$html = $this->get('twig')->render(
'default/index.html.twig',
array(
'greeting' => 'Hi'
)
);
$pdf = $PDFService->createPDFFromHtml($html);
...
}With the createResponse method a Symfony\Component\HttpFoundation\Response
object is returned with application/pdf content type that will be directly
downloaded if returned in a controller action:
public function indexAction()
{
$PDFService = $this->get('bushidoio_pdf');
$html = $this->get('twig')->render(
'default/index.html.twig',
array(
'greeting' => 'Hi'
)
);
return $PDFService->createResponse($html);
}