生成PDF Symfony2 IoTcpdfBundle

时间:2012-03-24 15:47:03

标签: pdf symfony

我正在使用Symfony2生成带有IoTcpdfBundle的pdf文件,但有一种我不理解的奇怪行为。

当我在控制器上时,我会生成如下的pdf文件:

$html = $this->renderView('MyBundle:Docs:solicituddevacaciones.pdf.twig', array());
return $this->get('io_tcpdf')->quick_pdf($html);

这些行生成pdf文件。一切都很好,我可以右键单击该文件来保存它,它是一个.pdf文件。

但是当我使用表单收到一些数据时,我将这些行放在:

if ($request->getMethod() == 'POST') {
    $year = $this->get('request')->request->get('year');
    $date= $this->get('request')->request->get('date');

    $html = $this->renderView('SoflaSoflaBundle:Documentales:solicituddevacaciones.pdf.twig', array());
    return $this->get('io_tcpdf')->quick_pdf($html);        
}

当我右键单击该文件进行保存时,它不是.pdf文件,浏览器建议我将该文件另存为.htm

为什么会这样?我需要用户能够将文件保存为.pdf文件。

请为此提供帮助。

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,发现捆绑包可能已经过时了。我不得不改变一些设置,最重要的是在捆绑包的'Helper'文件夹中为Tcpdf类的quick_pdf函数添加另一个标题:

 $response->headers->set('Content-Disposition', 'attachment; filename="'.$file.'"');

现在它像魅力一样工作,在控制器中调用它,如:

        $html = $this->renderView('Bundle:Item:print.pdf.twig', array(
        'some' => $this->value,
    ));

    return $this->get('io_tcpdf')->quick_pdf($html, "yourFileName.pdf");

答案 1 :(得分:0)

尝试保存html(或者更好的是,左键单击而不是右键单击)并检查该文件的内容。你可能在某个地方有一个错误,那个html文件是由symfony生成的,用于解释错误。