Existe-t-il un outil que je peux exécuter sur les archives PDF (tous les répertoires) et enfin il répertorie / identifie les PDF corrompus / invalides?
J'ai des centaines de fichiers PDF (liés à la documentation, etc.) sur mon ordinateur (machine Windows), et très souvent je reçois / dois envoyer des dizaines de PDF par e-mail. C'est maintenant une routine normale que le PDF que je reçois ou envoie est corrompu. Cela crée parfois de graves problèmes lorsque le fichier source (par exemple, le fichier Word ou le fichier Tex est manquant / n'est pas disponible instantanément).
La vérification de ces milliers de PDF n'est pas possible en temps fini, j'ai donc cherché un outil que je peux exécuter une fois et il scanne tous les PDF (dans les répertoires et sous-répertoires), et enfin j'obtiens une liste de ces fichiers que je devrais re -créer. Jusqu'à présent, il semble qu'il n'y ait pas un tel outil.
la source
Réponses:
Il est assez facile de vérifier si un fichier PDF est valide, en utilisant PDFtk. Une interface graphique gratuite pour PDFtk est disponible auprès de PDF Labs . Lorsque vous exécutez cet outil, vous pouvez charger autant de fichiers PDF que vous le souhaitez, à partir de plusieurs répertoires (en utilisant le bouton Ajouter des fichiers), puis il commencera à accéder aux pages de ces fichiers PDF, très rapidement.
Si un fichier parmi les PDF sélectionnés n'est pas un PDF valide, cet utilitaire affichera un message sur l'erreur et le supprimera automatiquement de la fenêtre de sélection.
Par conséquent, vous pouvez économiser de nombreuses heures en utilisant cette procédure avec PDFtk. De plus, si vous disposez d'un processeur multicœur, vous pouvez exécuter plusieurs instances de cet utilitaire et ajouter des centaines de PDF dans chaque instance.
J'utilise ce logiciel depuis 1 an et c'est l'outil PDF le plus pratique que j'aie jamais utilisé.
la source
cd
dansFolderContainingPDFs
et exécuter la commande suivante dans le shell Windows, et il marquera le fichier PDF non valide dans un fichier journal:FORFILES /S /M *.pdf /C "cmd /c echo. & echo @path @fname & D:\XPDF_3.04\bin64\pdfinfo.exe @file" 1>text.txt 2>&1
J'ai utilisé "pdfinfo.exe" du package xpdfbin-win et cpdf.exe pour vérifier la corruption des fichiers PDF, mais je ne voulais pas impliquer un binaire s'il n'était pas nécessaire.
J'ai lu que les nouveaux formats PDF ont un catalogue de données xml lisible à la fin, j'ai donc ouvert le PDF avec les fenêtres normales NOTEPAD.exe et j'ai fait défiler les données illisibles jusqu'à la fin et j'ai vu plusieurs clés lisibles. Je n'avais besoin que d'une clé, mais j'ai choisi d'utiliser à la fois CreationDate et ModDate.
Le script Powershell (PS) suivant vérifiera TOUS les fichiers PDF dans le répertoire actuel et affichera l'état de chacun dans un fichier texte (! RESULTS.log). Il a fallu environ 2 minutes pour exécuter cela contre 35 000 fichiers PDF. J'ai essayé d'ajouter des commentaires pour ceux qui sont nouveaux sur PS. J'espère que cela fait gagner du temps à quelqu'un. Il y a probablement une meilleure façon de le faire, mais cela fonctionne parfaitement pour mes besoins et gère les erreurs en silence. Vous devrez peut-être définir les éléments suivants au début: $ ErrorActionPreference = "SilentlyContinue" si vous voyez des erreurs à l'écran.
Copiez ce qui suit dans un fichier texte et nommez-le de manière appropriée (ex: CheckPDF.ps1) ou ouvrez PS et accédez au répertoire contenant les fichiers PDF pour le vérifier et le coller dans la console.
la source
En suivant les traces de @ n0nuf, j'ai écrit un script batch pour vérifier tous les PDF dans un dossier spécifique avec pdfinfo et le pousser à travers cpdf s'il est cassé pour tenter de les réparer:
Ou le même que le script bash:
Les PDF cassés seront déplacés vers un sous-dossier \ bak et les PDF recréés obtiendront le suffixe _.pdf (ce qui n'est pas parfait, mais assez bon pour moi). REMARQUE: un PDF recréé contient moins d'erreurs et doit être visible avec une visionneuse PDF standard. Mais cela ne signifie pas que vous récupérez tout votre contenu. Le contenu non récupérable conduit à des pages vides.
J'ai également essayé la même chose avec JHOVE (outil d'identification, de validation et de caractérisation de format de fichier open source) comme suggéré par @kraftydevil ici: Vérifiez si les fichiers PDF sont corrompus en utilisant la ligne de commande sous Linux et pouvez maintenant confirmer que c'est également une approche valide. (D'abord, j'ai eu moins de succès. Mais ensuite j'ai remarqué que je n'avais pas géré correctement la sortie de JHOVE.)
Pour tester les deux approches, j'ai supprimé et modifié des parties aléatoires d'un PDF avec un éditeur de texte (les flux ont été supprimés, les pages n'ont donc pas pu être affichées dans ma visionneuse PDF, les balises PDF modifiées et certains bits décalés). Le résultat est: pdfinfo et JHOVE sont capables de repérer correctement les fichiers endommagés (JHOVE était encore plus sensible dans certains cas).
Et voici le script équivalent pour JHOVE:
la source