我正在使用 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文件没问题。
答案 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)
答案 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;