KnpSnappyBundle
v1.10.2
Snappy는 wkhtmltopdf 변환 유틸리티용 PHP 래퍼입니다. 웹킷 엔진을 사용하여 HTML 문서에서 PDF 또는 이미지 파일을 생성할 수 있습니다.
KnpSnappyBundle은 Symfony 프로젝트에 대한 간단한 통합을 제공합니다.
JavaScript를 사용하여 페이지를 렌더링하는 경우 wkhtmltopdf가 ES6 API와 완전히 호환되지 않기 때문에 몇 가지 문제가 발생할 수 있습니다. 이 문제를 해결하는 유일한 방법은 최신 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에서 개발되었습니다.