https://github.com/nucleos/nucleosdompdfbundle
📜 This bundle provides a wrapper for using dompdf inside symfony.
https://github.com/nucleos/nucleosdompdfbundle
bundle dompdf hacktoberfest pdf php symfony symfony-bundle wrapper
Last synced: 12 months ago
JSON representation
📜 This bundle provides a wrapper for using dompdf inside symfony.
- Host: GitHub
- URL: https://github.com/nucleos/nucleosdompdfbundle
- Owner: nucleos
- License: mit
- Created: 2015-10-16T12:15:29.000Z (over 10 years ago)
- Default Branch: 4.3.x
- Last Pushed: 2024-05-22T12:37:17.000Z (almost 2 years ago)
- Last Synced: 2024-05-22T13:33:13.086Z (almost 2 years ago)
- Topics: bundle, dompdf, hacktoberfest, pdf, php, symfony, symfony-bundle, wrapper
- Language: PHP
- Homepage: https://nucleos.rocks
- Size: 1.35 MB
- Stars: 34
- Watchers: 3
- Forks: 13
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
NucleosDompdfBundle
===================
[](https://packagist.org/packages/nucleos/dompdf-bundle)
[](https://packagist.org/packages/nucleos/dompdf-bundle)
[](LICENSE.md)
[](https://packagist.org/packages/nucleos/dompdf-bundle)
[](https://packagist.org/packages/nucleos/dompdf-bundle)
[](https://packagist.org/packages/nucleos/dompdf-bundle)
[](https://github.com/nucleos/NucleosDompdfBundle/actions?query=workflow%3A"Continuous+Integration"+event%3Apush)
[](https://codecov.io/gh/nucleos/NucleosDompdfBundle)
[](https://shepherd.dev/github/nucleos/NucleosDompdfBundle)
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 nucleos/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:
```php
// config/bundles.php
return [
// ...
Nucleos\DompdfBundle\NucleosDompdfBundle::class => ['all' => true],
];
```
## Configure the Bundle
```yaml
# config/packages/nucleos_dompdf.yaml
nucleos_dompdf:
defaults:
defaultFont: 'helvetica'
# See https://github.com/dompdf/dompdf/wiki/Usage#options for available options
```
## Usage
Whenever you need to turn a html page into a PDF use dependency injection for your service:
```php
use Nucleos\DompdfBundle\Factory\DompdfFactoryInterface;
use Nucleos\DompdfBundle\Wrapper\DompdfWrapperInterface;
final class MyService
{
public function __construct(DompdfFactoryInterface $factory)
{
$this->factory = $factory;
}
public function render()
{
// ...
/** @var Dompdf\Dompdf $dompdf */
$dompdf = $this->factory->create();
// Or pass an array of options:
$dompdf = $this->factory->create(['chroot' => '/home']);
// ...
}
}
final class MyOtherService
{
public function __construct(DompdfWrapperInterface $wrapper)
{
$this->wrapper = $wrapper;
}
public function stream()
{
// ...
$html = '
Sample Title
Lorem Ipsum
';
/** @var Symfony\Component\HttpFoundation\StreamedResponse $response */
$response = $this->wrapper->getStreamResponse($html, "document.pdf");
$response->send();
// ...
}
public function binaryContent()
{
// ...
return $this->wrapper->getPdf($html);
// ...
}
}
```
### Render pdf using Twig
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
```php
$html = $this->renderView('my_pdf.html.twig', array(
// ...
));
$this->wrapper->getStreamResponse($html, 'document.pdf');
```
### Using asset() to link assets
First, make sure your `chroot` is correctly set and `isRemoteEnabled` is true.
```yaml
# config/packages/nucleos_dompdf.yaml
nucleos_dompdf:
defaults:
chroot: '%kernel.project_dir%/public/assets'
isRemoteEnabled: true
```
Second, use `{{ absolute_url( asset() ) }}`
```html
```
### Events
The dompdf wrapper dispatches events to conveniently get the inner dompdf instance when creating the PDF.
- `dompdf.output` is dispatched in `getPdf()`
- `dompdf.stream` is dispatched in `streamHtml()`
See [Symfony Events and Event Listeners](https://symfony.com/doc/current/event_dispatcher.html) for more info.
## License
This bundle is under the [MIT license](LICENSE.md).
[dompdf]: https://github.com/dompdf/dompdf