Я хотел бы обнаружить поврежденный PDF с помощью PHP. Я смог определить, что на не поврежденном pdf у меня есть тег «%% EOF» в конце файла. Я также проверил, что этот тег поврежден, и он не отображается.Verifiy поврежден PDF с использованием PHP
У меня возникла идея автоматически проверить действительность моего 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 и $ п являются ул но, когда я хочу сравнить его, я никогда не получаю равенства/соответствия. Я также пытался с ==, но результат тот же.
Я также пробовал так:
<?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