【问题标题】:FPDF return me text instead of PDF FileFPDF 返回文本而不是 PDF 文件
【发布时间】:2012-01-27 21:29:06
【问题描述】:

我使用 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 很长,这里是它的一个 pastebin http://pastebin.com/ri5uAeie

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

更新

我通过我的参数抛出 URL 和 $_GET 并且它运作良好 :) 感谢你们的帮助!

【问题讨论】:

    标签: php pdf fpdf


    【解决方案1】:

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

    更新 #1:

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

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

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

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

    更新 #2:

    我想我终于明白你的问题是什么了。您不能使用 JavaScript 通过 AJAX 检索 PDF 文件。 JavaScript 能做的只有:

    1. 操作页面的 DOM(并且 PDF 不是 HTML)。
    2. 用其他东西替换整个 DOM 页面(并且无法告诉浏览器它是什么内容类型)。

    如果您直接从地址栏调用它,我怀疑您的 PDF 生成器就可以了。

    【讨论】:

    • 不,空行返回错误。我这里没有错误 :) 顺便说一句,谢谢!
    • 好吧.... 基本问题是: 1) 生成的Content-Type header() 是什么? 2) 您的浏览器中是否有工作的 PDF 插件? 3) 如果您将文件保存到磁盘并使用 PDF 阅读器手动打开,文件是否会呈现?
    • 1) contentType: 'application/x-www-form-urlencoded' - 在 Jquery POST 中 2) 是的,我使用 Chromium。我几天前制作了 FPDF... 3)我可以打开它,但它是空白的我也尝试在另一个选项卡中打开我的 php,但这并没有更好..
    • 好吧,如果我将内容类型设置为 application/pdf,那么 POST 将不再起作用...我使用 Jquery 将数据从 JS 发布到 PHP ...pastebin.com/V6Ar2JMB 我会检查 PHP 错误...
    • 随时更新问题并在此处添加详细信息。 cmets 中的代码不可读。不管怎样,我建议你一个一个解决问题。在尝试 AJAX 之前,请确保您可以正确生成 PDF。
    【解决方案2】:

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

    【讨论】:

    • 好吧,我已经尝试使用 $pdf->Output('test.pdf','D');但它是相同的输出......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多