【问题标题】:pdf errors with php, apache2php,apache2的pdf错误
【发布时间】:2010-06-16 15:59:50
【问题描述】:

我看到一些使用 PHP 中的 TCPDF 库动态生成的 PDF 的一些奇怪行为。

标准灯堆栈--但是,如果您尝试使用 Acrobat Reader 从 Windows 打开 PDF,则会出现“文件已损坏且无法修复”的错误。在 Mac、Linux 等中,该文件可以正常工作,并且可以正常打开。它在 Google Docs 中也可以正常打开——很明显 PDF 本身是可以的。

mime 类型(应用程序/pdf)是否可能导致 Windows 出现问题?

谢谢

【问题讨论】:

  • 我认为你有零证据表明 PDF 是“好的”。如果有的话,您刚刚证明了 Google Docs 比 Acrobat Reader 更强大。
  • 你能把它缩小到浏览器问题吗?例如,在 Firefox/Windows 上会出现与 IE/Windows 相同的错误吗?另外,您是否尝试在 Mac 和 Linux 上安装 Acrobat Reader 以查看它们是否能够正常打开?
  • Dolph,PDF 在 Google Docs、Mac OS-X“预览版”和 Linux(我认为是 xpdf)中打开。当相同的代码托管在其他服务器上时,Windows 也可以打开 pdf - 所以我不得不认为这是特定于该服务器配置的东西。 Webbiedave——我相信它发生在 Windows 上的所有浏览器上,当默认应用程序是 Acrobat 时。不过,我将对此进行更多测试以确认。
  • 这听起来更像是一个可信的趋势。

标签: php apache2 pdf-generation lamp mime-types


【解决方案1】:

Windows 上有什么浏览器?全部?还是只有一个?我最初的直觉是,如果内容被压缩,Windows 浏览器会忽略编码(忽略 Content-Encoding 标头)。那是如果你甚至发送那个标头。

在一些文本编辑器(记事本等)中打开您下载的文件。文件的前几个字符应该是%PDF-1.,后面是另一个数字。如果不是开头,请检查文件是否被 gzip 压缩(将文件重命名为 blah.gz,然后通过 gzip 运行以尝试解码)。如果可行,那么您的问题是浏览器忽略了编码。

如果它忽略了编码,则不需要 gzip 该 PHP 文件的输出。具体操作方式取决于您的服务器配置。

哦,application/pdf 是正确的 mime 类型。而且 MIME 类型不是您的问题,因为 Acrobat 至少会尝试打开文件...

【讨论】:

  • 谢谢 ircmaxwell——第一行是 %PDF-1.5 有区别吗?
  • 嗯,这意味着它不是编码错误。这是一个有效的标题。您是否尝试向 TCPDF 询问该问题(将其报告为错误,或查看他们的网站)?
  • 不,因为我当时假设这是服务器问题,因为某些服务器提供相同的 PDF,对相同的 Win/Acrobat 系统没有问题。
  • 好吧,首先尝试查看服务器之间的差异(PHP 版本、已安装的扩展等)。检查错误服务器上的错误日志,看看是否可能引发了可能导致它的错误...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-16
  • 1970-01-01
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多