Gli errori esatti, e l'ironia nella formulazione di Adobe
Adobe Acrobat e Reader mostrano questo, testualmente, quando un PDF non si apre:
There was an error opening this document. The file is damaged and could not be repaired.
Il visore integrato di Chrome esprime lo stesso guasto in modo più conciso:
Failed to load PDF document.
Leggi con attenzione la frase di Adobe, perché la formulazione porta molte persone ad arrendersi. Non dice che il file non si può riparare. Dice cheAcrobat non è riuscito a ripararlo. Acrobat ha una passata di riparazione integrata che parte automaticamente quando incontra un PDF rotto, e quella passata è conservativa: gestisce i problemi semplici e rinuncia davanti a qualcosa di più difficile. Quando rinuncia, segnala il file come danneggiato e oltre la propria riparazione, che è un'affermazione sull'impegno di Acrobat, non sulla reale recuperabilità del file. Moltissimi PDF che fanno scattare questo messaggio si aprono benissimo dopo una ricostruzione strutturale più a fondo.
La tabella xref è l'indice del PDF
Un PDF è costruito a partire da oggetti numerati: ogni pagina, font, immagine e blocco di testo è un oggetto memorizzato da qualche parte nel file. Per trovarli in fretta, un PDF mantiene una tabella di riferimenti incrociati, la xref, vicino alla fine del file. La xref è un elenco di consultazione che registra l'offset esatto in byte di ogni oggetto, e subito dopo di essa si trova un piccolo trailer che indirizza il lettore verso la xref e verso la radice del documento. Quando apri un PDF, il lettore salta alla fine, legge il trailer, legge la xref e usa quegli offset per localizzare tutto il resto.
Un PDF memorizza prima i suoi oggetti di pagina e, vicino alla fine, l'indice xref che li localizza. Danneggia la xref e il lettore non riesce a trovare le pagine, anche se le pagine sono ancora lì.
Quel design è la stessa storia dell'indice di un video o della directory di uno ZIP: una piccola mappa alla fine di cui un lettore ha bisogno prima di poter usare la grande massa di dati che ha davanti. E ha la stessa conseguenza. Se la xref è corrotta, punta agli offset sbagliati o è stata tagliata via del tutto, il lettore non riesce a trovare nemmeno un oggetto, anche se le pagine sono nel file intatte. Il documento è inutilizzabile, ma il contenuto non è perso, è solo non indicizzato. Quella distanza tra «inutilizzabile» e «perso» è dove vive la riparazione.
Perché un download rotto rompe l'intero PDF
Due cose vanno storte più spesso, ed entrambe lasciano intatti gli oggetti mentre distruggono l'indice. La prima è il troncamento. Un PDF, come la maggior parte dei file, viene trasferito dall'inizio alla fine, quindi un download che si blocca, una sincronizzazione cloud che si chiude o un disco rimosso a metà copia ti lasciano con la parte iniziale del file e niente dopo il taglio. Poiché la xref e il trailer vivono alla fine, il troncamento li rimuove per primi mentre gli oggetti di pagina all'inizio sopravvivono. Un rapido controllo delle dimensioni lo tradisce: un contratto che dovrebbe pesare 4 MB e che arriva come 2,6 MB è troncato, e i byte mancanti non sono danneggiati, sono semplicemente assenti.
La seconda è l'alterazione durante il trasferimento. Un PDF è un misto di dati binari e struttura di tipo testuale, e un trasferimento che modifica byte lungo il percorso, un gateway di posta che «sistema» i fine riga, uno strumento che tratta il file come testo, un passaggio di codifica che corrompe certi caratteri, può spostare la posizione reale degli oggetti così che non corrispondano più agli offset registrati dalla xref. La xref ora punta a qualche byte di distanza da dove ogni oggetto si trova davvero, e il lettore, seguendo quei puntatori obsoleti, trova spazzatura e dichiara il file danneggiato.
Entrambi i casi condividono un ordine di intervento. Poiché la riparazione più sicura per un file troncato o alterato è una copia integra dei byte andati persi o cambiati, scarica o copia di nuovo prima di tutto il file dalla sua fonte originale. Riscaricalo su una connessione stabile, oppure prendilo direttamente dal dispositivo o dal disco da cui proviene, e apri la copia nuova. Un download integro sistema l'intero documento in una volta sola, mentre la riparazione può solo ricostruire attorno a ciò che già possiedi, quindi vale sempre la pena dedicare i due minuti a provare la fonte originale prima di ogni altra cosa.
Ricostruire la xref
Quando non è disponibile una copia integra, la riparazione consiste nel ricostruire l'indice. Ogni oggetto di un PDF porta un marcatore riconoscibile nel file, quindi uno strumento di riparazione può ignorare del tutto la xref rotta e scansionare il file dall'inizio, trovando ogni oggetto sopravvissuto e annotando dove si trova davvero. Da quella scansione costruisce una tabella di riferimenti incrociati nuova e corretta e un trailer corrispondente, poi scrive un nuovo PDF il cui indice punta davvero ai suoi oggetti. Un lettore che apre il file ricostruito percorre la nuova xref, trova ogni oggetto dove la tabella dice che sia e renderizza il documento.
Questo è esattamente il lavoro che tenta la stessa passata di riparazione di Acrobat, e che spesso abbandona, fatto più a fondo. Quando gli oggetti sono sopravvissuti e solo l'indice era rotto, che è il caso comune dietro questo errore, la ricostruzione recupera il documento per intero. Inoltre non è distruttiva se fatta bene: lo strumento legge il tuo file danneggiato e ne scrive uno nuovo, quindi un tentativo fallito lascia l'originale esattamente com'era, senza costarti nulla provarci.
Quando ricostruire non basta
Ricostruire la xref recupera un documento i cui oggetti sono intatti dietro un indice rotto. Non può far comparire dal nulla contenuti che non sono nel file, e alcune situazioni restano fuori da ciò che qualsiasi riparazione può fare. Nominarle con chiarezza è più utile di una promessa:
- Gli oggetti stessi mancano. Se il troncamento ha tagliato via parte del file, le pagine che vivevano nella sezione rimossa sono andate perse. Una ricostruzione recupera gli oggetti sopravvissuti fino al taglio, e il documento torna incompleto anziché intero. Non c'è nulla da indicizzare là dove i byte non esistono più.
- Il PDF è cifrato e non hai la password. Un PDF protetto da password memorizza il suo contenuto cifrato. La struttura può essere ricostruita, ma le pagine restano cifrate, quindi senza la password il file recuperato è comunque illeggibile. La riparazione non aggira la cifratura, né dovrebbe farlo.
- È un PDF di immagini scansionate con pagine danneggiate.Un documento scansionato è essenzialmente un'immagine per pagina avvolta in un PDF. Il recupero è per pagina: le pagine i cui dati di immagine sono sopravvissuti tornano senza problemi, e le pagine i cui dati di immagine sono stati troncati o sovrascritti no, dato che non c'è ridondanza all'interno di un'immagine compressa da cui ricostruire. Aspettati alcune pagine di ritorno e altre mancanti, più che una sfocatura parziale di tutte le pagine.
- Il file è quasi vuoto. Un PDF tornato come pochi kilobyte di un originale da diversi megabyte, o che si legge come per lo più zeri, non contiene oggetti reali da indicizzare. Quello è un problema di download o di recupero, non di riparazione.
Al di fuori di questi casi, un PDF che Acrobat ha definito danneggiato e non è riuscito a riparare è spesso una semplice ricostruzione dell'indice, perché l'errore riguarda la mappa molto più spesso del territorio.
Domande frequenti
Cosa significa «the file is damaged and could not be repaired»?
Significa che Adobe Acrobat o Reader ha rilevato che la struttura del PDF è rotta e che il suo tentativo di riparazione integrato è fallito. Vale la pena leggere con attenzione la formulazione: dice che Acrobat non è riuscito a riparare il file, non che il file sia irreparabile. La causa più comune è una tabella di riferimenti incrociati danneggiata o troncata, l'indice che indica a un lettore dove si trova ogni oggetto del documento. Acrobat si arrende in fretta davanti a un indice difettoso, ma il contenuto delle pagine spesso è ancora presente e raggiungibile ricostruendo quell'indice.
Come riparo un PDF danneggiato che non si è potuto riparare?
Comincia scaricando o copiando di nuovo il file dalla sua fonte originale, perché a un download troncato mancano byte che nessuna soluzione locale può ripristinare. Se non è disponibile una copia integra, il passo successivo è ricostruire la tabella di riferimenti incrociati del PDF: uno strumento di riparazione scansiona il file alla ricerca degli oggetti sopravvissuti e ricostruisce un indice valido che punta a essi, così un lettore può riaprire il documento. Funziona quando gli oggetti sono intatti e solo l'indice è rotto, che è la situazione abituale dietro questo errore.
Perché Chrome dice «Failed to load PDF document»?
Il visore PDF integrato di Chrome mostra quel messaggio quando non riesce a interpretare la struttura del file abbastanza bene da renderizzarlo. È l'equivalente in Chrome dell'errore di file danneggiato di Acrobat e punta allo stesso problema di fondo: una struttura di PDF rotta o incompleta, spesso un download troncato. Prima di dare per corrotto il file, prova a scaricarlo di nuovo e ad aprirlo in un lettore diverso, dato che i visori variano in quanto danno strutturale tollerano.
Si può riparare un PDF corrotto senza Adobe?
Sì. La struttura di un PDF è ben documentata, quindi ricostruire la sua tabella di riferimenti incrociati non richiede software Adobe. Uno strumento di riparazione dedicato scansiona il file alla ricerca di oggetti validi e ricostruisce l'indice che punta a essi, che è esattamente ciò che recupera un documento che Acrobat ha detto di non poter riparare. Non serve avere Acrobat installato per raggiungere le pagine, anche se vorrai un qualche lettore PDF per visualizzare il risultato recuperato.
Si può riparare un PDF cifrato?
La sua struttura può essere ricostruita, ma il contenuto resta cifrato. Un PDF protetto da password memorizza le sue pagine come dati cifrati, e riparare l'indice del file non le decifra. Se hai la password, puoi aprire il file riparato e leggerlo normalmente; senza la password, gli oggetti recuperati restano illeggibili. La riparazione sistema il contenitore attorno al contenuto, e non rimuove né aggira la cifratura, cosa che è intenzionale.
Un PDF è spesso un contratto, un documento d'identità o una cartella clinica, quindi dove viene elaborato il file conta: ripara il tuo nel browser, senza caricare nulla.