3

我正在使用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文档就可以了。

4

7 回答 7

8

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

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

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

于 2013-01-16T13:57:05.900 回答
7

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

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

于 2016-09-02T06:40:23.580 回答
3

将 D 更改为 I

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

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

从那里文档 fpdf 文档

于 2014-05-18T23:44:35.447 回答
0

添加退出如下:

$pdf->Output();
exit;

参考

于 2018-10-23T06:53:51.800 回答
0

尝试:

ob_start (); //used before output.
$pdf->Output();
?>
于 2019-07-14T12:10:26.990 回答
0

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

于 2020-08-18T09:51:37.647 回答
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;
于 2020-11-19T08:45:58.663 回答