2013-01-16 80 views
2

我正在生成PDF文档,其中包含FPDF库。 我想以显示浏览器生成的文档(火狐,Chrome,歌剧)开始,但我得到的是奇怪的字符:FPDF生成的PDF在浏览器中显示不正确

%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

接受您的问题的答案! –

+0

要接受问题,我需要至少声望15 – gniewleone

+0

不接受upvote,接受!点击正确答案旁边的勾号! –

回答

5

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

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

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

+0

FPDF输出功能已经设置如下标题: 'header('Content-Type:application/pdf'); header('Content-Disposition:inline; filename =''。$ name。'''); header('Cache-Control:private,max-age = 0,must-revalidate'); header('Pragma:public');' – gniewleone

+0

您是否看过检查器中的返回头文件(Firefox和Chrome内置了工具来执行此操作),因为这可能是默认情况下不会输出这些头文件?它总是有助于检查,以确保您期望的标题实际上在那里。 –

3

变化d到我

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

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

从那里文档 fpdf documentaion

+0

这为我工作,并解决了我花了几天的时间来解决问题。非常感谢!! :-) – user3931836

5

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

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

+0

这对我有帮助 - 它可以消除代码可能输出的任何杂散标题或其他内容,并让FPDF继续为PDF提供服务。 – caponica

相关问题