Snappy เป็น wrapper PHP สำหรับยูทิลิตี้การแปลง wkhtmltopdf อนุญาตให้คุณสร้างไฟล์ PDF หรือไฟล์รูปภาพจากเอกสาร html ของคุณโดยใช้กลไก webkit
KnpSnappyBundle มอบการผสานรวมที่ง่ายดายสำหรับโปรเจ็กต์ Symfony ของคุณ
หากคุณใช้ JavaScript เพื่อแสดงหน้าเว็บของคุณ คุณอาจประสบปัญหาบางอย่างเนื่องจาก wkhtmltopdf ไม่สามารถทำงานร่วมกับ ES6 apis ได้อย่างสมบูรณ์ วิธีเดียวที่จะแก้ไขปัญหานี้ได้คือการจัดเตรียมโพลีฟิลที่แก้ไขช่องว่างระหว่าง ES6 apis สมัยใหม่และกลไกการเรนเดอร์ 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 กำลังมองหาผู้ดูแล (ดูสาเหตุ)
หากสนใจสามารถเปิดประชาสัมพันธ์เพื่อขอเพิ่มเป็นผู้ดูแลได้เลย
เรายินดีที่จะรับฟังจากคุณ :)
SnappyBundle และ Snappy มีพื้นฐานมาจาก wkhtmltopdf ที่ยอดเยี่ยม SnappyBundle ได้รับการพัฒนาโดย KnpLabs