FPDF返回文本而不是PDF文件

时间:2012-01-27 10:31:54

标签: php pdf fpdf

我使用FPDF从PHP生成一些PDF。它适用于小例子,但现在我遇到了问题:它返回了一些我在控制台中看到但没有文件的数据!

输出看起来喜欢 - 这不是PDF吗?

%PDF-1.4
 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/Group <</Type /Group /S /Transparency /CS /DeviceRGB>>
......
<<
/Size 15
/Root 14 0 R
/Info 13 0 R
>>
startxref
22291
%%EOF

而且我的php很长,这是一个它的标签http://pastebin.com/ri5uAeie

我的php看起来很正确,真的很奇怪吗?

更新

我通过我的参数抛出URL并使用$ _GET并且效果很好:)感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

你可能在某处添加了一个空白行,可能是inc/DataLib.php

更新#1:

根据你的回答,有两个可疑点:

  1. Content-Type应为application/pdf。从理论上讲,PDF::Output()方法会为您添加(除非php_sapi_name()返回cli,这在网络环境中是不可能的。)

  2. 在桌面PDF阅读器中获取空白页(而不是错误)表明文档损坏的方式是读者甚至无法检测到它......或者文档实际上是空白的。

  3. 不知道#1(防火墙?代理?防病毒?)但您至少可以检查PDF源代码以查找PHP错误消息或不属于那里的内容。

    更新#2:

    我想我终于明白了你的问题所在。您无法使用JavaScript通过AJAX检索PDF文件。所有JavaScript都可以:

    1. 操纵页面的DOM(而PDF不是HTML)。
    2. 用其他东西替换完整的DOM页面(并且没有办法告诉浏览器它是什么内容类型)。
    3. 如果你直接从位置栏调用它,我怀疑你的PDF生成器就好了。

答案 1 :(得分:0)

这就是如何在没有参数的情况下调用FPDF::Output()。它只是设置适当的标题并将PDF作为文本发送到浏览器。如果要下载文件,则需要提供Output()文件名并将第二个参数设置为'D'