Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pontedilana/weasyprintbundle
Easily create PDF in Symfony by converting HTML using WeasyPrint
https://github.com/pontedilana/weasyprintbundle
bundle pdf pdf-generation php symfony symfony-bundle weasyprint
Last synced: 2 days ago
JSON representation
Easily create PDF in Symfony by converting HTML using WeasyPrint
- Host: GitHub
- URL: https://github.com/pontedilana/weasyprintbundle
- Owner: pontedilana
- License: mit
- Created: 2021-07-15T08:12:08.000Z (over 3 years ago)
- Default Branch: develop
- Last Pushed: 2024-11-04T17:36:26.000Z (10 days ago)
- Last Synced: 2024-11-12T18:03:12.200Z (2 days ago)
- Topics: bundle, pdf, pdf-generation, php, symfony, symfony-bundle, weasyprint
- Language: PHP
- Homepage:
- Size: 47.9 KB
- Stars: 32
- Watchers: 2
- Forks: 5
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# WeasyPrintBundle
[PhpWeasyPrint](https://github.com/pontedilana/php-weasyprint) is a PHP (7.4+) wrapper for [WeasyPrint](https://weasyprint.org/) PDF generator.
It allows you to generate PDF files from HTML string or URL.The WeasyPrintBundle provides a simple integration for your Symfony project.
This bundle is massively inspired by [KnpLabs/KnpSnappyBundle](https://github.com/KnpLabs/KnpSnappyBundle), of which it aims to be a one-to-one substitute
## Installation
With [composer](https://getcomposer.org), require:
`composer require pontedilana/weasyprint-bundle`
Then enable it in your kernel (a flex recipe is coming soon):
```php
// config/bundles.php
['all' => true],
//...
];
```## Configuration
If you need to change the binaries, change the instance options or even disable one or both services, you can do it through the configuration.```yaml
# config/packages/weasyprint.yaml
weasyprint:
pdf:
enabled: true
binary: /usr/local/bin/weasyprint
options: []
```If you want to change temporary folder which is ```sys_get_temp_dir()``` by default, you can use
```yaml
# config/packages/weasyprint.yaml
weasyprint:
temporary_folder: "%kernel.cache_dir%/weasyprint"
```You can also configure the timeout used by the generators with `process_timeout`:
```yaml
# config/packages/weasyprint.yaml
weasyprint:
process_timeout: 20 # In seconds
```## Usage
The bundle registers one service:
- the `weasyprint.pdf` service allows you to generate pdf files.
### Generate a pdf document from a URL
```php
// @var Pontedilana\PhpWeasyPrint\Pdf
$weasyprintPdf->generate('https://www.github.com', '/path/to/the/file.pdf');
```### Generate a pdf document from a twig view
```php
// @var Pontedilana\PhpWeasyPrint\Pdf
$weasyprintPdf->generateFromHtml(
$this->renderView(
'frontend/product/pdf.html.twig',
[
'some' => $vars,
]
),
'/path/to/the/file.pdf'
);
```### Render a pdf document as response from a controller
```php
use Pontedilana\WeasyprintBundle\WeasyPrint\Response\PdfResponse;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;class SomeController extends AbstractController
{
public function pdfAction(Pontedilana\PhpWeasyPrint\Pdf $weasyprintPdf)
{
$html = $this->renderView(
'frontend/product/pdf.html.twig',
[
'some' => $vars,
]
);return new PdfResponse(
$weasyprintPdf->getOutputFromHtml($html),
'file.pdf'
);
}
}
```### Render a pdf document with a relative url inside like css files or images
```php
use Pontedilana\WeasyprintBundle\WeasyPrint\Response\PdfResponse;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;class SomeController extends AbstractController
{
public function pdfAction(Pontedilana\PhpWeasyPrint\Pdf $weasyprintPdf)
{
$pageUrl = $this->generateUrl('homepage', [], true); // use absolute path!return new PdfResponse(
$weasyprintPdf->getOutput($pageUrl),
'file.pdf'
);
}
}
```## Credits
WeasyPrintBundle and [PhpWeasyPrint](https://github.com/pontedilana/php-weasyprint) has been developed by [Pontedilana](https://www.pontedilana.it/).
SnappyBundle has been developed by [KnpLabs](https://knplabs.com).