qué hay dentro de un archivo pdf
Qué hay realmente dentro de un archivo PDF
Abre un PDF en un editor de texto y encontrarás algo más parecido al volcado de una base de datos que a un documento. Casi todas las rarezas de este formato salen de ese único hecho.
01
Objetos, no páginas
Un archivo PDF es una colección numerada de objetos. Cada uno es un diccionario, un flujo de bytes, una matriz, un número o una cadena, y cada uno tiene un identificador. Los objetos se refieren unos a otros por número: el objeto 3 dice "mi contenido está en el objeto 47", el objeto 47 dice "mi tipografía es el objeto 12".
Uno de esos objetos es el catálogo, la raíz de todo. Apunta a un árbol de páginas. El árbol de páginas apunta a los objetos de página. Cada objeto de página apunta a un flujo de contenido y a un diccionario con los recursos que ese flujo necesita: tipografías, imágenes, espacios de color.
No hay ningún objeto llamado "párrafo", ni ningún objeto llamado "título". La estructura se acaba en la página. Todo lo que hay por debajo son instrucciones de dibujo.
- Cabecera
- Una línea: %PDF-1.7. La versión determina qué funciones puede esperar un lector.
- Cuerpo
- Los objetos numerados. Tipografías, imágenes, definiciones de página, flujos de contenido, metadatos.
- Tabla de referencias cruzadas
- Un índice de desplazamientos en bytes: el objeto 47 empieza en el byte 91.204. Es como un lector salta directo a la página 900 de un archivo de 1.000 sin leer las 899 anteriores.
- Cola (trailer)
- Apunta al catálogo y a dónde empieza la tabla de referencias cruzadas. Es lo último del archivo, y por eso los lectores abren un PDF yendo primero al final.
02
El flujo de contenido es una lista de instrucciones
Dentro del flujo de contenido de una página hay una secuencia de operadores en notación postfija: primero los operandos y después la orden. `1 0 0 1 72 720 Tm` fija una posición de texto. `/F1 12 Tf` selecciona la tipografía F1 a 12 puntos. `(Hola) Tj` dibuja la cadena. `re` construye un rectángulo, `f` lo rellena, `Do` pinta un objeto de imagen.
Ese es el modelo entero: un pintor siguiendo órdenes, de arriba abajo. La página es lo que queda en el lienzo cuando se acaban las órdenes.
De ahí salen dos consecuencias inmediatas, y entre las dos explican muchísimo. El orden del flujo es orden de dibujo, no orden de lectura: una nota al pie puede dibujarse antes que el texto que la referencia. Y nada en el flujo dice qué *es* cada cosa. Un título es texto que resulta estar dibujado más grande.
03
Por qué el final del archivo es la parte que más importa
La tabla de referencias cruzadas es un índice de desplazamientos en bytes, y los desplazamientos en bytes son frágiles. Cambia cualquier cosa en mitad de un PDF y todos los desplazamientos posteriores se mueven. Por eso editar un PDF en un editor de texto casi siempre lo corrompe, y por eso una descarga cortada produce un archivo que no abre en absoluto aunque el 95% de su contenido haya llegado intacto.
Y por eso mismo la reparación es posible y sale bien a menudo. Cuando un lector dice que el archivo está dañado, normalmente significa que los desplazamientos están mal, no que los objetos hayan desaparecido. Una pasada de reparación ignora la tabla rota, recorre el archivo entero buscando cualquier cosa con pinta de cabecera de objeto y reconstruye el índice con lo que encuentra.
04
Actualizaciones incrementales: los PDF tienen memoria
Un PDF se puede modificar añadiendo al final. En vez de reescribir el archivo, el programa que escribe añade al final las versiones nuevas de los objetos cambiados y después una tabla de referencias cruzadas nueva que apunta a ellos y enlaza hacia atrás con la antigua. El lector usa la tabla más reciente, así que ve la versión nueva.
Los objetos viejos siguen dentro del archivo. Es deliberado: es lo que hace verificables las firmas digitales, porque puedes reconstruir exactamente qué se firmó. También es un riesgo real: un tachado hecho dibujando un rectángulo negro deja el texto de debajo completamente intacto y extraíble, y las páginas "eliminadas" muchas veces no lo están.
Guardar un PDF de cero, en vez de incrementalmente, descarta el historial. Aplanar también. Si un documento ha pasado por varias rondas de ediciones, eso conviene saberlo antes de enviarlo.
05
Qué explica todo esto
Casi todas las quejas sobre los PDF vuelven a este modelo. El texto copiado llega revuelto porque el orden del flujo de contenido es orden de dibujo. Los conversores pierden formato porque nunca hubo estructura que convertir, solo glifos colocados. Unir es rápido y sin pérdidas porque es renumerar objetos y no volver a dibujar páginas. Los archivos siguen siendo tercamente grandes porque el peso está en los objetos de imagen, y por mucho texto que quites no los tocas.
Es un formato diseñado para garantizar que una página se vea idéntica en todas partes, y lo consigue por completo. El precio es todo lo que dependa de saber qué significa esa página.