确定PDF文件是否可打开且未损坏

时间:2012-04-27 02:18:48

标签: php pdf

如果有人可靠地确定PDF文档是否真的是PDF文档,并且没有损坏,我就会徘徊。

我在我的系统上生成报告,我想确定另一个系统返回的数据包含一个可打开的PDF文档(并且数据没有损坏)。

目前,我基本上看的是字符串长度(PDF存储在变量中,而不是物理文件中)。 任何在PHP中执行此操作的建议都会很棒。

2 个答案:

答案 0 :(得分:3)

如果您只想确保文件是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

答案 1 :(得分:0)

您可以使用pdfinfocentos安装命令:

yum install poppler-utils

...,然后使用pdfinfo命令。 PHP代码如下:

if(!exec("pdfinfo test.pdf")){
  echo "file is corrupted"
}