使用php如何检查pdf文件内容是有效还是无效

php*_*per 4 php regex pdf validation

我正在尝试实现一个功能,应该是检测 pdf 文件,它的内容是有效的还是无效的。使用以下脚本,我可以轻松检测文件是否为 pdf:

  $info = pathinfo("test.pdf");
  if ($info["extension"] == "pdf"){
  echo "PDF file";
  }
Run Code Online (Sandbox Code Playgroud)

现在我想检查文件扩展名 pdf 那么 pdf 文件的内容是否应该有效。

请告诉我如何检查 pdf 文件内容是否有效,未损坏或格式无效。

小智 10

pdf 文件的内容以%PDF -version no开头,因此首先使用以下脚本获取 pdf 文件的内容:

$filecontent = file_get_contents("test.pdf");
Run Code Online (Sandbox Code Playgroud)

之后使用以下正则表达式检查$filecontent变量以检测它的有效或无效格式:

if (preg_match("/^%PDF-1.5/", $filecontent)) {
    echo "Valid pdf";
} else {
    echo "In Valid pdf";
}
Run Code Online (Sandbox Code Playgroud)

注意: Pdf 版本可能不同,例如 1.0 、 1.5 、 1.7 等...在我的情况下它是 1.5 还要确保您已将上面的代码放在脚本/条件中(如果文件具有.pdf扩展名)。

  • 这仅仅是一个合理性检查,魔术字节风格。例如,如果您向其提供 Word 文档,它会识别,但不会检查 pdf 是否有效。不过,这似乎对于操作来说已经足够了。 (2认同)
  • 我省略了版本,因此 PDF 版本可以是任意数字。`preg_match("/^%PDF-/", $filecontent)` (2认同)
  • 我建议您还检查内容是否与“%%EOF\v*$”匹配,这样,您确定您没有得到半个PDF文件(下载中断,或者什么) (2认同)