Symfony2:在浏览器

时间:2015-11-23 10:15:08

标签: php symfony pdf

在我的Symfony 2项目中,当用户点击查看pdf文件的链接时,我想在浏览器中显示pdf。 pdf文件包含在我的"视图"文件夹,在名为" pdf-files"。

的子文件夹中

如何调整以下控制器功能以便在浏览器中显示pdf文件?

/**
 * @Route("/pdf/{pdfFilename}")
*/
public function pdfAction($pdfFilename) {
   return $this->render('@App/pdf-files/'.$pdfFilename);
}

2 个答案:

答案 0 :(得分:2)

所有关于http请求的conten-type标头。所以只需设置它:

$response = $this->render('@App/pdf-files/'.$pdfFilename);
$response->headers->set('Content-Type', 'application/pdf');

return $response;

答案 1 :(得分:2)

要提供静态文件,您可能需要使用BinaryFileResponse类。在此类响应中,您可以设置public function pdfAction($pdfFilename) { $kernel = $this->get('kernel'); $path = $kernel->locateResource('@AppBundle/Resources/pdf-files/'.$pdfFilename); $response = new BinaryFileResponse($path) $response->headers->set('Content-Type', 'application/pdf'); $response->setContentDisposition( ResponseHeaderBag::DISPOSITION_INLINE, //use ResponseHeaderBag::DISPOSITION_ATTACHMENT to save as an attachement $pdfFilename ); return $response; } - 此文件是应在浏览器中打开还是作为附件下载。

因此,您的代码应该类似于:

Resources

编辑:,因为locateResource默认情况下在pdf-files目录下查找文件我建议将views目录从Resources目录移到val obsList: Observable[List[MyEntry] = Observable.from(getListEntry) // getListEntry would give me a List[MyEntry]