php - 如何配置 knp_snappy 包以生成不同的页面格式
问题描述
我正在使用一个应用程序Symfony 4
,我在执行打印功能或从不同格式生成 Pdf 时遇到问题html
,我的应用程序确实使用控制器操作在帮助下发布账单Knp_snappy
,
我已配置knp snappy
生成A4 页面 pdf 和它在这个阶段工作得很好没有问题,现在我有另一个控制器操作,为每张支付的账单发布收据,这就是我卡住的地方,我无法重新配置knp_snapp
和调整格式以适合大小收据是 9 厘米,我也不想在 A4 的大页面上打印收据。
所以,我想知道当我尝试释放收据时,有没有办法覆盖动作控制器上的knp_snappy
in文件?yaml
谢谢,
解决方案
我已经找到了一个解决方案,它的一部分实际上是在github上的这个问题中,它的描述如下。
use Knp\Snappy\Pdf as Snappy;
$binary = $this->container->getParameter('knp_snappy.pdf.binary');
$snappy = new Snappy($binary);
$html= $this->renderView('bill/receipt.html.twig', array(
'receipt'=>$receipt,
));
$pdf=$snappy->getOutputFromHtml($html,array(
'orientation' => 'portrait',
'enable-javascript' => true,
'javascript-delay' => 1000,
'no-stop-slow-scripts' => true,
'no-background' => false,
'lowquality' => false,
'page-width' => '8cm',
'page-height' => '12.40cm',
'margin-left'=>0,
'margin-right'=>0,
'margin-top'=>0,
'margin-bottom'=>0,
'encoding' => 'utf-8',
'images' => true,
'cookie' => array(),
'dpi' => 300,
'enable-external-links' => true,
'enable-internal-links' => true,
)
);
return new Response($pdf,200,array(
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'inline; filename="receipt-'.$date.'.pdf"'
));
我认为代码本身就很清楚。
我得到了 knp snappy 二进制文件
我创建了 Snappy 类的新实例
我在 getOutputFromHtml() 函数中设置页面宽度
所有设置为 0 的边距选项都相同,因此它覆盖整个页面
其余的都是正常的
推荐阅读
- c# - 在c#中从标签名称包含冒号(:)的xml元素中读取值
- discord - discord.js 出于某种原因,此命令下的任何代码都不起作用?
- json - 带引号的 Json paser 输出
- c - 程序按余数排序数组 3
- azure-devops - 我可以从 Azure Devops 获得我的 WPF 应用程序的下载链接吗
- pandas - 通过比较两个数据框来填充新行
- typescript - 如何强制参数成为某个对象的属性的构造函数/类的实例?
- java - 如何在需要 Runnable Instance 的地方接受方法引用运算符?
- javascript - 如何获得高质量的画布到 PNG 的转换
- java - 按下按钮时如何从资产文件夹中读取随机文本文件?