如何在 Symfony 中返回响应以输出 pdf?我目前正在使用 FPDF,因为我不想使用任何捆绑软件。这是我的 Controller 操作:
public function pdfAction(Request $request) {
//grab from database
$pdf = new \FPDF;
for($i = 0; $i < count($entities); $i++) {
//manipulate data
$pdf->AddPage();
$pdf->SetFont("Helvetica","","14");
$pdf->SetTextColor(255, 255, 255);
}
$pdf->Output();
return new Response($pdf, 200, array(
'Content-Type' => 'pdf'));
}
有了这些,我得到的只是一个包含乱码字符的页面。我对 I/O 操作很陌生,所以任何帮助都会很棒。谢谢..
最佳答案
您需要为响应设置正确的 Content-Type
。此外,不要将您的 FPDF
对象作为响应内容发送,而是发送 PDF 输出。试试这个:
public function pdfAction(Request $request) {
//................//
return new Response($pdf->Output(), 200, array(
'Content-Type' => 'application/pdf'));
}
更新:
要下载而不是显示生成的 PDF 文件,您需要将 disposition
设置为 attachment
:
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
public function pdfAction(Request $request) {
//................//
$response = new Response(
$pdf->Output(),
Response::HTTP_OK,
array('content-type' => 'application/pdf')
);
$d = $response->headers->makeDisposition(
ResponseHeaderBag::DISPOSITION_ATTACHMENT,
'foo.pdf'
);
$response->headers->set('Content-Disposition', $d);
return $response;
}
http://symfony.com/doc/current/components/http_foundation/introduction.html#serving-files
关于Symfony2 使用 FPDF 输出 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24089758/