簡體   English   中英

Symfony2 - PdfBundle無法正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM