Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: about 1 month 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 (about 9 years ago)
- Default Branch: 4.3.x
- Last Pushed: 2024-05-22T12:37:17.000Z (7 months ago)
- Last Synced: 2024-05-22T13:33:13.086Z (7 months 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
===================
[![Latest Stable Version](https://poser.pugx.org/nucleos/dompdf-bundle/v/stable)](https://packagist.org/packages/nucleos/dompdf-bundle)
[![Latest Unstable Version](https://poser.pugx.org/nucleos/dompdf-bundle/v/unstable)](https://packagist.org/packages/nucleos/dompdf-bundle)
[![License](https://poser.pugx.org/nucleos/dompdf-bundle/license)](LICENSE.md)[![Total Downloads](https://poser.pugx.org/nucleos/dompdf-bundle/downloads)](https://packagist.org/packages/nucleos/dompdf-bundle)
[![Monthly Downloads](https://poser.pugx.org/nucleos/dompdf-bundle/d/monthly)](https://packagist.org/packages/nucleos/dompdf-bundle)
[![Daily Downloads](https://poser.pugx.org/nucleos/dompdf-bundle/d/daily)](https://packagist.org/packages/nucleos/dompdf-bundle)[![Continuous Integration](https://github.com/nucleos/NucleosDompdfBundle/actions/workflows/continuous-integration.yml/badge.svg?event=push)](https://github.com/nucleos/NucleosDompdfBundle/actions?query=workflow%3A"Continuous+Integration"+event%3Apush)
[![Code Coverage](https://codecov.io/gh/nucleos/NucleosDompdfBundle/graph/badge.svg)](https://codecov.io/gh/nucleos/NucleosDompdfBundle)
[![Type Coverage](https://shepherd.dev/github/nucleos/NucleosDompdfBundle/coverage.svg)](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.phpreturn [
// ...
Nucleos\DompdfBundle\NucleosDompdfBundle::class => ['all' => true],
];
```## Configure the Bundle
```yaml
# config/packages/nucleos_dompdf.yamlnucleos_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 TwigIf 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.yamlnucleos_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