如果有人有可靠的方法来确定 PDF 文档是否实际上是 PDF 文档并且它没有损坏,我正在徘徊。
我在我的系统上生成报告,我想确定另一个系统返回的数据包含可打开的 PDF 文档(并且数据没有损坏)。
目前,我基本上是在查看字符串长度(PDF 被存储到一个变量中,而不是一个物理文件中)。在 PHP 中执行此操作的任何建议都会很棒。
如果您只是想确保文件是 PDF 文件,而不检查它是否是完整的 pdf 文件,您可以读取文件的前 5 个字节,对于 PDF 文件,它们将完全等于字符串“%PDF-”
这就是file
linux中的程序识别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"
}