Formato File PDF Spiegato: Anatomia, Livelli e Standard
Cosa c'è effettivamente dentro un PDF? Un diagramma etichettato e un glossario che coprono le quattro sezioni fisiche (header, body, xref, trailer), i sei livelli di contenuto (testo, immagini, font, annotazioni, vettori, firme), metadati e gli standard ISO (PDF/A, PDF/X, PDF/UA, PDF/E, PDF/VT) costruiti sopra.
Un PDF non è una cosa singola. È un contenitore binario con una struttura specifica su disco, un insieme di livelli di contenuto impilati all'interno di quel contenitore e una famiglia di standard ISO costruiti sulla specifica di base. Aprilo in un editor esadecimale e la struttura è visibile in testo semplice nelle prime righe. Aprilo in un visualizzatore e i livelli vengono renderizzati insieme come una singola pagina.
Questa guida è un riferimento etichettato: la struttura fisica del file, i livelli di contenuto che un corpo contiene, i metadati che circondano tutto e gli standard (PDF/A, PDF/X, PDF/UA, PDF/E, PDF/VT) che lo vincolano per casi d'uso specifici.

Vuoi usare questo diagramma sul tuo blog? Copia questo codice di incorporamento:
Le Quattro Sezioni Fisiche
Ogni PDF su disco ha la stessa struttura in quattro parti, in quest'ordine:
1. Header
La prima riga del file. Inizia sempre con %PDF- seguito da un numero di versione:
%PDF-1.7Le versioni vanno da 1.0 (rilasciato nel 1993) a 2.0 (rilasciato nel 2017, attuale). L'header è seguito da una riga di commento con byte binari che segnalano a FTP e altri strumenti di trasporto che si tratta di un file binario.
2. Body - Oggetti Indiretti
La maggior parte del file. Ogni pagina, font, immagine, annotazione e campo modulo è un oggetto indiretto numerato:
1 0 obj
<< /Type /Catalog /Pages 2 0 R >>
endobj
2 0 obj
<< /Type /Pages /Kids [3 0 R] /Count 1 >>
endobj
3 0 obj
<< /Type /Page /Parent 2 0 R /Contents 4 0 R /Resources << ... >> >>
endobjOgni oggetto ha un ID (il numero prima di 0 obj), un numero di generazione (0, usato per aggiornamenti incrementali) e un payload tra << e >> per i dizionari o stream e endstream per i flussi binari (dati immagine, dati font, contenuto compresso).
Gli oggetti si riferiscono a vicenda con la sintassi <id> <gen> R (ad esempio, 3 0 R significa "oggetto 3, generazione 0"). È così che una pagina fa riferimento al font che utilizza, o come un catalogo fa riferimento alla radice dell'albero delle pagine.
3. Tabella di Riferimento Incrociato (xref)
Una tabella di ricerca per offset in byte. Per ogni oggetto nel corpo, l'xref registra la sua posizione assoluta in byte nel file:
xref
0 6
0000000000 65535 f
0000000017 00000 n
0000000089 00000 n
0000000172 00000 n
0000000299 00000 n
0000000453 00000 nQuesto è ciò che rende i PDF ad accesso casuale. Un visualizzatore può leggere l'xref, saltare direttamente all'offset in byte dell'oggetto 3 e renderizzare quella pagina senza analizzare il resto del file. È il motivo per cui i PDF di un singolo capitolo si aprono istantaneamente anche quando il file sorgente è di 500 pagine.
4. Trailer
L'ultima sezione. Indica al parser dove trovare l'xref e quale oggetto è la radice:
trailer
<< /Size 6 /Root 1 0 R /Info 7 0 R >>
startxref
1893
%%EOFIl valore startxref è l'offset in byte della tabella xref. Il marcatore %%EOF è la fine letterale del file. I trailer sono ciò che rende possibili gli aggiornamenti incrementali: aggiungere un nuovo xref + trailer alla fine consente di aggiungere oggetti senza riscrivere l'intero file.
I Sei Livelli di Contenuto
All'interno del corpo, il contenuto è memorizzato su sei tipi di livelli. Ogni pagina PDF renderizzata è un composito di questi livelli:
1. Testo
Comandi di posizione dei glifi e riferimenti ai font, non stringhe di testo. Un PDF memorizza istruzioni come "disegna il glifo 42 dal font F3 alla posizione (120, 540)" invece di "disegna la lettera A qui". Ecco perché il testo è selezionabile e ricercabile: il visualizzatore mappa inversamente gli ID dei glifi ai punti di codice Unicode tramite una mappatura ToUnicode (o una CMap per i font CJK).
Quando a un testo manca una mappatura ToUnicode, si ottiene il classico problema "PDF con testo selezionabile che si copia come spazzatura". Il testo è visibile, ma la mappatura glifo-Unicode è interrotta o assente.
2. Immagini
Memorizzate come stream incorporati in uno dei diversi formati:
- JPEG (filtro DCTDecode): fotografie, più comune
- JPEG2000 (JPXDecode): compressione più elevata, meno comune
- Equivalente PNG (filtro FlateDecode + Predictor): screenshot, line art
- CCITT Group 4 (filtro CCITTFaxDecode): testo scansionato in bianco e nero, utilizzato nelle scansioni d'archivio
- JBIG2 (filtro JBIG2Decode): immagini bilevel, comuni nei documenti OCRizzati
Le immagini possono essere sottocampionate, ricompresse o sostituite senza influire sul resto del contenuto.
3. Font
Incorporati come programmi di font completi, subset (solo glifi utilizzati inclusi) o referenziati per nome (devono essere installati sul sistema del visualizzatore). Il subsetting è l'impostazione predefinita: riduce drasticamente le dimensioni del file. Formati di font supportati: Type1, TrueType, OpenType e CIDFont (per CJK).
Quando un font è referenziato ma non incorporato e non installato sul sistema del visualizzatore, il visualizzatore ne sostituisce uno simile, che di solito appare errato. PDF/A richiede che tutti i font siano incorporati per evitare questo problema.
4. Annotazioni
Evidenziazioni, commenti, collegamenti, timbri, filigrane e campi modulo sono tutte annotazioni. Sono sovrapposte al contenuto della pagina e possono essere aggiunte, modificate o rimosse senza modificare la pagina sottostante.
I campi modulo sono un caso speciale: un'annotazione widget interattiva (la parte visibile) più un dizionario di campo (la parte dati). Quando compili un modulo e salvi, solo i dizionari dei campi cambiano: la pagina stessa non viene modificata.
5. Grafica Vettoriale
Linee, forme, curve e tracciati disegnati con operatori simili a PostScript (moveto, lineto, curveto). Scalabili all'infinito senza perdita di qualità. La maggior parte delle esportazioni CAD, grafici e diagrammi nei PDF sono grafica vettoriale.
6. Firme Digitali
Firme basate su PKI legate a intervalli di byte del file. Il dizionario della firma specifica "i byte da 0 a 12.547 e da 14.200 alla fine del file sono firmati": un piccolo intervallo nel mezzo è riservato al valore della firma stessa. Qualsiasi modifica agli intervalli di byte firmati invalida la firma, che è il modo in cui il PDF rileva manomissioni dopo la firma.
Alcuni PDF hanno più firme, stratificate come aggiornamenti incrementali: ogni firmatario firma il file così com'era quando l'ha ricevuto, preservando la catena.
Metadati: Due Sistemi Paralleli
Il PDF ha due sistemi di metadati che spesso discordano:
Dizionario Standard /Info
Memorizzato nel trailer. Campi: Title, Author, Subject, Keywords, Creator (l'app con cui l'utente ha creato il documento), Producer (l'app che ha generato il PDF), CreationDate, ModDate. Stringhe di testo semplice, facili da leggere con qualsiasi strumento PDF.
Stream di Metadati XMP
Uno stream XML separato (Adobe XMP, basato su RDF/XML) che supporta schemi più ricchi: Dublin Core, IPTC, schemi personalizzati specifici del dominio (profili colore, registrazioni copyright, versioning manoscritti).
I moderni generatori di PDF scrivono su entrambi. I vecchi PDF hanno solo /Info. Alcuni PDF hanno /Info obsoleti di una versione precedente e XMP accurati di una recente modifica, o viceversa. Quando si controllano i PDF per conformità o per analisi forensi, controllare entrambi.
Standard ISO Basati su PDF
La specifica PDF di base è ISO 32000. Diversi standard derivati vincolano il PDF per casi d'uso specifici:
| Standard | Uso | Vincoli |
|---|---|---|
| PDF/A | Archiviazione a lungo termine | Tutti i font incorporati, no JavaScript, no audio/video, spazi colore indipendenti dal dispositivo. Livelli di conformità: PDF/A-1, A-2, A-3 (consente allegati di file) |
| PDF/X | Produzione stampa | Colore CMYK, font e profili colore incorporati, nessuna trasparenza (PDF/X-1a) o trasparenza controllata (PDF/X-4) |
| PDF/UA | Accessibilità | Albero di struttura taggato, metadati linguistici, testo alternativo per immagini, ordine di lettura logico |
| PDF/E | Ingegneria | Modelli 3D (formati U3D, PRC), metadati specifici CAD |
| PDF/VT | Stampa transazionale variabile | Ottimizzato per mailing personalizzati ad alto volume |
Un PDF può essere conforme a più standard contemporaneamente: PDF/A-2u (archiviazione con mappatura Unicode) più PDF/UA (accessibilità) è comune per archivi governativi e legali.
PDF Linearizzati (Ottimizzati per Web)
Un PDF "linearizzato" o "ottimizzato per il web" riordina il corpo in modo che gli oggetti della prima pagina appaiano all'inizio del file. Un visualizzatore web può renderizzare la pagina 1 dopo aver scaricato solo i primi ~50 KB invece di attendere l'intero file. Il trailer è duplicato all'inizio, più una tabella di suggerimenti che indica al visualizzatore dove inizia ogni pagina.
La maggior parte dei moderni generatori di PDF supporta la linearizzazione come opzione "Salva per Web". Il formato aggiunge il 2-5% alle dimensioni del file in cambio di un rendering veloce della prima pagina su connessioni lente.
Crittografia e Permessi
I PDF possono essere crittografati con una password (o certificati) e dotati di permessi granulari: stampa, copia testo, modifica, compilazione moduli, estrazione per accessibilità. La crittografia è memorizzata nel dizionario /Encrypt del trailer.
Le forze di crittografia si sono evolute: RC4 a 40 bit (primi PDF, trivialmente craccati oggi), RC4 a 128 bit (ancora debole), AES-128, AES-256. L'implementazione originale RC4 di Acrobat 5 è stata craccata pubblicamente nel 2001; la moderna crittografia PDF (AES-256, PDF 2.0) è solida se utilizzata con password forti.
Nota: i "permessi" sono consultivi. Un visualizzatore che li rispetta li farà rispettare. Un visualizzatore che li ignora (o uno strumento che rimuove la crittografia) no.
Come PDFSub Legge i PDF
PDFSub elabora i PDF utilizzando il binding PDFium di Rust (lo stesso motore che alimenta il visualizzatore PDF di Chromium) più PaddleOCR per i documenti scansionati. Per dettagli completi sull'architettura e un confronto con gli strumenti basati su cloud, vedere Browser vs Cloud PDF Security.
Per convertire i PDF in altri formati preservando la struttura descritta sopra:
- PDF in Excel - estrae testo + tabelle, preserva le coordinate
- OCR PDF - aggiunge un livello di testo ricercabile ai PDF scansionati
- PDF in Word - riformatta il testo in paragrafi modificabili
- Comprimi PDF - sottocampiona le immagini, subset dei font
Per flussi di lavoro di archiviazione specifici, vedere Come Convertire PDF in PDF/A.
Letture Consigliate
- ISO 32000-2 (specifica PDF 2.0) - riferimento autorevole, a pagamento
- Archivi di Riferimento PDF Adobe - riferimento gratuito per PDF 1.7
- PDF Association - gruppo di lavoro del settore, articoli gratuiti e file di test di conformità
Per argomenti specifici sui PDF: Guida alla Conformità PDF per Avvocati, Guida alla Conversione PDF/A.