Wie kann ich eine beschädigte PDF-Datei reparieren?

80

Hat jemand eine Empfehlung oder ein Verfahren zum Reparieren einer beschädigten PDF? Wenn ich die Datei öffne, erhalte ich die Meldung "Beim Öffnen dieses Dokuments ist ein Fehler aufgetreten. Die Datei ist beschädigt und kann nicht repariert werden." Es scheint eine Vielzahl von Tools zu geben, aber keines, das ich als seriös bezeichnen könnte. Gibt es dafür möglicherweise OpenSource-Linux-basierte Lösungen?

Tim Alexander
quelle
Open Source PDF-Tools sind leider ziemlich beschissen. Was benutzt du?
Satanicpuppy
hat das Aussehen der Tools nicht gefallen, da sie wie die unzähligen "Registry Cleaner" aussahen, die nutzlos sind. Ich habe Adobe Pro ausprobiert und habe gerade angefangen zu suchen, ob Ghostscript oder PDFForge Reparaturschalter haben.
Tim Alexander
Ghostscript ist in Ordnung, aber sicherlich nicht besser als Acrobat. Es ist völlig nackt.
Satanicpuppy
6
@Satanicpuppy Ich stimme nicht zu: Ich verwende Ghostscript, um beschädigte oder qualitativ minderwertige PDFs ziemlich oft wiederherzustellen, und es funktioniert sehr gut.
Eddie B

Antworten:

100

Ghostscript repariert Ihre beschädigte PDF-Datei automatisch ... wenn es sie überhaupt öffnen kann (dh wenn sie nicht irreparabel beschädigt ist). Aber danach müssen Sie das Ergebnis noch einmal überprüfen ...

Versuchen Sie unter Linux den folgenden Befehl:

 gs \
  -o repaired.pdf \
  -sDEVICE=pdfwrite \
  -dPDFSETTINGS=/prepress \
   corrupted.pdf

Versuchen Sie unter Windows Folgendes:

 gswin32c.exe ^
  -o repaired.pdf ^
  -sDEVICE=pdfwrite ^
  -dPDFSETTINGS=/prepress ^
   corrupted.pdf
Kurt Pfeifle
quelle
2
Ghostscript macht eine fantastische Arbeit beim Rendern von PDFs ... Ich verwende regelmäßig gs, um PDFs neu zu erstellen und die Schriftqualität zu verbessern.
Eddie B
1
Die / Druckvorstufe macht die Qualität im Vergleich zu / screen wirklich gut. Vielen Dank.
Dolanor,
Ich erhalte die Meldung "Beim Lesen einer XREF-Tabelle ist ein Fehler aufgetreten." Was bedeutet das?
Geremia
Dies bedeutet, dass das interne Inhaltsverzeichnis (was PDFs als XREF- Tabelle enthalten müssen ) einen Fehler aufwies und auf einen falschen Byte-Versatz für ein PDF-Objekt hinwies. Ghostscript hat diesen Fehler höchstwahrscheinlich behoben und eine korrekte XREF-Tabelle in die Ausgabe eingefügt. Sie können dies überprüfen, indem Sie die Ausgabe noch einmal über Ghostscript ausführen und prüfen, ob diese Meldung weiterhin angezeigt wird.
Kurt Pfeifle
37

Ich hatte eine beschädigte PDF-Datei, print.pdfdie Ghostscript nicht öffnen konnte, aber die üblichen grafischen Linux-PDF-Viewer (Okular, Evince) ließen sich problemlos öffnen. (In meinem Fall hatte die Datei beim Öffnen in einem Hex-Editor am Anfang anstelle eines PDF-Headers einen Müll.)

Diese PDF-Viewer verwenden Poppler als Back-End-PDF-Renderer. So können Sie die PDF-Datei mithilfe der Poppler-Befehlszeilentools reparieren. In Ubuntu sind diese im poppler-utilsPaket enthalten. Ich benutzte:

pdftocairo -pdf print.pdf print_repaired.pdf

Das hat eine PDF-Datei mit korrekten Headern erzeugt, die jetzt von Tools wie Ghostscript akzeptiert werden.

