dreadnip/chrome-pdf-bundle
最新稳定版本:0.6.0
Composer 安装命令:
composer require dreadnip/chrome-pdf-bundle
包简介
A wrapper around chrome-php/chrome to generate PDFs in Symfony projects
关键字:
README 文档
README
The ChromePdfBundle is a Symfony bundle that leverages the chrome-php/chrome project to render HTML and save the output as a PDF file.
Installation
With composer, require:
composer require dreadnip/chrome-pdf-bundle
Configuration
The bundle relies on a working, up-to-date Chrome/Chromium instance to work. You must specify the binary in your .env file.
# .env or .env.local CHROME_BINARY="/usr/bin/chromium"
Usage
The bundle registers two services:
chrome_pdf.pdf_generatorallows you to generate pdf files from HTML strings. You can autowire thePdfGeneratorclass in your application to get started quickly.chrome_pdf.browser_factoryis the chrome-php/chrome BrowserFactory class offered as a service within your Symfony application. Use this if you want to fine-tune the PDF generation process. You can use the PdfGenerator class as a starting point and build your custom solution from that.
Basic example: render a pdf document in a controller
use Dreadnip\ChromePdfBundle\Service\PdfGenerator; use Symfony\Component\HttpFoundation\BinaryFileResponse; use Symfony\Component\HttpFoundation\Response; use Twig\Environment; class TestController extends AbstractController { public function __invoke(PdfGenerator $pdfGenerator): Response { $html = $this->render('pdf.html.twig'); $path = $pdfGenerator->generate($html, 'files/test.pdf'); return new BinaryFileResponse($path); } }
Advanced example: render a pdf document in a controller with custom options
use Dreadnip\ChromePdfBundle\Service\PdfGenerator; use Symfony\Component\HttpFoundation\BinaryFileResponse; use Symfony\Component\HttpFoundation\Response; use Twig\Environment; class TestController { public function __invoke( Environment $twig, PdfGenerator $pdfGenerator ): Response { $html = $twig->render('pdf.html.twig'); // Control everything by passing custom options $printOptions = [ 'printBackground' => true, 'displayHeaderFooter' => true, 'preferCSSPageSize' => true, 'headerTemplate'=> "<div></div>", 'footerTemplate' => "<div></div>", 'scale' => 1.0, ]; // Setting headless to false helps you debug issues $browserOptions = [ 'headless' => false, ]; $path = $pdfGenerator->generate( html: $html, path: 'files/test.pdf', printOptions: $options, browserOptions: $browserOptions, timeout: 5000 ); return new BinaryFileResponse($path); } }
Print options can be used to control the rendering of the PDF.
Browser options are available to control the headless Chrome instance that will be used to render the PDF.
A list of all available options can be found in the chrome-php/chrome repository.
Base template
The bundle comes with a base template that can be extended to build PDFs with. This includes helpers for page lay-out and breaking. The template comes with two blocks styles for CSS and content for the actual PDF content.
{% extends '@ChromePdf/base.html.twig' %}
{% block content %}
<section class="page page-one break-after">
<h1>First page</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolores enim maxime quasi? Ab accusantium at commodi corporis, distinctio earum facilis harum ipsum maxime, nisi nostrum obcaecati odit officia quod voluptatem?</p>
</section>
<section class="page page-two">
<h2>Second page</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolores enim maxime quasi? Ab accusantium at commodi corporis, distinctio earum facilis harum ipsum maxime, nisi nostrum obcaecati odit officia quod voluptatem?</p>
</section>
{% endblock %}
Credits
This bundle is nothing more than a simple wrapper around the awesome chrome-php/chrome project.
统计信息
- 总下载量: 14.37k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 6
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-04-11