core23/dompdf-bundle
最新稳定版本:4.5.0
Composer 安装命令:
composer require core23/dompdf-bundle
包简介
This bundle provides a wrapper for using dompdf inside symfony.
README 文档
README
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:
// config/bundles.php return [ // ... Nucleos\DompdfBundle\NucleosDompdfBundle::class => ['all' => true], ];
Configure the Bundle
# config/packages/nucleos_dompdf.yaml nucleos_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:
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 = '<h1>Sample Title</h1><p>Lorem Ipsum</p>'; /** @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 Twig
If 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
$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.
# config/packages/nucleos_dompdf.yaml nucleos_dompdf: defaults: chroot: '%kernel.project_dir%/public/assets' isRemoteEnabled: true
Second, use {{ absolute_url( asset() ) }}
<img src={{ absolute_url( asset('assets/example.jpg') ) }}>
Events
The dompdf wrapper dispatches events to conveniently get the inner dompdf instance when creating the PDF.
dompdf.outputis dispatched ingetPdf()dompdf.streamis dispatched instreamHtml()
See Symfony Events and Event Listeners for more info.
License
This bundle is under the MIT license.
统计信息
- 总下载量: 219.02k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 53
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2015-10-16