生成的pdf使用symfony 1.4打开新选项卡

时间:2013-04-13 03:11:50

标签: symfony-1.4 tcpdf

我正在使用symfony 1.4。我有应用程序列表。从那里我生成了一个pdf动作。生成后我想用新标签或窗口打开pdf。我怎么能这样做

1 个答案:

答案 0 :(得分:1)

如果您想在点击链接后在新窗口/标签中显示生成的PDF,请尝试:

<a href="<?php echo url_for('@your_action_route') ?>" target="_blank">PDF</a>

<?php echo link_to('PDF','@your_action_route',array('target' => '_blank')) ?>

如果您想回应来自操作的链接:

sfApplicationConfiguration::getActive()->loadHelpers(array('Url'));

然后根据需要使用link_tourl_for(上面的示例)。


如果您想通过操作提供PDF,而不是下载:

制作新路线

pdf:
  url: /pdf/:filename.pdf/*
  param: { module: mymodule, action: show }

然后在mymodule / actions / actions.class.php中创建此操作:

  public function executeServepdf(sfWebRequest $request)
  {
    $this->setLayout(false);
    sfConfig::set('sf_web_debug', false);

    $pdf = sfConfig::get('sf_web_dir').
            DIRECTORY_SEPARATOR.
            'uploads'.
            DIRECTORY_SEPARATOR.
            $request->getParameter('filename').'.pdf';

    $this->forward404Unless(file_exists($pdf));

    $this->getResponse()->clearHttpHeaders();
    $this->getResponse()->setHttpHeader('Pragma: public', true);
    $this->getResponse()->setContentType('application/pdf');
    $this->getResponse()->sendHttpHeaders();
    $this->getResponse()->setContent(readfile($pdf));

    return sfView::NONE;
  }

现在,如果您将PDF放在web / uploads / your_file.pdf目录中 并输入以下网址:http://yoursite/pdf/your_file.pdf 您将直接在浏览器窗口中显示PDF。

要将其作为新窗口/标签打开,请使用target="_blank"元素的<a>属性,如第一个示例所示。

此外,也许这个网站会有所帮助:http://www.symfony-zone.com/wordpress/2009/08/03/serving-pdf-files-through-symfony-controllers/我用过它的例子。