Gibt es ein Tool, das ich in den PDF-Archiven (allen Verzeichnissen) ausführen kann und das schließlich die beschädigten / ungültigen PDFs auflistet / identifiziert?
Ich habe Hunderte von PDF-Dateien (in Bezug auf Dokumentation usw.) auf meinem Computer (Windows-Computer) und erhalte / muss sehr oft Dutzende von PDFs per E-Mail senden. Es ist jetzt eine normale Routine, dass das PDF, das ich empfange oder sende, beschädigt ist. Dies führt manchmal zu ernsthaften Problemen, wenn die Quelldatei (z. B. die Word-Datei oder die Tex-Datei fehlt / nicht sofort verfügbar ist).
Das Überprüfen dieser Tausenden von PDFs ist nicht in begrenzter Zeit möglich. Deshalb habe ich nach einem Tool gesucht, das ich einmal ausführen kann. Es durchsucht alle PDFs (in Verzeichnissen und Unterverzeichnissen) und erhält schließlich eine Liste der Dateien, die ich erneut verwenden sollte -erstellen. Bis jetzt scheint es kein solches Werkzeug zu geben.
quelle
Antworten:
Mit PDFtk können Sie ganz einfach überprüfen, ob eine PDF-Datei gültig ist. Eine kostenlose GUI für PDFtk ist bei PDF Labs erhältlich . Wenn Sie dieses Tool ausführen, können Sie beliebig viele PDF-Dateien aus mehreren Verzeichnissen laden (über die Schaltfläche Dateien hinzufügen). Anschließend wird sehr schnell auf die Seiten in diesen PDF-Dateien zugegriffen.
Wenn eine Datei unter den ausgewählten PDF-Dateien keine gültige PDF-Datei ist, zeigt dieses Dienstprogramm eine Meldung zu dem Fehler an und entfernt sie automatisch aus dem Auswahlfenster.
Daher können Sie mit diesem Verfahren mit PDFtk viele Stunden sparen. Wenn Sie über eine Multicore-CPU verfügen, können Sie außerdem mehrere Instanzen dieses Dienstprogramms ausführen und in jeder Instanz Hunderte von PDF-Dateien einfügen.
Ich benutze diese Software seit 1 Jahr und sie ist das praktischste PDF-Tool, das ich je verwendet habe.
quelle
cd
inFolderContainingPDFs
und folgenden Befehl in Windows - Shell ausgeführt werden , und es wird die ungültige PDF - Datei in einer Log - Datei markieren:FORFILES /S /M *.pdf /C "cmd /c echo. & echo @path @fname & D:\XPDF_3.04\bin64\pdfinfo.exe @file" 1>text.txt 2>&1
Ich habe "pdfinfo.exe" aus dem xpdfbin-win-Paket und cpdf.exe verwendet, um PDF-Dateien auf Beschädigungen zu überprüfen, wollte aber keine Binärdatei einbinden, wenn dies nicht erforderlich war.
Ich habe gelesen, dass neuere PDF-Formate am Ende einen lesbaren XML-Datenkatalog haben. Deshalb habe ich die PDF-Datei mit dem regulären Windows NOTEPAD.exe geöffnet und bis zum Ende an den unlesbaren Daten vorbei gescrollt und mehrere lesbare Schlüssel gesehen. Ich brauchte nur einen Schlüssel, entschied mich jedoch für CreationDate und ModDate.
Das folgende Powershell (PS) -Skript überprüft ALLE PDF-Dateien im aktuellen Verzeichnis und gibt den Status der einzelnen Dateien in eine Textdatei (! RESULTS.log) aus. Es dauerte ungefähr 2 Minuten, um dies für 35.000 PDF-Dateien auszuführen. Ich habe versucht, Kommentare für diejenigen hinzuzufügen, die neu bei PS sind. Hoffe das spart jemandem etwas Zeit. Es gibt wahrscheinlich einen besseren Weg, dies zu tun, aber dies funktioniert für meine Zwecke einwandfrei und behandelt Fehler stillschweigend. Möglicherweise müssen Sie am Anfang Folgendes definieren: $ ErrorActionPreference = "SilentlyContinue", wenn auf dem Bildschirm Fehler angezeigt werden.
Kopieren Sie Folgendes in eine Textdatei und benennen Sie es entsprechend (z. B. CheckPDF.ps1) oder öffnen Sie PS und navigieren Sie zu dem Verzeichnis mit den PDF-Dateien, um es zu überprüfen und in die Konsole einzufügen.
quelle
Auf den Spuren von @ n0nuf habe ich ein Batch-Skript geschrieben, um alle PDFs in einem bestimmten Ordner mit pdfinfo zu überprüfen und es durch cpdf zu verschieben, wenn es beschädigt ist, um sie zu beheben:
Oder das gleiche wie Bash-Skript:
Defekte PDFs werden in einen Unterordner \ bak verschoben und die neu erstellten PDFs erhalten das Suffix _.pdf (was nicht perfekt ist, aber für mich gut genug). HINWEIS: Eine neu erstellte PDF-Datei enthält weniger Fehler und sollte mit einem normalen PDF-Viewer angezeigt werden können. Dies bedeutet jedoch nicht, dass Sie alle Ihre Inhalte zurückerhalten. Nicht wiederherstellbarer Inhalt führt zu leeren Seiten.
Ich habe dasselbe auch mit JHOVE (Open Source-Format zur Identifizierung, Validierung und Charakterisierung von Dateiformaten) versucht, wie von @kraftydevil hier vorgeschlagen: Überprüfen Sie, ob PDF-Dateien mithilfe der Befehlszeile unter Linux beschädigt sind, und können Sie jetzt bestätigen, dass dies auch ein gültiger Ansatz ist. (Zuerst hatte ich weniger Erfolg. Aber dann bemerkte ich, dass ich die Ausgabe von JHOVE nicht richtig gehandhabt hatte.)
Um beide Ansätze zu testen, habe ich zufällige Teile aus einem PDF mit einem Texteditor gelöscht und geändert (Streams wurden entfernt, sodass Seiten in meinem PDF-Viewer nicht gerendert werden konnten, PDF-Tags geändert und einige Bits verschoben). Das Ergebnis ist: Sowohl pdfinfo als auch JHOVE können beschädigte Dateien korrekt erkennen (JHOVE war in einigen Fällen sogar noch empfindlicher).
Und hier ist das entsprechende Skript für JHOVE:
quelle