Format de fitxer PDF Explicat: Anatomia, Capes i Estàndards
Què hi ha realment dins d'un PDF? Un diagrama etiquetat i un glossari que cobreixen les quatre seccions físiques (capçalera, cos, xref, tràiler), les sis capes de contingut (text, imatges, tipografies, anotacions, vectors, signatures), metadades i els estàndards ISO (PDF/A, PDF/X, PDF/UA, PDF/E, PDF/VT) construïts a sobre.
Un PDF no és una cosa única. És un contenidor binari amb una estructura específica al disc, un conjunt de capes de contingut apilades dins d'aquest contenidor i una família d'estàndards ISO construïts sobre la especificació base. Obriu-ne un en un editor hexadecimal i la estructura és visible en text pla a les primeres línies. Obriu-ne un en un visualitzador i les capes es renderitzen juntes com una sola pàgina.
Aquesta guia és una referència etiquetada: l'estructura física del fitxer, les capes de contingut que conté un cos, les metadades que ho envolten tot i els estàndards (PDF/A, PDF/X, PDF/UA, PDF/E, PDF/VT) que el limiten per a casos d'ús específics.

Vols utilitzar aquest diagrama al teu blog? Copia aquest codi d'incrustació:
Les Quatre Seccions Físiques
Cada PDF al disc té la mateixa estructura de quatre parts, en aquest ordre:
1. Capçalera (Header)
La primera línia del fitxer. Sempre comença amb %PDF- seguit d'un número de versió:
%PDF-1.7Les versions van des de 1.0 (alliberat el 1993) fins a 2.0 (alliberat el 2017, actual). La capçalera va seguida d'una línia de comentari amb bytes binaris que indiquen a FTP i altres eines de transport que aquest és un fitxer binari.
2. Cos - Objectes Indirectes (Body - Indirect Objects)
La major part del fitxer. Cada pàgina, tipografia, imatge, anotació i camp de formulari és un objecte indirecte numerat:
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 << ... >> >>
endobjCada objecte té un ID (el número abans de 0 obj), un número de generació (0, utilitzat per a actualitzacions incrementals), i una càrrega útil entre << i >> per a diccionaris o stream i endstream per a fluxos binaris (dades d'imatge, dades de tipografia, contingut comprimit).
Els objectes es refereixen mútuament amb la sintaxi <id> <gen> R (per exemple, 3 0 R significa "objecte 3, generació 0"). Així és com una pàgina fa referència a la tipografia que utilitza, o com un catàleg fa referència a l'arrel de l'arbre de pàgines.
3. Taula de Referències Creuades (xref - Cross-Reference Table)
Una taula de cerca per desplaçament de bytes. Per a cada objecte del cos, l'xref enregistra la seva posició absoluta en bytes dins del fitxer:
xref
0 6
0000000000 65535 f
0000000017 00000 n
0000000089 00000 n
0000000172 00000 n
0000000299 00000 n
0000000453 00000 nAixò és el que fa que els PDF siguin d'accés aleatori. Un visualitzador pot llegir l'xref, saltar directament al desplaçament de bytes de l'objecte 3 i renderitzar aquesta pàgina sense analitzar la resta del fitxer. És per això que els PDF d'un sol capítol s'obren a l'instant, fins i tot quan el fitxer font té 500 pàgines.
4. Tràiler (Trailer)
La secció final. Indica a l'analitzador on trobar l'xref i quin objecte és l'arrel:
trailer
<< /Size 6 /Root 1 0 R /Info 7 0 R >>
startxref
1893
%%EOFEl valor startxref és el desplaçament de bytes de la taula xref. El marcador %%EOF és el final literal del fitxer. Els tràilers són el que fan possibles les actualitzacions incrementals: afegir un nou xref + tràiler al final permet afegir objectes sense reescriure tot el fitxer.
Les Sis Capes de Contingut
Dins del cos, el contingut s'emmagatzema en sis tipus de capes. Cada pàgina PDF renderitzada és un compost d'aquestes capes:
1. Text
Comandes de posició de glifs i referències de tipografia, no cadenes de text. Un PDF emmagatzema instruccions com "dibuixa el glif 42 de la tipografia F3 a la posició (120, 540)" en lloc de "dibuixa la lletra A aquí". Per això el text és seleccionable i cercable: el visualitzador reverteix els IDs de glif a punts de codi Unicode mitjançant un mapa ToUnicode (o un CMap per a tipografies CJK).
Quan a una tipografia li falta un mapa ToUnicode, s'obté el clàssic problema "PDF amb text seleccionable que es copia com a escombraries". El text és visible, però el mapa de glif a Unicode està trencat o absent.
2. Imatges
Emmagatzemades com a fluxos incrustats en un de diversos formats:
- JPEG (filtre DCTDecode): fotografies, el més comú
- JPEG2000 (JPXDecode): compressió més alta, menys comú
- Equivalent a PNG (FlateDecode + Predictor): captures de pantalla, art lineal
- CCITT Group 4 (CCITTFaxDecode): text escanejat en blanc i negre, utilitzat en escans d'arxiu
- JBIG2 (JBIG2Decode): imatges bívari, comú en documents OCRitzats
Les imatges es poden reduir, recomprimir o reemplaçar sense afectar altres continguts.
3. Tipografies (Fonts)
Incrustades com a programes de tipografia complets, subconjunts (només els glifs utilitzats inclosos) o referenciades per nom (han d'estar instal·lades al sistema del visualitzador). El subconjunt és el valor per defecte: redueix dràsticament la mida del fitxer. Formats de tipografia suportats: Type1, TrueType, OpenType i CIDFont (per a CJK).
Quan una tipografia es referencia però no s'incrusta i no està instal·lada al sistema del visualitzador, aquest en substitueix una de similar, que normalment no queda bé. PDF/A requereix que totes les tipografies estiguin incrustades per evitar-ho.
4. Anotacions (Annotations)
Ressaltats, comentaris, enllaços, segells, marques d'aigua i camps de formulari són totes anotacions. Es superposen al contingut de la pàgina i es poden afegir, editar o eliminar sense canviar la pàgina subjacent.
Els camps de formulari són un cas especial: una anotació de widget interactiva (la part visible) més un diccionari de camp (la part de dades). Quan empleneu un formulari i deseu, només canvien els diccionaris de camp; la pàgina en si no es modifica.
5. Gràfics Vectorials (Vector Graphics)
Línies, formes, corbes i camins dibuixats amb operadors similars a PostScript (moveto, lineto, curveto). Escalen infinitament sense pèrdua de qualitat. La majoria d'exportacions CAD, gràfics i diagrames en PDF són gràfics vectorials.
6. Signatures Digitals (Digital Signatures)
Signatures basades en PKI lligades a rangs de bytes del fitxer. El diccionari de signatura especifica "els bytes 0 a 12.547 i 14.200 fins al final del fitxer estan signats" - un petit rang al mig està reservat per al valor de la pròpia signatura. Qualsevol canvi als rangs de bytes signats invalida la signatura, que és com el PDF detecta manipulacions després de signar.
Alguns PDF tenen múltiples signatures, apilades com a actualitzacions incrementals: cada signatari signa el fitxer tal com existia quan el va rebre, preservant la cadena.
Metadades: Dos Sistemes Paral·lels
El PDF té dos sistemes de metadades que sovint discrepen:
Diccionari Estàndard /Info
Emmagatzemat al tràiler. Camps: Title, Author, Subject, Keywords, Creator (l'aplicació amb què l'usuari va crear el document), Producer (l'aplicació que va generar el PDF), CreationDate, ModDate. Cadena de text pla, fàcil de llegir amb qualsevol eina PDF.
Flux de Metadades XMP
Un flux XML separat (Adobe XMP, basat en RDF/XML) que suporta esquemes més rics: Dublin Core, IPTC, esquemes personalitzats específics del domini (perfils de color, registres de drets d'autor, versions de manuscrits).
Els generadors de PDF moderns escriuen en ambdós. Els PDF antics només tenen /Info. Alguns PDF tenen /Info obsolet d'una versió anterior i XMP precís d'una edició recent, o viceversa. Quan auditeu PDF per a compliment o forense, comproveu ambdós.
Estàndards ISO Construïts sobre PDF
La especificació base del PDF és ISO 32000. Diversos estàndards derivats limiten el PDF per a casos d'ús específics:
| Estàndard | Ús | Limitacions |
|---|---|---|
| PDF/A | Arxiu a llarg termini | Totes les tipografies incrustades, sense JavaScript, sense àudio/vídeo, espais de color independents del dispositiu. Nivells de conformitat: PDF/A-1, A-2, A-3 (permet adjunts de fitxer) |
| PDF/X | Producció d'impressió | Color CMYK, tipografies incrustades i perfils de color, sense transparència (PDF/X-1a) o amb transparència controlada (PDF/X-4) |
| PDF/UA | Accessibilitat | Arbre d'estructura etiquetat, metadades de llenguatge, text alternatiu per a imatges, ordre de lectura lògic |
| PDF/E | Enginyeria | Models 3D (formats U3D, PRC), metadades específiques de CAD |
| PDF/VT | Impressió transaccional variable | Optimitzat per a enviaments personalitzats d'alt volum |
Un PDF pot complir amb múltiples estàndards simultàniament: PDF/A-2u (arxiu amb mapa Unicode) més PDF/UA (accessibilitat) és comú per a arxius governamentals i legals.
PDF Linealitzats (Optimitzats per a Web)
Un PDF "linealitzat" o "optimitzat per a web" reordena el cos de manera que els objectes de la primera pàgina apareguin al principi del fitxer. Un visualitzador web pot renderitzar la pàgina 1 després de descarregar només els primers ~50 KB en lloc d'esperar tot el fitxer. El tràiler es duplica al principi, més una taula d'indicacions que diu al visualitzador on comença cada pàgina.
La majoria dels generadors de PDF moderns suporten la linealització com una opció "Desa per a la Web". El format afegeix un 2-5% a la mida del fitxer a canvi d'una renderització ràpida de la primera pàgina en connexions lentes.
Xifratge i Permisos
Els PDF es poden xifrar amb una contrasenya (o certificats) i se'ls poden atorgar permisos granulars: imprimir, copiar text, modificar, emplenar formularis, extreure per a accessibilitat. El xifratge s'emmagatzema al diccionari /Encrypt del tràiler.
Les fortaleses del xifratge han evolucionat: RC4 de 40 bits (PDF antics, fàcilment desxifrables avui dia), RC4 de 128 bits (encara feble), AES-128, AES-256. La implementació original RC4 d'Acrobat 5 va ser desxifrada públicament el 2001; el xifratge PDF modern (AES-256, PDF 2.0) és sòlid quan s'utilitza amb contrasenyes fortes.
Nota: Els "permisos" són consultius. Un visualitzador que els respecti els farà complir. Un visualitzador que els ignori (o una eina que elimini el xifratge) no ho fa.
Com PDFSub Llegeix PDF
PDFSub processa PDF utilitzant l'enllaç PDFium de Rust (el mateix motor que impulsa el visualitzador PDF de Chromium) més PaddleOCR per a documents escanejats. Per a detalls complets de l'arquitectura i una comparació amb eines basades en el núvol, vegeu Seguretat PDF al Navegador vs al Núvol.
Per convertir PDF a altres formats preservant l'estructura descrita anteriorment:
- PDF a Excel - extreu text + taules, preserva coordenades
- OCR PDF - afegeix una capa de text cercable a PDF escanejats
- PDF a Word - reordena el text en paràgrafs editables
- Comprimir PDF - redueix la mida de les imatges, subconjunts de tipografies
Per a fluxos de treball d'arxiu específicament, vegeu Com Convertir PDF a PDF/A.
Lectura Addicional
- ISO 32000-2 (especificació PDF 2.0) - referència autoritzada, de pagament
- Arxius de Referència PDF d'Adobe - referència gratuïta per a PDF 1.7
- PDF Association - grup de treball de la indústria, articles gratuïts i fitxers de prova de conformitat
Per a temes específics de PDF: Guia de Compliment PDF per a Advocats, Guia de Conversió PDF/A.