core23/dompdf-bundle

This bundle provides a wrapper for using dompdf inside symfony.

Installs: 81 284

Dependents: 0

Suggesters: 0

Security: 0

Stars: 19

Watchers: 2

Forks: 6

Open Issues: 1

Type:symfony-bundle

2.6.0 2019-12-18 12:09 UTC

README

Latest Stable Version Latest Unstable Version License

Total Downloads Monthly Downloads Daily Downloads

Continuous Integration Code Coverage

This bundle provides a wrapper for using dompdf inside symfony.

Installation

Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:

composer require core23/dompdf-bundle

Enable the 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 [
    // ...
    Core23\DompdfBundle\Core23DompdfBundle => ['all' => true],
];

Usage

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');

Configure the Bundle

# config/packages/core23_dompdf.yml

core23_dompdf:
    defaults:
        dpi: 150
        defaultPaperSize: A4
        ...

Events

The dompdf wrapper dispatches events to convenient get the inner dompdf instance when creating the pdf.

  • dompdf.output is dispatched in getPdf
  • dompdf.stream is dispatched in streamHtml

See Symfony event dispatcher documentation for more info.

License

This bundle is under the MIT license.