xeurun / knp-snappy-bundle
该包已被弃用且不再维护。未建议替代包。
通过转换Twig/HTML模板,轻松在Symfony2中创建PDF和图像。
v1.2
2014-01-02 11:20 UTC
Requires
- php: >=5.3.2
- knplabs/knp-snappy: *
- symfony/framework-bundle: >=2.0.0
This package is auto-updated.
Last update: 2020-02-07 20:53:15 UTC
README
Snappy 是一个PHP (5.3+) 对wkhtmltopdf 转换工具的包装器。它允许您使用webkit引擎从HTML文档生成PDF或图像文件。
KnpSnappyBundle 为您的Symfony项目提供了一种简单的集成方式。
安装
使用 composer,添加
{ "require": { "xeurun/knp-snappy-bundle": "dev-master" } }
然后在您的内核中启用它
// app/AppKernel.php public function registerBundles() { $bundles = array( //... new Knp\Bundle\SnappyBundle\KnpSnappyBundle(), //...
配置
如果您需要更改二进制文件、实例选项或禁用一个或两个服务,您可以通过配置来实现。
# app/config/config.yml knp_snappy: pdf: enabled: true binary: /usr/local/bin/wkhtmltopdf #"\"C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe\"" for Windows users options: [] image: enabled: true binary: /usr/local/bin/wkhtmltoimage #"\"C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltoimage.exe\"" for Windows users options: []
如果您想更改默认的临时文件夹sys_get_temp_dir()
,可以使用
# app/config/config.yml knp_snappy: temporary_folder: %kernel.cache_dir%/snappy
使用方法
该包注册了两个服务
knp_snappy.image
服务允许您生成图像;knp_snappy.pdf
服务允许您生成PDF文件。
从URL生成图像
$container->get('knp_snappy.image')->generate('http://www.google.fr', '/path/to/the/image.jpg');
从URL生成PDF文档
$container->get('knp_snappy.pdf')->generate('http://www.google.fr', '/path/to/the/file.pdf');
从多个URL生成PDF文档
$container->get('knp_snappy.pdf')->generate(array('http://www.google.fr', 'http://www.knplabs.com', 'http://www.google.com'), '/path/to/the/file.pdf');
从Twig视图生成PDF文档
$this->get('knp_snappy.pdf')->generateFromHtml( $this->renderView( 'MyBundle:Foo:bar.html.twig', array( 'some' => $vars ) ), '/path/to/the/file.pdf' );
从控制器渲染图像作为响应
$html = $this->renderView('MyBundle:Foo:bar.html.twig', array( 'some' => $vars )); return new Response( $this->get('knp_snappy.image')->getOutputFromHtml($html), 200, array( 'Content-Type' => 'image/jpg', 'Content-Disposition' => 'filename="image.jpg"' ) );
从控制器渲染PDF文档作为响应
$html = $this->renderView('MyBundle:Foo:bar.html.twig', array( 'some' => $vars )); return new Response( $this->get('knp_snappy.pdf')->getOutputFromHtml($html), 200, array( 'Content-Type' => 'application/pdf', 'Content-Disposition' => 'attachment; filename="file.pdf"' ) );
渲染包含相对URL的PDF文档,如CSS文件
$pageUrl = $this->generateUrl('homepage', array(), true); // use absolute path! return new Response( $this->get('knp_snappy.pdf')->getOutput($pageUrl), 200, array( 'Content-Type' => 'application/pdf', 'Content-Disposition' => 'attachment; filename="file.pdf"' ) );
致谢
SnappyBundle 和 Snappy 基于出色的 wkhtmltopdf。SnappyBundle 由 KnpLabs 开发。