Il primo tentativo l’ho fatto come lo farebbe chiunque: prendo la posizione della barra di scorrimento di sinistra, la copio in quella di destra, fine. Ha funzionato per una decina di minuti, cioè finché ho provato con due documenti davvero diversi.
Il problema è che la posizione di scorrimento non è una posizione nel documento. È una misura in pixel che dipende dal fattore di zoom, dall’altezza della finestra e dalle dimensioni fisiche delle pagine. Due edizioni dello stesso libro con formati pagina diversi hanno altezze totali diverse, quindi la stessa percentuale di scorrimento cade in due punti diversi del testo. E la deriva non è costante: cresce man mano che scendi, che è il modo peggiore in cui un difetto possa comportarsi, perché all’inizio sembra tutto a posto.
La correzione è concettuale prima che tecnica. Quello che i due riquadri si scambiano non è uno scorrimento, è una posizione espressa in unità di pagina: numero di pagina più la frazione di pagina visibile. Con quella grandezza il riquadro che riceve non deve interpretare niente, calcola dove cade quel punto con il proprio zoom e le proprie pagine, e i due documenti restano allineati anche se uno è impaginato a 7 pollici e l’altro a 10.
Restava il caso più interessante, che è anche il mio: le due edizioni non hanno lo stesso numero di pagine. La traduzione inglese del mio libro ne ha una decina in più, sparse, perché qualche capitolo si è allungato. Allineare pagina 40 con pagina 40 è giusto all’inizio del libro e sbagliato alla fine.
Qui ho copiato un’idea da uno strumento che uso da vent’anni, WinMerge, che per i file di testo ha i punti di sincronizzazione: dici tu che questa riga di sinistra corrisponde a quella riga di destra, e il confronto si riallinea da lì in avanti. Tradotto sui PDF: dichiari che pagina 41 del documento A corrisponde a pagina 43 del documento B, e da quel punto la corrispondenza tiene conto dello scarto. Dove un documento ha pagine che l’altro non ha, il riquadro mostra un vuoto invece di far scivolare tutto il resto.
La parte che mi ha divertito di più è stata evitare di far dichiarare quei punti a mano. Quasi tutti i PDF seri hanno i segnalibri, e i segnalibri sono già una mappa del documento. Se il capitolo 3 esiste in entrambi i file, quello è un punto di sincronizzazione e il programma può dedurlo da solo.
Il guaio è che i due documenti sono in lingue diverse, quindi i titoli non coincidono mai per confronto letterale. “Chapter 3” e “Capitolo 3” e “Fejezet 3” sono lo stesso posto, e per accorgersene bisogna riconoscere il prefisso e tenersi il numero. Oggi il riconoscimento copre quattordici lingue, e la stessa tabella serve anche per appaiare le sezioni che un numero non ce l’hanno: l’indice si chiama “Indice”, “Contents” o “Tartalomjegyzék” a seconda di dove sei, ma è sempre l’indice.
Il risultato è che apri due edizioni, non configuri niente, e i punti di aggancio ci sono già. Quando non bastano, li aggiungi tu con una scorciatoia da tastiera, come faresti in un diff.
La lezione che mi porto dietro è che la sincronizzazione non era un problema di interfaccia. Era un problema di modello del documento: finché i due riquadri si scambiavano pixel non c’era nessuna scorciatoia furba che potesse salvarli.
Ultima modifica 20/07/2026