【发布时间】:2012-05-07 19:23:34
【问题描述】:
如果有人有可靠的方法来确定 PDF 文档是否真的是 PDF 文档并且它没有损坏,我正在徘徊。
我在我的系统上生成报告,我想确定另一个系统返回的数据包含可打开的 PDF 文档(并且数据没有损坏)。
目前,我基本上是在查看字符串长度(PDF 被存储到变量中,而不是物理文件中)。 在 PHP 中执行此操作的任何建议都会很棒。
【问题讨论】:
如果有人有可靠的方法来确定 PDF 文档是否真的是 PDF 文档并且它没有损坏,我正在徘徊。
我在我的系统上生成报告,我想确定另一个系统返回的数据包含可打开的 PDF 文档(并且数据没有损坏)。
目前,我基本上是在查看字符串长度(PDF 被存储到变量中,而不是物理文件中)。 在 PHP 中执行此操作的任何建议都会很棒。
【问题讨论】:
如果您只是想确保文件是 PDF 文件,而不检查它是否是完全完整的 pdf 文件,您可以读取文件的前 5 个字节,对于 PDF 文件,它们将是等于字符串“%PDF-”
这就是 linux 中的file 程序识别 PDF 文件的方式。
但如果你想绝对确定文件中的任何地方都没有错误,你可以运行一个处理整个文件的程序,看看该程序是否返回成功。
在 linux 中,您可以使用 ghostscript ("gs") 将 PDF 文档呈现为任何格式。
或者你也可以安装acrobat reader,将acroread作为命令行程序运行,将其转换为postscript:
acroread -print -toPostScript [your_file.pdf]
要执行上述任一操作,您需要使用system PHP 函数。要检查程序是否成功运行,您需要将第二个参数中的变量传递给将接收返回状态的system。
【讨论】:
可以使用pdfinfo、centos安装命令:
yum install poppler-utils
... 并使用pdfinfo 命令。 PHP代码如下:
if(!exec("pdfinfo test.pdf")){
echo "file is corrupted"
}
【讨论】: