This bundle provides a wrapper for using dompdf inside symfony.
Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:
composer require nucleos/dompdf-bundle
Then, enable the bundle by adding it to the list of registered bundles in config/bundles.php
file of your project:
// config/bundles.php
return [
// ...
Nucleos\DompdfBundle\NucleosDompdfBundle::class => ['all' => true],
];
Whenever you need to turn a html page into a PDF use dependency injection for your service:
final class MyService
{
public function __construct(DompdfFactoryInterface $factory)
{
$this->factory = $factory;
}
public function render()
{
// ...
$this->factory->create();
// ...
}
}
final class MyOtherService
{
public function __construct(DompdfWrapperInterface $wrapper)
{
$this->wrapper = $wrapper;
}
public function stream()
{
// ...
$html = '<h1>Sample Title</h1><p>Lorem Ipsum</p>';
$response = $this->wrapper->getStreamResponse($html, "document.pdf");
$response->send();
// ...
}
public function binaryContent()
{
// ...
return $this->wrapper->getPdf($html);
// ...
}
}
If you use Twig to create the content, make sure to use renderView()
instead of render()
.
Otherwise you might get the following HTTP header printed inside your PDF:
HTTP/1.0 200 OK Cache-Control: no-cache
$html = $this->renderView('my_pdf.html.twig', array(
// ...
));
$this->wrapper->getStreamResponse($html, 'document.pdf');
# config/packages/nucleos_dompdf.yml
nucleos_dompdf:
defaults:
dpi: 150
defaultPaperSize: A4
...
The dompdf wrapper dispatches events to convenient get the inner dompdf instance when creating the pdf.
dompdf.output
is dispatched in getPdfdompdf.stream
is dispatched in streamHtml
See Symfony event dispatcher documentation for more info.
This bundle is under the MIT license.