我正在使用symfony 1.4。我有应用程序列表。从那里我生成了一个pdf动作。生成后我想用新标签或窗口打开pdf。我怎么能这样做
答案 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_to
或url_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/我用过它的例子。