【发布时间】:2012-11-19 06:30:32
【问题描述】:
使用 Symfony2 和 PdfBundle 动态生成 PDF 文件,我确实无法生成文件。
按照文档说明,我已经设置了所有捆绑内容:
自动加载.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,
));
}
还有这个树枝文件:
<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 ?我不这么认为... :(
【问题讨论】:
-
删除我的旧答案,因为它不是解决方案。 github 上的 bundle 包含一些示例,这些对你有用吗?
-
嗯,你的回答确实有效;),因为我没有描述配置。 ;)。我想我使用的示例与 Bundle 文档中描述的示例完全相同。仅返回一个 *.pdf.twig 文件,其中包含 $this -> 渲染和一个数组以填充模板的“空白”。并且总是 Pdf 注释。我真的不知道还有什么要检查或做什么:(
标签: php symfony pdf-generation twig