The BushidoIOPDFBundle adds PDF file creation support in Symfony.
Features included:
- PDF creation from HTML string content
Symfony\Component\HttpFoundation\Response
object encapsulation withapplication/pdf
content 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 install
You 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);
}