Die Kunst, beschädigte PDF-Dateien zu reparieren
Manchmal hatte ich einen kleinen Schock, als ich eine PDF-Datei öffnen wollte und der Viewer nur eine Fehlermeldung anzeigte. In einigen Fällen kann der Viewer jedoch die Datei speichern und reparieren, aber oft nicht. Diese Erfahrung hat mich dazu gebracht, über ein Reparaturwerkzeug nachzudenken.
Es kann verschiedene Gründe geben, warum eine PDF-Datei beschädigt oder defekt ist. Hier sind die häufigsten:
Systematische Fehler, die durch schlechte Erstellungs- oder Verarbeitungssoftware verursacht werden
Unerwünschte Änderungen des PDF-Streams, die durch Speicher- und Kommunikationssoftware verursacht werden (z. B. der sogenannte ASCII-Modus von Source Safe, FTP usw.).
Datenverlust oder -beschädigung durch eine unzuverlässige Kommunikationsleitung oder einen Festplattencrash
Wenn das Reparaturwerkzeug über die Art der Beschädigung informiert ist, kann es spezifische Korrekturen durchführen:
Systematische Fehler: Wenn die Erstellungssoftware bekannt ist, kann das Reparaturwerkzeug typische Fehler finden und beheben, wie z. B. fehlende erforderliche Verzeichniseinträge, systematisch falsche Objektstrukturen wie Namen anstelle von Zeichenfolgen, schlecht formatierte Schriftarten usw.
Unerwünschte Änderung: Eine PDF-Datei kann im ASCII-Modus erstellt werden. Wenn dies der Fall ist, sind Änderungen wie das Einfügen von Zeilenumbrüchen oder das Ersetzen von Wagenrückläufen durch die Kombination Wagenrücklauf/Zeilenumbruch nicht kritisch. Wenn die PDF-Datei im Binärmodus erstellt wird, können die Stream-Objekte höchstwahrscheinlich nicht wiederhergestellt werden.
Datenverlust oder -beschädigung: In diesem Fall kann die Datei nicht repariert werden, und die Informationen, die noch gültig sind, wie gescannte Seiten usw., können wiederhergestellt und in eine neue Ausgabedatei eingefügt werden.
Ein Reparaturwerkzeug verläuft normalerweise in zwei Schritten:
Analyse: Überprüfen des Dateikopfs und -endes, Überprüfen der Querverweis Tabelle, Überprüfen der einzelnen Objekte, Überprüfen des Stammobjekts, des Seitenbaums und der zugehörigen Datenstrukturen
Wenn die Analyse zeigt, dass das Stammobjekt gefunden werden kann und der Seitenbaum intakt ist, kann die Datei repariert werden. Andernfalls muss es so viel wie möglich aus der Datei wiederherstellen und eine neue erstellen.
Eine der am häufigsten gefundenen Schäden ist eine ungültige Querverweistabelle. Im Allgemeinen ist dies nicht kritisch, und das Tool kann es durch Scannen der Datei wiederherstellen und aus dem gefundenen Objekt neu erstellen. Wenn es redundante Objekte gibt, wird das neueste verwendet.
Die Reparatur der PDF-Objektstruktur ist ziemlich einfach. Einige dieser Fehler sind nicht kritisch, wie ein fehlender /Type /Page-Eintrag in einem Seitenknoten. Das Tool kann einfach den fehlenden Eintrag hinzufügen. Allerdings ist ein fehlender /BBox [...] Eintrag in einem XObjekt ist fatal und das Tool muss entweder versuchen, es aus den darin enthaltenen Grafiken wiederherzustellen oder sogar das Objekt entfernen.
Komprimierte Streams, wie eingebettete Schriftarten, ICC-Farbprofile, Bilddaten usw. sind schwer wiederherzustellen, wenn sie beschädigt wurden. Einige Komprimierungsalgorithmen sind robuster als andere. Manchmal kann ein Stream, wie Bilddaten, teilweise wiederhergestellt werden. Das Tool kann dann die fehlenden Teile durch weiße Farbpixel ersetzen.
Schlecht formatierte Schriftartenprogramme treten sehr häufig auf. In den meisten Fällen können sie neu formatiert und repariert werden. Wenn nicht, müssen sie aus der Originalschrift neu eingebettet werden. Wenn die Schriftart nicht verfügbar ist, muss sie entweder durch eine ähnliche ersetzt oder einfach entfernt werden.
Die oben genannten Fälle sind nur eine kurze Liste von Beispielen, aber natürlich kann eine voll funktionsfähige Reparatur viel mehr leisten.