massive / pdf-bundle
用于管理PDF文档的Massive套件
0.4.2
2022-08-02 08:15 UTC
Requires
- php: >=5.4
- knplabs/knp-snappy-bundle: ^1.4
- symfony/config: ^3.4 || ^4.0 || ^5.0 || ^6.0
- symfony/dependency-injection: ^3.4 || ^4.0 || ^5.0 || ^6.0
- symfony/framework-bundle: ^3.4 || ^4.0 || ^5.0 || ^6.0
- symfony/http-foundation: ^3.4 || ^4.0 || ^5.0 || ^6.0
- symfony/http-kernel: ^3.4 || ^4.0 || ^5.0 || ^6.0
- twig/twig: ^1.0 || ^2.0 || ^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.13
README
基于KnpSnappyBundle构建: https://github.com/KnpLabs/KnpSnappyBundle
安装
使用composer安装套件。
composer require massive/pdf-bundle
将套件添加到你的symfony内核。
new Knp\Bundle\SnappyBundle\KnpSnappyBundle(), new Massive\Bundle\PdfBundle\MassivePdfBundle(),
安装wkhtmltopdf
Ubuntu
apt-get install wkhtmltopdf
apt-get install xvfb
echo ‘xvfb-run –server-args=”-screen 0, 1024x768x24″ /usr/bin/wkhtmltopdf $*’ > /usr/bin/wkhtmltopdf.sh
chmod a+x /usr/bin/wkhtmltopdf.sh
ln -s /usr/bin/wkhtmltopdf.sh /usr/local/bin/wkhtmltopdf
wkhtmltopdf http://www.google.com output.pdf
MacOSX
http://wkhtmltopdf.org/downloads.html
配置Knp Snappy Bundle**
请参阅KnpSnappyBundle的配置。
使用方法
控制器特性
控制器特性是生成PDF的最简单方法
<?php namespace AppBundle\Controller; use Massive\Bundle\PdfBundle\Controller\RenderPdfTrait; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; class YourController extends Controller { use RenderPdfTrait; public function pdfAction(Request $request): Response { return $this->renderPdf( '@pdfs/your.html.twig', [ 'parameter' => 'hello' ], $request->getRequestFormat() ); } }
注册路由,将默认_format
设置为pdf
<route id="your.pdf" path="/your.{_format}"> <default key="_controller">AppBundle:Your:pdf</default> <default key="_format">pdf</default> </route>
现在你可以通过/your
访问PDF,或者使用/your.html
获取HTML响应(适合开发)。
生成PDF
/** @var \Massive\Bundle\PdfBundle\Pdf\PdfFactory $pdfFactory */ $pdfFactory = $this->get('massive_pdf.pdf_factory'); // get the service or inject it in your services configuration $pdf = $pdfFactory->create('pdf.html.twig');
嵌入本地资源
local_asset
通过使用file://
代替https://
来避免HTTP请求,从而提高性能
<img src="{{ local_asset('/images/image.jpg') }}" alt="Local Asset">
这仅在$request->getRequestFormat()
返回pdf
而不是html
时才有效。
如果你要强制使用file://
,请将第二个参数设置为true
<img src="{{ local_asset('/images/image.jpg', true) }}" alt="Local Asset">