pontedilana/weasyprint-bundle
最新稳定版本:3.0.0
Composer 安装命令:
composer require pontedilana/weasyprint-bundle
包简介
Easily create PDF in Symfony by converting Twig/HTML templates.
README 文档
README
PhpWeasyPrint is a PHP (7.4+) wrapper for WeasyPrint 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, of which it aims to be a one-to-one substitute
Installation
With composer, require:
composer require pontedilana/weasyprint-bundle
Then enable it in your kernel (a flex recipe is coming soon):
// config/bundles.php <?php return [ //... Pontedilana\WeasyprintBundle\WeasyprintBundle::class => ['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.
# 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
# config/packages/weasyprint.yaml weasyprint: temporary_folder: "%kernel.cache_dir%/weasyprint"
You can also configure the timeout used by the generators with process_timeout:
# config/packages/weasyprint.yaml weasyprint: process_timeout: 20 # In seconds
Usage
The bundle registers one service:
- the
weasyprint.pdfservice allows you to generate pdf files.
Generate a PDF document from a URL
// @var Pontedilana\PhpWeasyPrint\Pdf $weasyprintPdf->generate('https://www.github.com', '/path/to/the/file.pdf');
Generate a PDF document from a twig view
// @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 a response from a controller
use Pontedilana\WeasyprintBundle\WeasyPrint\Response\PdfResponse; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; class SomeController extends AbstractController { public function pdf(Pontedilana\PhpWeasyPrint\Pdf $weasyprintPdf) { $html = $this->renderView( 'frontend/product/pdf.html.twig', [ 'some' => $vars, ] ); return new PdfResponse( $weasyprintPdf->getOutputFromHtml($html), 'file.pdf' ); } }
Note: Filenames with accented characters (e.g., invoice_àèìòù.pdf) are automatically supported. The bundle generates an ASCII-safe fallback for older browsers while preserving the original UTF-8 filename for modern browsers (following RFC 6266).
Render a PDF document with a relative url inside like CSS files or images
use Pontedilana\WeasyprintBundle\WeasyPrint\Response\PdfResponse; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; class SomeController extends AbstractController { public function pdf(Pontedilana\PhpWeasyPrint\Pdf $weasyprintPdf) { $pageUrl = $this->generateUrl('homepage', [], true); // use absolute path! return new PdfResponse( $weasyprintPdf->getOutput($pageUrl), 'file.pdf' ); } }
Credits
WeasyPrintBundle and PhpWeasyPrint have been developed by Pontedilana.
SnappyBundle has been developed by KnpLabs.
统计信息
- 总下载量: 704.1k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 38
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-07-17