如果有人可靠地确定PDF文档是否真的是PDF文档,并且没有损坏,我就会徘徊。
我在我的系统上生成报告,我想确定另一个系统返回的数据包含一个可打开的PDF文档(并且数据没有损坏)。
目前,我基本上看的是字符串长度(PDF存储在变量中,而不是物理文件中)。 任何在PHP中执行此操作的建议都会很棒。
答案 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)
您可以使用pdfinfo
,centos
安装命令:
yum install poppler-utils
...,然后使用pdfinfo
命令。 PHP代码如下:
if(!exec("pdfinfo test.pdf")){
echo "file is corrupted"
}