0

如果有人有可靠的方法来确定 PDF 文档是否实际上是 PDF 文档并且它没有损坏,我正在徘徊。

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

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

4

2 回答 2

3

如果您只是想确保文件是 PDF 文件,而不检查它是否是完整的 pdf 文件,您可以读取文件的前 5 个字节,对于 PDF 文件,它们将完全等于字符串“%PDF-”

这就是filelinux中的程序识别PDF文件的方式。

但是,如果您想绝对确保文件中的任何地方都没有错误,您可以运行一个处理整个文件的程序,并查看该程序是否返回成功。

在 linux 中,您可以使用 ghostscript ("gs") 将 PDF 文档呈现为任何格式。

或者您可以安装 acrobat reader,并acroread作为命令行程序运行以将其转换为 postscript:

acroread -print -toPostScript [your_file.pdf]

要执行其中任何一项,您都需要使用systemPHP 函数。要检查程序是否成功运行,您需要在第二个参数中传递一个变量以system接收返回状态。

于 2012-04-27T02:34:07.240 回答
1

可以使用pdfinfocentos安装命令:

yum install poppler-utils

...并使用pdfinfo命令。PHP代码如下:

if(!exec("pdfinfo test.pdf")){
  echo "file is corrupted"
}
于 2020-01-14T06:47:23.647 回答