Die Kunst, beschädigte PDF-Dateien zu reparieren
Ich habe manchmal einen kleinen Schock bekommen, wenn ich eine PDF-Datei öffnen wollte und der Viewer nur eine Fehlermeldung anzeigte. In einigen Fällen kann der Betrachter die Datei speichern und reparieren, oft aber auch nicht. Diese Erfahrung brachte mich dazu, über ein Reparaturwerkzeug nachzudenken.
Es kann verschiedene Gründe dafür geben, dass eine PDF-Datei beschädigt oder unbrauchbar geworden ist. Hier sind die häufigsten:
Systematische Fehler, die durch schlechte Ersteller- oder Verarbeitungssoftware verursacht werden
Unerwünschte Veränderung des PDF-Streams durch Speicher- und Kommunikationssoftware (z.B. sog. ASCII-Modus von Source Safe, FTP, etc.).
Datenverlust oder -beschädigung durch eine unzuverlässige Kommunikationsleitung oder einen Festplattenabsturz
Wenn das Reparaturprogramm die Art der Beschädigung kennt, kann es spezifische Korrekturen vornehmen:
Systematische Fehler: Wenn die Erstellersoftware bekannt ist, kann das Reparaturtool typische Fehler wie fehlende obligatorische Verzeichniseinträge, systematisch falsche Objektstrukturen wie Namen statt Zeichenketten, schlecht formatierte Schriftarten und Ähnliches finden und beheben.
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ücklauf durch die Kombination Wagenrücklauf/Zeilenvorschub unkritisch. Wenn die PDF-Datei im Binärmodus erstellt wurde, können die Stream-Objekte höchstwahrscheinlich nicht wiederhergestellt werden.
Datenverlust oder -beschädigung: In diesem Fall kann die Datei nicht repariert werden. Die noch gültigen Informationen wie gescannte Seiten usw. können wiederhergestellt und in eine neue Ausgabedatei eingefügt werden.
Ein Reparaturwerkzeug geht in der Regel in zwei Schritten vor:
Analyse: Prüfung des Dateikopfes und -anhängers, der Querverweistabelle, der einzelnen Objekte, des Stammobjekts, des Seitenbaums und der zugehörigen Datenstrukturen
Wenn die Analyse ergibt, dass das Stammobjekt gefunden werden kann und der Seitenbaum intakt ist, kann die Datei repariert werden. Wenn nicht, muss es so viel wie möglich aus der Datei wiederherstellen und eine neue Datei erstellen.
Einer der am häufigsten festgestellten Schäden ist eine ungültige Querverweistabelle. Im Allgemeinen ist dies nicht kritisch, und das Tool kann es wiederherstellen, indem es die Datei durchsucht und sie aus dem gefundenen Objekt wiederherstellt. Wenn es redundante Objekte gibt, wird das neueste verwendet.
Die Reparatur der PDF-Objektstruktur ist recht einfach. Einige dieser Fehler sind unkritisch, wie z. B. ein fehlender /Type /Page-Eintrag in einem Seitenknoten. Das Tool kann den fehlenden Eintrag einfach hinzufügen. Ein fehlender /BBox [...]-Eintrag in einer XObject ist fatal und das Tool muss entweder versuchen, es aus den darin enthaltenen Grafiken wiederherzustellen oder das Objekt sogar entfernen.
Komprimierte Datenströme, wie z. B. eingebettete Schriftarten, ICC-Farbprofile, Bilddaten usw., lassen sich nur schwer wiederherstellen, wenn sie beschädigt wurden. Einige Kompressionsalgorithmen sind robuster als andere. Manchmal kann ein Datenstrom, wie z. B. Bilddaten, teilweise wiederhergestellt werden. Das Werkzeug kann dann die fehlenden Teile durch weiße Farbpixel ersetzen.
Schlecht formatierte Schriftprogramme kommen sehr häufig vor. In den meisten Fällen können sie neu formatiert und repariert werden. Ist dies nicht der Fall, müssen sie aus der Originalschriftart neu eingebettet werden. Wenn die Schriftart nicht verfügbar ist, muss sie entweder durch eine ähnliche Schriftart ersetzt oder einfach entfernt werden.
Die oben genannten Fälle sind nur eine kurze Liste von Beispielen, aber natürlich kann ein vollwertiger Reparaturdienst noch viel mehr tun.