Come posso riparare / riparare un file PDF corrotto?


80

Qualcuno ha qualche raccomandazione o procedura per riparare un PDF corrotto? Quando apro il file ottengo "Si è verificato un errore durante l'apertura di questo documento. Il file è danneggiato e non può essere riparato." Sembra che ci siano una miriade di strumenti là fuori, ma nessuno che potrei definire rispettabile. Esistono forse soluzioni basate su Linux open source per questo?


Temo che gli strumenti PDF di OpenSource siano piuttosto scadenti. Che cosa stai usando?
Satanicpuppy,


non mi è piaciuto l'aspetto di nessuno degli strumenti in quanto sembravano la miriade di "Registry Cleaners" che sono inutili. Ho provato Adobe Pro e ho appena iniziato a cercare se Ghostscript o PDFForge hanno interruttori di riparazione.
Tim Alexander,

Ghostscript va bene, ma non è certamente meglio di Acrobat. Sono ossa completamente nude.
Satanicpuppy,

6
@Satanicpuppy Non sono d'accordo :: Uso ghostscript per ricostruire PDF danneggiati o di bassa qualità abbastanza spesso e funziona molto bene.
Eddie B,

Risposte:


100

Ghostscript riparerà automaticamente il tuo PDF corrotto ... se può aprirlo in primo luogo (cioè, se non è danneggiato irreparabilmente). Ma dopo dovrai ancora ricontrollare il risultato ...

Su Linux, prova questo comando:

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

Su Windows, prova questo:

 gswin32c.exe ^
  -o repaired.pdf ^
  -sDEVICE=pdfwrite ^
  -dPDFSETTINGS=/prepress ^
   corrupted.pdf

2
Ghostscript fa un ottimo lavoro nel rendering di pdf ... Uso regolarmente gs per ricostruire pdf per migliorare la qualità dei caratteri.
Eddie B,

1
La / prestampa rende la qualità davvero buona rispetto a / schermo. Grazie.
Dolanor,

Ottengo "Si è verificato un errore durante la lettura di una tabella XREF." Cosa significa?
Geremia,

Significa che il sommario interno (ciò che i PDF devono contenere come tabella XREF ) ha avuto un errore, indicando un offset di byte errato per un oggetto PDF. Molto probabilmente Ghostscript ha riparato quell'errore e ha inserito una tabella XREF corretta nell'output. Puoi verificarlo eseguendo l'output tramite Ghostscript ancora una volta e vedere se questo messaggio appare ancora.
Kurt Pfeifle,

37

Avevo un file PDF corrotto print.pdf, che Ghostscript non poteva aprire, ma i soliti visualizzatori grafici di PDF Linux (Okular, Evince) si aprivano bene. (Nel mio caso, il file aveva immondizia all'inizio anziché un'intestazione PDF, quando aperto in un editor esadecimale.)

Questi visualizzatori PDF utilizzano Poppler come renderer PDF back-end. Quindi puoi riparare il PDF usando gli strumenti da riga di comando di Poppler. In Ubuntu questi sono nel poppler-utilspacchetto. Ero solito:

pdftocairo -pdf print.pdf print_repaired.pdf

che ha generato un file PDF con le intestazioni corrette, che strumenti come Ghostscript ora accettano.


3
+1 questo ha letto il mio Quartz generato PDF senza lamentele e ha subito iniziato a generare output. Ghostscript, Adobe Acrobat Pro e altri hanno insistito per ricostruire prima il mio pdf da 120 GB.
Orwellophile,

Questo non ha funzionato per almeno uno strano PDF che ho incontrato, ma sembra un buon inizio.
Brian Peterson,

1
Funziona perfettamente su un PDF su cui Ghostscript ha voluto rimuovere alcuni elementi arbitrari sulle pagine.
Andrea Lazzarotto,

Ghostscript non è riuscito a leggere il documento ma ha funzionato come un incantesimo. A proposito, l'ho fatto su Windows usando il nuovo sottosistema Linux, così bello!
HyLian,

24

mutool( pagina del progetto , manpage ) riparerà i PDF rotti senza stamparli .

  • Installazione ad es. Su Ubuntu: sudo apt-get install mupdf-tools
  • Eseguilo in questo modo: 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.

In alternativa, ci sono alcuni strumenti e framework che possono decomporre / decompilare i PDF nei loro componenti senza renderli. Questi potrebbero essere utili per l'estrazione di testo, script e immagini. Vedi questa risposta per un elenco di tali strumenti: https://reverseengineering.stackexchange.com/q/1526/8210 . Ad esempio puoi provare l'attuale risposta principale Origami , ha un visualizzatore basato su GTK.


3
Questa soluzione funziona "meglio" delle soluzioni offerte sopra o meglio classificate, in quanto non "stampa" il file PDF e mantiene attivi i collegamenti, gli elementi cliccabili, ecc ... Per me, sembra una soluzione più elegante rispetto all'utilizzo di ghostscript o cairo.
Speredenn,

1
Sfortunatamente, mutool cleannon corregge tutti i possibili errori. Ho un file che presenta vari errori nei flussi di font e contenuti e Mutool manterrà questi errori.
Dominik Honnef,

1
@DominikHonnef Puoi sempre provare strumenti / framework che decompongono il PDF e ti consentono di visualizzare tutte le parti senza renderle. Ciò dovrebbe consentirti di ottenere direttamente testo, script, immagini, ecc. Vedi questa risposta per un elenco di strumenti: reverseengineering.stackexchange.com/q/1526/8210
jmiserez

L'unica cosa che ha funzionato per me!
Jamadagni,

Questo ha funzionato meglio dal momento che non rende il pdf che esamina il documento.
riccs_0x,

10

Avevo un file pdf corrotto, perché il file php utilizzato per scaricarlo faceva eco alcuni errori (in HTML) e caratteri NUL alla fine.

La soluzione era aprire il pdf con Notepad ++ e rimuovere tutto il testo dopo la riga

%%EOF

aveva lo stesso, Adobe Reader non si apriva ma il plugin PDF nativo per Mac, Chrome e Firefox visualizzava correttamente il file PDF. Il motivo è stato anche aggiunto "NUL" extra nell'ultima riga aggiunta durante il caricamento.
Tilo,

Ho avuto un PDF con due %%EOF. Ho cancellato tutto dopo il primo %%EOFusando un editor esadecimale. Ora tutto funziona bene.
Adrian,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.