comment fonctionne la fusion de pdf
Comment fonctionne vraiment la fusion de deux PDF
Les deux fichiers ont un objet numéroté 1. Cette seule collision est toute la raison pour laquelle fusionner est plus que concaténer, et elle explique tout ce qui survit à l'opération et tout ce qui n'y survit pas.
01
Pourquoi on ne peut pas simplement coller un fichier après l'autre
Un PDF est un ensemble d'objets numérotés plus un index indiquant où chacun commence. Les deux fichiers numérotent leurs objets à partir de 1. Les deux ont un catalogue, un arbre de pages et un dictionnaire de polices appelé F1. Concaténez les octets et vous obtenez deux index concurrents décrivant deux objets 1 concurrents, et le lecteur qui ouvrira cela verra celui qu'il trouve en dernier — c'est-à-dire uniquement le second document.
La fusion doit donc réécrire. Chaque objet du second fichier est copié dans le premier avec un numéro neuf, et chaque référence à l'intérieur de ces objets est réécrite pour pointer vers les nouveaux numéros. Une page qui disait « mon contenu est dans l'objet 12 » dit désormais « mon contenu est dans l'objet 847 ».
Ensuite les deux arbres de pages sont greffés en un seul, une nouvelle table de références croisées est construite avec les décalages corrects pour tout, et un nouveau trailer est écrit qui pointe vers le catalogue survivant.
- 1. Analyser les deux
- Lire les graphes d'objets et les arbres de pages. Rien n'est rendu.
- 2. Renuméroter et copier
- Chaque objet du fichier B reçoit un identifiant neuf, et chaque référence vers lui est réécrite.
- 3. Greffer les arbres de pages
- Construire un seul arbre, dans l'ordre que vous avez demandé. Les pages elles-mêmes ne sont pas touchées.
- 4. Reconstruire l'index
- De nouveaux décalages pour chaque objet, un nouveau trailer, un nouveau fichier.
02
Pourquoi fusionner ne coûte jamais de qualité
Rien n'est décodé. Les flux d'images sont copiés octet par octet, encore dans l'encodage dans lequel ils sont arrivés. Les flux de contenu sont copiés inchangés. Les polices sont copiées inchangées.
C'est là toute la raison pour laquelle la fusion est sans perte et rapide. Fusionner 500 pages est un exercice de comptabilité portant sur quelques centaines de milliers de références entre objets, et une machine moderne le fait en une seconde ou deux. Comparez à la compression, qui doit décoder et réencoder chaque image du fichier.
Cela signifie aussi qu'un fichier fusionné est exactement aussi bon et aussi mauvais que ses entrées. Fusionner un scan flou avec un export net donne un document flou sur la moitié. Rien ne se normalise.
03
Ce qu'il faut réparer en chemin
Renuméroter des objets est mécanique. Tout ce qui référençait ces objets par nom plutôt que par numéro ne l'est pas.
- Signets et sommaire
- L'arbre des signets pointe vers des objets page. Il faut le reconstruire et le repointer, sinon les signets du second document atterrissent sur les pages du premier — ou disparaissent.
- Liens internes
- Les renvois et les sauts du sommaire sont des destinations qui pointent vers des objets page, et ils demandent le même remappage que les signets.
- Champs de formulaire
- Les champs sont adressés par nom. Fusionnez deux exemplaires du même formulaire et vous vous retrouvez avec deux champs nommés `nom`, que la plupart des lecteurs traitent comme un seul champ en remplissant les deux. Aplatir avant l'évite.
- Ressources dupliquées
- Les deux fichiers embarquent Helvetica en sous-ensemble sous des noms internes différents. Rien ne peut prouver que les sous-ensembles sont interchangeables, alors les deux voyagent — et c'est pourquoi un fichier fusionné pèse parfois plus que la somme de ses parties.
04
Le chiffrement doit sortir en premier
Dans un PDF chiffré, les flux et les chaînes sont chiffrés individuellement, avec une clé par objet dérivée de la clé de chiffrement du fichier combinée au numéro et à la génération de cet objet. Le numéro de l'objet fait partie de la clé.
Ce qui veut dire que renuméroter un objet chiffré l'invalide en silence. Pour fusionner, l'outil doit d'abord déchiffrer avec la clé du fichier, copier les objets en clair, les renuméroter et chiffrer le résultat sous une clé neuve si la sortie doit être protégée. C'est pourquoi un outil de fusion demande le mot de passe au lieu de le contourner, et pourquoi la sortie ressort non chiffrée à moins que vous ne la reprotégiez ensuite.
05
Diviser, c'est la même opération à l'envers
Diviser construit un fichier neuf contenant seulement les pages que vous avez demandées, plus chaque objet que ces pages atteignent : leurs flux de contenu, leurs polices, leurs images, et rien d'autre. C'est un parcours de graphe à partir d'un ensemble de racines.
C'est pourquoi couper en deux un document de 100 pages donne rarement deux fichiers de moitié moins gros. Si une police ou un logo sert sur des pages éparpillées dans le document, les deux moitiés ont besoin de leur propre copie. Les ressources partagées sont dupliquées, pas divisées.