Jetzt reparieren
- Datei ablegen
- Reparatur läuft lokal
- Ergebnis herunterladen
Wenn Acrobat oder Reader "There was an error opening this document. The file is damaged and could not be repaired," anzeigt, ist das keine allgemeine Beschwerde: Acrobat hat bereits seine eigene stille Wiederherstellung versucht und ist gescheitert. Ein PDF wird vom Ende her gelesen, und genau die Strukturen am Ende sind das, was ein fehlerhaftes Speichern oder ein abgebrochener Download zuerst zerstört. Zieh die Datei oben hinein, und das Werkzeug analysiert die echte Objektstruktur des PDFs in deinem Browser, baut die Cross-Reference-Tabelle aus den gefundenen Objekten neu auf und setzt eine Datei zusammen, die sich tatsächlich öffnen lässt — ohne dass das Dokument je deinen Rechner verlässt.
Ein PDF wird vom Ende her gelesen — und darum bricht es so
Ein PDF ist kein Datenstrom, der von oben nach unten gelesen wird. Es beginnt mit einem Header wie %PDF-1.7, gefolgt von einem Körper aus nummerierten Objekten (jedes geschrieben als N 0 obj … endobj), die die Seiten, Schriften, Bilder und Inhalte enthalten. Nach dem Körper kommt die Cross-Reference-Tabelle (xref): eine Liste mit dem exakten Byte-Offset jedes Objekts. Danach benennt ein trailer die Wurzel des Dokuments, und — besonders wichtig — die Datei endet mit startxref, gefolgt von einem Byte-Offset und der Markierung %%EOF.
Um die Datei zu öffnen, springt ein Reader ans Ende, liest startxref, um zu erfahren, wo die xref liegt, springt dorthin und nutzt die Offsets, um die Wurzel zu finden und die Seiten zu laden. Alles hängt davon ab, dass dieser Trailer intakt ist und die Offsets stimmen. Seit PDF 1.5 kann diese Karte auch als komprimierte Cross-Reference-Stream gespeichert und können viele Objekte in Object-Streams (ObjStm) gepackt werden: effizienter, aber es bedeutet, dass ein einziger beschädigter Stream am Ende auf einen Schlag sehr viele Objekte verbergen kann.
Weil der Index und der Trailer ganz am Ende sitzen, sind sie die ersten Opfer, wenn ein Speichervorgang abbricht, ein Download abgeschnitten wird oder ein inkrementelles Update fehlerhaft geschrieben wird. Deshalb haben "beschädigte" PDFs so oft einen völlig intakten Seiteninhalt und eine kaputte Karte, die darauf zeigt.
Warum Acrobats eigene Reparatur aufgibt
Acrobat baut ein kaputtes xref normalerweise stillschweigend neu auf: Wenn die Offsets nicht stimmen, durchsucht es die Datei nach obj-Markierungen und rekonstruiert die Tabelle, ohne es dir zu sagen. "could not be repaired" ("konnte nicht repariert werden") bedeutet also, dass auch dieser Notmechanismus versagt hat: Der Schaden ging über das hinaus, was der Rekonstruktor von Acrobat verkraftet. Die üblichen Gründe:
Das Dateiende wurde abgeschnitten. Ein Download oder eine Kopie, die zu früh abbrach, verliert xref, trailer, startxref und %%EOF vollständig — und womöglich auch die letzten Objekte. Ein fehlerhaftes inkrementelles Update. PDFs werden oft bearbeitet, indem am Ende ein neuer xref-Abschnitt und ein Trailer angehängt werden; ist dieser Anhang beschädigt, zeigt die Kette der Aktualisierungen auf die falsche Stelle. Eine beschädigte Cross-Reference-Stream oder Object-Stream. Wenn die Karte selbst ein komprimierter Stream ist und dieser Stream beschädigt ist, kann Acrobat die darin verpackten Objekte aus den Augen verlieren. Auf dem Transportweg verfälschte Bytes: eine Übertragung im Textmodus, die die Zeilenenden veränderte, oder eine Synchronisierung, die Bytes umkippte, kann die Offsets ebenfalls so durcheinanderbringen, dass nichts mehr zusammenpasst.
In jedem Fall lautet die nützliche Erkenntnis gleich: Die Objekte, aus denen deine Seiten bestehen, sind häufig noch im Körper vorhanden; kaputt ist nur das Verzeichnis, das auf sie verweist.
Was ein gründlicherer Neuaufbau wiederherstellt — und warum nichts hochladen
Statt sich auf den kaputten Trailer zu verlassen, durchsucht das Werkzeug die gesamte Datei nach obj-Definitionen, notiert, wo jede tatsächlich beginnt, und baut die Cross-Reference-Tabelle aus diesen echten Positionen neu auf. Danach verknüpft es die Wurzel des Dokuments und den Seitenbaum neu, damit ein Reader die Seiten wieder durchlaufen kann, und rettet dabei die Content-Streams, eingebetteten Schriften und Bilder. Wenn die Karte in einer komprimierten Cross-Reference-Stream oder Object-Stream lag, die überlebt hat, liest es auch diese; wenn das Ende abgeschnitten wurde, stellt es jedes Objekt wieder her, das vor dem Schnitt geschrieben wurde, und setzt ein gültiges PDF darum herum zusammen. Das alles läuft vollständig im Tab deines Browsers: ohne Acrobat, ohne Plug-in, ohne Hin- und Rückweg zu einem Server.
Die ehrlichen Grenzen: Inhalt, der nie geschrieben wurde, lässt sich nicht wiederherstellen — wurde die Datei also abgeschnitten, sind die Seiten, die noch nicht gespeichert waren, verloren; du bekommst die Seiten bis zum Schnittpunkt zurück. Fiel ein bestimmtes Objekt, von dem deine Seiten abhängen, in den beschädigten Bereich, kann diese Seite unvollständig zurückkommen. Und ein verschlüsseltes, passwortgeschütztes PDF lässt sich ohne das Passwort nicht neu aufbauen, weil seine Objekte bis zur Entschlüsselung unlesbar sind. Was die Reparatur dagegen garantiert, ist Privatsphäre: Verträge, Krankenakten, Kontoauszüge und unveröffentlichte Arbeiten werden von der Platte gelesen und lokal wieder zusammengesetzt, und du kannst den Tab "Network" (Netzwerk) im Auge behalten und bestätigen, dass 0 Byte des Dokuments je deinen Rechner verlassen.
Was sich reparieren lässt und was nicht
Kann repariert werden
- Ein PDF, dessen xref / trailer / startxref beschädigt oder abgeschnitten wurde: Die Tabelle wird durch Scannen nach obj-Definitionen neu aufgebaut
- Dateien, die durch einen abgebrochenen Download oder eine abgebrochene Kopie abgeschnitten wurden: Jedes vor dem Schnitt geschriebene Objekt wird wiederhergestellt
- Dokumente, die durch ein fehlerhaftes inkrementelles Update oder eine beschädigte Cross-Reference-/Object-Stream kaputtgingen
- PDFs, die Acrobat nur öffnet, um zu melden, dass die Datei beschädigt ist und nicht repariert werden konnte, während die Objekte der Seiten überleben
Kann nicht repariert werden
- Seiten oder Objekte, die nach einem Abschneiden nie geschrieben wurden: Diese Bytes liegen nicht auf deiner Platte
- Passwortverschlüsselte PDFs ohne das Passwort (die Objekte lassen sich bis zur Entschlüsselung nicht lesen)
- Eine Datei mit 0 Byte oder ohne erkennbare PDF-Objekte
- Eine Seite, die von einem bestimmten Objekt abhängt, das in den beschädigten Bereich gefallen ist (sie kann unvollständig zurückkommen)
Wenn eine Reparatur fehlschlägt, sagen wir dir warum (fehlende Daten gegenüber beschädigter Struktur), und für eine fehlgeschlagene Reparatur wird dir nie etwas berechnet.