cómo funciona la unión de pdf
Cómo funciona de verdad unir dos PDF
Los dos archivos tienen un objeto numerado 1. Esa única colisión es la razón entera de que unir sea algo más que concatenar, y explica todo lo que sobrevive y lo que no a la operación.
01
Por qué no puedes simplemente pegar un archivo detrás del otro
Un PDF es un conjunto de objetos numerados y un índice de dónde empieza cada uno. Los dos archivos numeran sus objetos desde el 1. Los dos tienen un catálogo, un árbol de páginas y un diccionario de tipografías llamado F1. Concatena los bytes y tendrás dos índices en competencia describiendo dos objetos 1 en competencia, y el lector que lo abra verá el que encuentre en último lugar, es decir, solo el segundo documento.
Así que la unión tiene que reescribir. Cada objeto del segundo archivo se copia dentro del primero con un número nuevo, y cada referencia de dentro de esos objetos se reescribe para apuntar a los números nuevos. Una página que decía "mi contenido está en el objeto 12" pasa a decir "mi contenido está en el objeto 847".
Después los dos árboles de páginas se empalman en uno, se construye una tabla de referencias cruzadas nueva con los desplazamientos correctos para todo, y se escribe una cola nueva que apunta al catálogo superviviente.
- 1. Analizar los dos
- Leer los grafos de objetos y los árboles de páginas. No se dibuja nada.
- 2. Renumerar y copiar
- Cada objeto del archivo B recibe un identificador nuevo, y cada referencia a él se reescribe.
- 3. Empalmar los árboles de páginas
- Construir un solo árbol en el orden que pediste. Las páginas en sí no se tocan.
- 4. Reconstruir el índice
- Desplazamientos nuevos para cada objeto, cola nueva, archivo nuevo.
02
Por qué unir nunca cuesta calidad
No se descodifica nada. Los flujos de imagen se copian byte a byte, todavía con la codificación con la que llegaron. Los flujos de contenido se copian sin cambios. Las tipografías se copian sin cambios.
Esa es la razón entera de que unir sea sin pérdidas y rápido. Unir 500 páginas es un ejercicio de contabilidad sobre unos cientos de miles de referencias entre objetos, y una máquina moderna lo hace en un segundo o dos. Compáralo con comprimir, que tiene que descodificar y recodificar cada imagen del archivo.
También significa que un archivo unido es exactamente igual de bueno e igual de malo que sus entradas. Unir un escaneo borroso con una exportación nítida te da un documento borroso en una mitad. Nada se normaliza.
03
Lo que hay que reparar por el camino
Renumerar objetos es mecánico. Todo lo que se refería a esos objetos por nombre y no por número, no lo es.
- Marcadores y esquema
- El árbol de marcadores apunta a objetos de página. Hay que reconstruirlo y reasignarlo, o los marcadores del segundo documento aterrizan en las páginas del primero — o desaparecen.
- Enlaces internos
- Las referencias cruzadas y los saltos desde el índice son destinos que apuntan a objetos de página, y necesitan la misma reasignación que los marcadores.
- Campos de formulario
- Los campos se direccionan por nombre. Une dos copias del mismo formulario y tendrás dos campos llamados `nombre`, que casi todos los lectores tratan como un único campo que rellena los dos. Aplanar primero lo evita.
- Recursos duplicados
- Los dos archivos incrustan Helvetica como subconjunto con nombres internos distintos. Nada puede demostrar que los subconjuntos sean intercambiables, así que viajan los dos: por eso un archivo unido pesa a veces más que la suma de sus partes.
04
El cifrado tiene que salir primero
En un PDF cifrado, los flujos y las cadenas se cifran individualmente, con una clave por objeto derivada de la clave de cifrado del archivo combinada con el número y la generación de ese objeto. El número del objeto forma parte de la clave.
Lo que significa que renumerar un objeto cifrado lo invalida en silencio. Para unir, la herramienta tiene que descifrar primero con la clave del archivo, copiar los objetos en claro, renumerarlos y cifrar el resultado bajo una clave nueva si el archivo de salida debe ir protegido. Por eso una herramienta de unir te pide la contraseña en vez de sortearla, y por eso el resultado sale sin cifrar salvo que vuelvas a protegerlo después.
05
Dividir es la misma operación al revés
Dividir construye un archivo nuevo que contiene solo las páginas que pediste, más todos los objetos a los que esas páginas llegan: sus flujos de contenido, sus tipografías, sus imágenes, y nada más. Es un recorrido de grafo desde un conjunto de raíces.
Por eso partir en dos un documento de 100 páginas rara vez da dos archivos de la mitad de tamaño. Si una tipografía o un logotipo se usan en páginas repartidas por todo el documento, las dos mitades necesitan su propia copia. Los recursos compartidos se duplican, no se reparten.