[英]Symfony2 - PdfBundle not working
使用Symfony2和PdfBundle生成動態PDF文件,我確實無法生成文件。
按照文檔說明,我已經設置了所有捆綁的東西:
autoload.php:
'Ps' => __DIR__.'/../vendor/bundles',
'PHPPdf' => __DIR__.'/../vendor/PHPPdf/lib',
'Imagine' => array(__DIR__.'/../vendor/PHPPdf/lib', __DIR__.'/../vendor/PHPPdf/lib/vendor/Imagine/lib'),
'Zend' => __DIR__.'/../vendor/PHPPdf/lib/vendor/Zend/library',
'ZendPdf' => __DIR__.'/../vendor/PHPPdf/lib/vendor/ZendPdf/library',
AppKernel.php:
...新的Ps \\ PdfBundle \\ PsPdfBundle(),...
我想所有的設置都配置正確,因為我沒有得到任何“庫未找到”,也沒有任何東西......
所以,畢竟,我在控制器中這樣做:
...
use Ps\PdfBundle\Annotation\Pdf;
...
/**
* @Pdf()
* @Route ("/pdf", name="_pdf")
* @Template()
*/
public function generateInvoicePDFAction($name = 'Pedro')
{
return $this->render('AcmeStoreBundle:Shop:generateInvoice.pdf.twig', array(
'name' => $name,
));
}
有這個twig文件:
<pdf>
<dynamic-page>
Hello {{ name }}!
</dynamic-page>
</pdf>
好。 不知何故,我在頁面中得到的只是正常的html生成,好像它是一個正常的Response呈現。
Pdf()
注釋應該給出創建PDF文件的“特殊”行為,而不是呈現普通的HTML。
所以,有了上面的代碼,當我請求路由http://www.mysite.com/*...*/pdf
,我得到的是以下HTML渲染:
<pdf>
<dynamic-page>
Hello Pedro!
</dynamic-page>
</pdf>
(所以一個空白的HTML頁面上只有Hello Pedro!
字樣。
任何線索? 我做錯了嗎? 除了* .pdf.twig版本之外,是否必須使用替代* .html.twig? 我不這么認為...... :(
好,我知道了。
出於某種原因,捆綁文檔中的示例對我不起作用。 然而,在de bundle中有這個類: http : //github.com/psliwa/PdfBundle/blob/master/Controller/ExampleController.php ,在那里我可以找到一個對我有用的例子。 這是我最終使用的代碼:
/**
* @Route ("/generateInvoice", name="_generate_invoice")
*/
public function generateInvoiceAction($name = 'Pedro')
{
$facade = $this->get('ps_pdf.facade');
$response = new Response();
$this->render('AcmeStoreBundle:Shop:generateInvoiceAction.pdf.twig', array("name" => $name), $response);
$xml = $response->getContent();
$content = $facade->render($xml);
return new Response($content, 200, array('content-type' => 'application/pdf'));
}
下一個挑戰:將PDF存儲到磁盤中。
這是因為你錯過了URL中的“_format”選項。
$this->render()
不應與@Template
注釋一起使用。 @Template
將根據_format
參數提供正確的模板格式。
...
use Ps\PdfBundle\Annotation\Pdf;
...
/**
* @Pdf()
* @Route ("/pdf.{_format}", name="_pdf")
* @Template()
*/
public function generateInvoicePDFAction($name = 'Pedro')
{
return array('name' => $name);
}
應該工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.