我正在尝试实现一个功能,它应该能够检测pdf文件及其内容是否有效。使用以下脚本,我可以轻松地检测文件是否为pdf:
$info = pathinfo("test.pdf");
if ($info["extension"] == "pdf"){
echo "PDF file";
}
现在我想要检查一个文件是否是pdf格式,如果是,则该文件的内容应该是有效的。
请告诉我如何检查pdf文件的内容是否有效,而不是损坏或无效格式。
我正在尝试实现一个功能,它应该能够检测pdf文件及其内容是否有效。使用以下脚本,我可以轻松地检测文件是否为pdf:
$info = pathinfo("test.pdf");
if ($info["extension"] == "pdf"){
echo "PDF file";
}
现在我想要检查一个文件是否是pdf格式,如果是,则该文件的内容应该是有效的。
请告诉我如何检查pdf文件的内容是否有效,而不是损坏或无效格式。
PDF文件的内容以%PDF-版本号为开头,因此首先要使用以下脚本获取PDF文件的内容:
$filecontent = file_get_contents("test.pdf");
然后使用以下正则表达式检查$filecontent变量,以检测它是有效格式还是无效格式:
if (preg_match("/^%PDF-1.5/", $filecontent)) {
echo "Valid pdf";
} else {
echo "In Valid pdf";
}
注意: Pdf版本可能不同,如1.0、1.5、1.7等...在我的情况下,它是1.5,还请确保您将上述代码放置在scripts/conditions(如果文件具有.pdf扩展名)中。
preg_match("/^%PDF-/", $filecontent)
- Jeff Luyetif
语句中使用返回语句,则可以删除else
情况。 - Bramtry {
$pdf = new \setasign\Fpdi\Tcpdf\Fpdi();
$pdf->AddPage();
$pdf->setSourceFile($filepath);
$pdf->_destroy();
return true;
} catch (\Exception $e) {
debug('Pdf validation failed. error: ' . $e->getMessage());
return false;
}
'ContentType' => 'application/octet-stream'