cosa c'è dentro un file pdf
Cosa c'è davvero dentro un file PDF
Apri un PDF in un editor di testo e troverai qualcosa di più simile a un riversamento di banca dati che a un documento. Quasi ogni stranezza dei PDF discende da questo solo fatto.
01
Oggetti, non pagine
Un file PDF è una raccolta numerata di oggetti. Ciascuno è un dizionario, un flusso di byte, un vettore, un numero o una stringa, e ciascuno ha un identificatore. Gli oggetti si riferiscono l'un l'altro per numero: l'oggetto 3 dice «il mio contenuto è nell'oggetto 47», l'oggetto 47 dice «il mio font è l'oggetto 12».
Uno di quegli oggetti è il catalogo, la radice di tutto. Punta a un albero delle pagine. L'albero delle pagine punta a oggetti pagina. Ogni oggetto pagina punta a un flusso di contenuto e a un dizionario delle risorse di cui quel flusso ha bisogno — font, immagini, spazi colore.
Non esiste un oggetto chiamato «paragrafo», né un oggetto chiamato «titolo». La struttura si ferma alla pagina. Tutto ciò che sta sotto sono istruzioni di disegno.
- Intestazione
- Una riga: %PDF-1.7. La versione determina quali funzionalità un lettore può aspettarsi.
- Corpo
- Gli oggetti numerati. Font, immagini, definizioni di pagina, flussi di contenuto, metadati.
- Tabella dei riferimenti incrociati
- Un indice di scostamenti in byte: l'oggetto 47 comincia al byte 91.204. È così che un lettore salta dritto a pagina 900 di un file di 1.000 pagine senza leggere le prime 899.
- Trailer
- Punta al catalogo e al punto in cui comincia la tabella dei riferimenti incrociati. È l'ultima cosa nel file, ed è per questo che i lettori aprono un PDF andando prima in fondo.
02
Il flusso di contenuto è un elenco di istruzioni
Dentro il flusso di contenuto di una pagina c'è una sequenza di operatori in notazione postfissa — prima gli operandi, poi il comando. `1 0 0 1 72 720 Tm` imposta una posizione di testo. `/F1 12 Tf` seleziona il font F1 a 12 punti. `(Ciao) Tj` disegna la stringa. `re` costruisce un rettangolo, `f` lo riempie, `Do` dipinge un oggetto immagine.
È tutto qui il modello: un pittore che esegue ordini, dall'alto verso il basso. La pagina è ciò che resta sulla tela quando gli ordini finiscono.
Ne discendono subito due conseguenze, e insieme spiegano parecchio. L'ordine nel flusso è l'ordine di disegno, non l'ordine di lettura — una nota a piè di pagina può essere disegnata prima del testo che la richiama. E niente nel flusso dice cosa una cosa *sia*. Un titolo è testo che si dà il caso sia stato disegnato più grande.
03
Perché conta di più l'ultima parte del file
La tabella dei riferimenti incrociati è un indice di scostamenti in byte, e gli scostamenti in byte sono fragili. Cambia qualcosa in mezzo a un PDF e ogni scostamento successivo si sposta. È per questo che modificare un PDF in un editor di testo quasi sempre lo corrompe, e perché uno scaricamento troncato produce un file che non si apre affatto anche se il 95% del contenuto è arrivato intatto.
Ed è anche per questo che la riparazione è possibile e spesso riesce. Quando un lettore dice che il file è danneggiato, di solito significa che gli scostamenti sono sbagliati, non che gli oggetti siano spariti. Una passata di riparazione ignora la tabella rotta, scandisce l'intero file cercando qualsiasi cosa somigli a un'intestazione di oggetto e ricostruisce l'indice da ciò che trova.
04
Aggiornamenti incrementali: i PDF ricordano
Un PDF può essere modificato per accodamento. Anziché riscrivere il file, uno scrittore aggiunge in fondo le nuove versioni degli oggetti cambiati, poi aggiunge una nuova tabella dei riferimenti incrociati che punta a esse e si concatena a ritroso con la vecchia. Il lettore usa la tabella più recente, quindi vede la versione nuova.
I vecchi oggetti sono ancora nel file. È deliberato — è ciò che rende verificabili le firme digitali, perché si può ricostruire esattamente cosa è stato firmato. Ed è anche un pericolo reale: un oscuramento fatto disegnando un rettangolo nero lascia il testo sottostante del tutto intatto ed estraibile, e le pagine «cancellate» spesso non lo sono.
Salvare un PDF da capo, anziché in modo incrementale, scarta la cronologia. Lo fa anche l'appiattimento. Se un documento è passato per diversi giri di modifiche, vale la pena saperlo prima di mandarlo fuori.
05
Cosa spiega tutto questo
Quasi ogni lamentela sui PDF risale al modello. Il testo copiato arriva scombinato perché l'ordine del flusso di contenuto è l'ordine di disegno. I convertitori perdono la formattazione perché non c'è mai stata alcuna struttura da convertire — solo glifi posizionati. Unire è veloce e senza perdita perché è rinumerare oggetti, non ridisegnare pagine. I file restano ostinatamente grandi perché il peso sta negli oggetti immagine, e nessuna quantità di testo rimosso li tocca.
È un formato progettato per garantire che una pagina appaia identica ovunque, e ci riesce del tutto. Il prezzo è tutto ciò che dipende dal sapere cosa la pagina significhi.