我想使用PHP检测已损坏的PDF。我已经能够确定没有损坏的PDF文件末尾有标签“%% EOF”。我也检查了这个标签损坏,并没有出现。使用PHP验证已损坏的PDF
我的想法是在上载到我的服务器之前自动检查我的PDF文件的有效性。
<?php
$file = file('good.pdf');
$endfile= $file[count($file) - 1];
echo gettype($endfile),"\n";
echo $endfile,"\n";
?>
我得到这样的结果
string %%EOF
现在,一切似乎都很正常,但比较结果时,我有一个问题。
我测试此代码
<?php
$file = file('good.pdf');
$endfile= $file[count($file) - 1];
$n="%%EOF";
echo $endfile;
echo $n;
if ($endfile === $n) {
echo "good";
} else {
echo "corrupted";
}
?>
我得到这样的结果
%%EOF %%EOF corrupted
我知道$ ENDFILE和$ n为海峡但当我想比较它,我永远不会得到相等/匹配。我也试过==但结果是一样的。
我也尝试过这样的:
<?php
$file = file('good.pdf');
$endfile= $file[count($file) - 1];
$var1val = $endfile;
$var2val = "%%EOF";
echo $var2val;
echo $var1val;
$n = strcmp($var1val,$var2val); // 0 mean that they are the same
echo $n;
if ($n == 0) {
echo "good";
} else {
echo "corrupted";
}
?>
,但我得到这样的结果:
%%EOF %%EOF 1 corrupted
它给了我同样结果与===。
我只测试一个工作,而不是损坏的PDF。你知道为什么这不起作用吗?也许你有其他方法使用PHP来检查PDF是否没有损坏,然后我自动将其上传到我的服务器?
所以你定义的PDF是有效的,因为它有%% EOF标记?!这有点奇怪,因为具有此内容的单个文本文件将被视为您的有效PDF ...您必须更深入地检查文件格式才能检查PDF文件的有效性。 –
我选择这种方法取决于我生成的pdf。当我分析了所有损坏的pdf时,EOF标记从未到达。 – Rflow