dreadnip/chrome-pdf-bundle
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.
dreadnip/chrome-pdf-bundle 适用场景与选型建议
dreadnip/chrome-pdf-bundle 是一款 基于 HTML 开发的 Composer 扩展包,目前已累计 18.86k 次下载、GitHub Stars 达 7, 最近一次更新时间为 2021 年 04 月 11 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「symfony」 「pdf」 「chrome」 「chromium」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 dreadnip/chrome-pdf-bundle 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 dreadnip/chrome-pdf-bundle 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 dreadnip/chrome-pdf-bundle 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
The bundle for easy using json-rpc api on your project
The Codeception extension for automatically starting and stopping Chromedriver when running tests.
Instrument headless chrome/chromium instances from php5.6
Convert HTML to Pdf using headless chrome.
Bundle Symfony DaplosBundle
Clusteer is a Puppeteer wrapper written for PHP, with the super-power of parallelizing pages across multiple browser instances.
统计信息
- 总下载量: 18.86k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 7
- 点击次数: 27
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-04-11