Snappy عبارة عن غلاف PHP لأداة التحويل wkhtmltopdf. فهو يسمح لك بإنشاء ملفات pdf أو ملفات صور من مستندات html الخاصة بك، باستخدام محرك webkit.
توفر KnpSnappyBundle تكاملًا بسيطًا لمشروع Symfony الخاص بك.
إذا كنت تستخدم JavaScript لعرض صفحاتك، فقد تواجه بعض المشكلات بسبب عدم توافق wkhtmltopdf تمامًا مع ES6 apis. الطريقة الوحيدة لحل هذه المشكلة هي توفير عمليات تعبئة متعددة تعمل على إصلاح الفجوات بين واجهة برمجة التطبيقات ES6 الحديثة ومحرك العرض 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 وSnapy على ملف wkhtmltopdf الرائع. تم تطوير SnappyBundle بواسطة KnpLabs.