Je voudrais détecter PDF corrompu en utilisant PHP. J'ai pu déterminer que sur pdf non corrompu j'ai l'étiquette "%% EOF" à la fin du dossier. J'ai également vérifié pour cette étiquette sur corrompu et il n'apparaît pas.Verifier corrompu PDF en utilisant PHP
J'ai eu l'idée de vérifier automatiquement la validité de mon fichier PDF avant de le télécharger sur mon serveur.
<?php
$file = file('good.pdf');
$endfile= $file[count($file) - 1];
echo gettype($endfile),"\n";
echo $endfile,"\n";
?>
-je obtenir ce résultat
string %%EOF
Pour l'instant, tout semble bien se passer, mais j'ai un problème lorsque l'on compare les résultats.
J'ai testé ce code
<?php
$file = file('good.pdf');
$endfile= $file[count($file) - 1];
$n="%%EOF";
echo $endfile;
echo $n;
if ($endfile === $n) {
echo "good";
} else {
echo "corrupted";
}
?>
Je reçois ce résultat
%%EOF %%EOF corrupted
Je sais que ENDFILE $ et n $ sont str mais quand je veux le comparer, je n'ai jamais l'égalité/match. J'ai aussi essayé avec == mais le résultat est le même.
J'ai aussi essayé comme ça:
<?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";
}
?>
mais j'obtenir ce résultat:
%%EOF %%EOF 1 corrupted
Il m'a donné la même résultat avec ===.
J'ai seulement testé avec un pdf fonctionnant et non corrompu. Savez-vous pourquoi cela ne fonctionne pas? Peut-être que vous avez d'autres méthodes utilisant php pour vérifier si le pdf n'est pas corrompu avant de le télécharger automatiquement sur mon serveur?
Donc vous définissez un PDF pour être valide car il a un marqueur %% EOF ?! C'est assez étrange car un seul fichier texte avec ce contenu serait traité comme un PDF valide pour vous ... Vous devez aller plus loin dans le format de fichier pour vérifier la validité d'un fichier PDF. –
J'ai choisi cette méthode en fonction du pdf que j'ai généré. Quand j'ai analysé tout mon pdf corrompu, le marqueur EOF n'a jamais été atteint. – Rflow