FPDF - 生成的PDF无法在浏览器中正确显示

时间:2013-01-16 13:48:09

标签: php firefox pdf fpdf

我正在使用 FPDF 库生成PDF文档。 我试图在浏览器中显示生成的文档( Firefox,Chrome,Opera ),但我得到的只是奇怪的字符:

%PDF-1.3 3 0 obj <>...

这是我的代码。我想在文档中添加两个图像。

$pdf = new FPDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->Image('./image.png',10,10,0,0,'png');
$pdf->Image('./image.png',10,120,0,0,'png');
$pdf->Output('file.pdf','I');

如果我使用'D'选项输出:

$pdf->Output('file.pdf','D');

并将文件保存在光盘上,pdf文件没问题。

7 个答案:

答案 0 :(得分:6)

您可能需要添加正确的内容类型标头。当Web服务器提供文件时,它会尝试从文件中提供正确的内容类型标题,但是在这里,当您使用PHP生成它时,将发送默认标头,通常是text / html。尝试将其添加到代码的开头:

header('Content-type: application/pdf');

它应该使用正确的内容类型标头发送。

答案 1 :(得分:6)

我遇到了同样的问题,我在ob_get_clean();之前添加$pdf->OutPut(),我得到了正确的结果。

这是因为标题不正确,但即使我在输出pdf之前设置标题,它仍然不正确。

答案 2 :(得分:3)

将D改为I

$pdf->Output('file.pdf','I');

将文件内联发送到浏览器。如果可用,则使用插件。当选择&#34;另存为&#34;时,使用名称给出的名称。生成PDF的链接上的选项。

从那里文档 fpdf documentaion

答案 3 :(得分:0)

添加出口,如下所示:

$pdf->Output();
exit;

Reference

答案 4 :(得分:0)

尝试:

ob_start (); //used before output.
$pdf->Output();
?>

答案 5 :(得分:0)

我不知道是否应该将其作为注释或答案,我在本地主机上也遇到了同样的问题,但是一旦我将代码放在实时服务器上,问题就会自动解决。尝试清除本地系统上的所有cookie,这可能也有帮助。

答案 6 :(得分:0)

我以不同的顺序应用了以上所有选项,这才是最终的工作方式。谢谢

$str = iconv('UTF-8', 'windows-1252', $custom_data);
$final = html_entity_decode($str ,ENT_QUOTES, 'windows-1252');
$pdf = new FPDF();
header('Content-type: application/pdf');
$pdf->AddPage();
$pdf->SetFont('Courier','',16);
$pdf->MultiCell(190, '10', $final, '', 'L');
ob_get_clean();
$pdf->Output($afterDash.".pdf", "I");
exit;