KnpSnappyBundle
v1.10.2
Snappy 是 wkhtmltopdf 轉換實用程式的 PHP 包裝器。它允許您使用 webkit 引擎從 html 文件生成 pdf 或圖像文件。
KnpSnappyBundle 為您的 Symfony 專案提供了簡單的整合。
如果您使用 JavaScript 來渲染頁面,您可能會遇到一些問題,因為 wkhtmltopdf 與 ES6 api 不完全相容。解決這個問題的唯一方法是提供polyfills來修復現代ES6 api和wkhtmltopdf渲染引擎之間的差距。
對於作曲家,需要:
composer require knplabs/knp-snappy-bundle
如果您不使用 Flex,請在核心中啟用它:
// config/bundles.php
<?php
return [
//...
Knp Bundle SnappyBundle KnpSnappyBundle::class => [ ' all ' => true ],
//...
];
如果您需要更改二進位檔案、更改實例選項甚至停用一項或兩項服務,您可以透過設定來完成。
# config/packages/knp_snappy.yaml
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()
,您可以使用
# config/packages/knp_snappy.yaml
knp_snappy :
temporary_folder : " %kernel.cache_dir%/snappy "
您也可以使用process_timeout
配置生成器使用的逾時:
# config/packages/knp_snappy.yaml
knp_snappy :
process_timeout : 20 # In seconds
此捆綁包註冊了兩個服務:
knp_snappy.image
服務可讓您產生映像;knp_snappy.pdf
服務可讓您產生 pdf 檔案。 // @var KnpSnappyImage
$ knpSnappyImage -> generate ( ' http://www.google.fr ' , ' /path/to/the/image.jpg ' );
// @var KnpSnappyPdf
$ knpSnappyPdf -> generate ( ' http://www.google.fr ' , ' /path/to/the/file.pdf ' );
// @var KnpSnappyPdf
$ knpSnappyPdf -> generate ( array ( ' http://www.google.fr ' , ' http://www.knplabs.com ' , ' http://www.google.com ' ), ' /path/to/the/file.pdf ' );
// @var KnpSnappyPdf
$ knpSnappyPdf -> generateFromHtml (
$ this -> renderView (
' MyBundle:Foo:bar.html.twig ' ,
array (
' some ' => $ vars
)
),
' /path/to/the/file.pdf '
);
use Knp Bundle SnappyBundle Snappy Response JpegResponse ;
use Symfony Bundle FrameworkBundle Controller AbstractController ;
class SomeController extends AbstractController
{
public function imageAction ( Knp Snappy Image $ knpSnappyImage )
{
$ html = $ this -> renderView ( ' MyBundle:Foo:bar.html.twig ' , array (
' some ' => $ vars
));
return new JpegResponse (
$ knpSnappyImage -> getOutputFromHtml ( $ html ),
' image.jpg '
);
}
}
use Knp Bundle SnappyBundle Snappy Response PdfResponse ;
use Symfony Bundle FrameworkBundle Controller AbstractController ;
class SomeController extends AbstractController
{
public function pdfAction ( Knp Snappy Pdf $ knpSnappyPdf )
{
$ html = $ this -> renderView ( ' MyBundle:Foo:bar.html.twig ' , array (
' some ' => $ vars
));
return new PdfResponse (
$ knpSnappyPdf -> getOutputFromHtml ( $ html ),
' file.pdf '
);
}
}
use Knp Bundle SnappyBundle Snappy Response PdfResponse ;
use Symfony Bundle FrameworkBundle Controller AbstractController ;
class SomeController extends AbstractController
{
public function pdfAction ( Knp Snappy Pdf $ knpSnappyPdf )
{
$ pageUrl = $ this -> generateUrl ( ' homepage ' , array (), true ); // use absolute path!
return new PdfResponse (
$ knpSnappyPdf -> getOutput ( $ pageUrl ),
' file.pdf '
);
}
}
KNPLabs 正在尋找維護人員(看看原因)。
如果您有興趣,請隨時開啟 PR 要求新增為維護者。
我們很高興收到您的來信:)
SnappyBundle 和 Snappy 是基於出色的 wkhtmltopdf。 SnappyBundle 由 KnpLabs 開發。