Mechanische Schnecke
quelle
3
+1 dies las meine mit Quarz erstellte PDF ohne Beanstandungen und begann sofort mit der Erzeugung der Ausgabe. Ghostscript, Adobe Acrobat Pro und andere haben darauf bestanden, zuerst mein 120-GB-PDF-Dokument neu zu erstellen.
Orwellophile
Für mindestens ein seltsames PDF, auf das ich gestoßen bin, hat dies nicht funktioniert, aber es scheint ein guter Anfang zu sein.
Brian Peterson
1
Funktioniert perfekt in einem PDF, in dem Ghostscript einige beliebige Elemente auf Seiten entfernen wollte.
Andrea Lazzarotto
Ghostscript konnte das Dokument nicht lesen, aber das funktionierte wie ein Zauber. Übrigens habe ich das unter Windows mit dem neuen Linux-Subsystem gemacht, also cool!
HyLian
24

mutool( Projektseite , Manpage ) repariert defekte PDFs, ohne sie auszudrucken .

  • Installation zB unter Ubuntu: sudo apt-get install mupdf-tools
  • Führen Sie es so aus: mutool clean input.pdf output.pdf
mutool clean [options] input.pdf [output.pdf] [pages]

  The clean command pretty prints and rewrites the syntax of a PDF file.
   It can be used to repair broken files, expand compressed streams,
   filter out a range of pages, etc.
  If no output file is specified, it will write the cleaned PDF to
   "out.pdf" in the current directory.

Alternativ gibt es einige Tools und Frameworks, mit denen PDF-Dateien in ihre Komponenten zerlegt / dekompiliert werden können, ohne sie zu rendern. Diese können zum Extrahieren von Text, Skripten und Bildern nützlich sein. In dieser Antwort finden Sie eine Liste solcher Tools: https://reverseengineering.stackexchange.com/q/1526/8210 . Du kannst zB die aktuelle Top-Antwort Origami ausprobieren , sie hat einen GTK-basierten Viewer.

jmiserez
quelle
3
Diese Lösung funktioniert "besser" als die oben angebotenen oder besser bewerteten Lösungen, da die PDF-Datei nicht "gedruckt" wird und die Links, anklickbaren Elemente usw. aktiv bleiben. Für mich klingt sie eleganter als die Verwendung von Ghostscript oder Kairo.
Speredenn
1
Behebt leider mutool cleannicht alle möglichen Fehler. Ich habe eine Datei, die verschiedene Fehler in der Schriftart und den Inhaltsströmen enthält, und mutool behält diese Fehler bei.
Dominik Honnef
1
@DominikHonnef Sie können jederzeit Tools / Frameworks ausprobieren, mit denen die PDF-Datei zerlegt wird, und Sie können alle Teile anzeigen, ohne sie zu rendern. Dadurch sollten Sie Text, Skripte, Bilder usw. direkt abrufen können. In dieser Antwort finden Sie eine Liste der Tools: reverseengineering.stackexchange.com/q/1526/8210
jmiserez
Einzige Sache, die bei mir geklappt hat!
Jamadagni
Dies funktionierte besser, da dadurch das PDF nicht gerendert und das Dokument überprüft wird.
riccs_0x
10

Ich hatte eine beschädigte PDF-Datei, weil die zum Herunterladen verwendete PHP-Datei am Ende einige Fehler (in HTML) und NUL-Zeichen aufwies.

Die Lösung bestand darin, das PDF mit Notepad ++ zu öffnen und den gesamten Text nach der Zeile zu entfernen

%%EOF
Oriol
quelle
hatte das gleiche, Adobe Reader nicht geöffnet, aber native Mac, Chrome und Firefox PDF-Plugin angezeigt PDF-Datei in Ordnung. Grund war auch das zusätzliche "NUL" in der letzten Zeile, die während des Uploads hinzugefügt wurde.
Tilo
Ich hatte ein PDF mit zwei %%EOF. Ich habe alles nach dem ersten Mal %%EOFmit einem Hex-Editor gelöscht . Jetzt funktioniert alles gut.
Adrian