Da qualche parte oltre qualche migliaio di messaggi, «stampa l’intera conversazione» smette di essere una casella in un elenco di funzioni e diventa un problema di ingegneria. Molti lo scoprono a proprie spese: i forum sono pieni di esportazioni che restano bloccate per sempre, producono pagine bianche dopo la 500 o si bloccano del tutto. Anche noi l’abbiamo scoperto a nostre spese, quindi ecco cosa succede davvero all’interno e cosa è servito perché una conversazione di 84.000 messaggi si potesse stampare.
Perché i thread grandi mandano in crisi gli esportatori
Quasi ogni strumento che produce una bella trascrizione, il nostro compreso, alla fine chiede a un motore di browser di impaginare la conversazione e dividerla in pagine. I motori di stampa dei browser sono nati per le pagine web, non per un unico documento con anni di messaggi e migliaia di foto. Chiedigli di impaginare tutto questo in un solo passaggio e tre cose vanno storte, in ordine crescente: ci mette un’eternità, produce in silenzio pagine bianche appena la memoria scarseggia, e alla fine il processo di rendering esaurisce la memoria e muore. Una segnalazione reale che ha guidato il nostro lavoro: un’esportazione di 8.400 messaggi ha prodotto un PDF di 811 pagine, bianco dalla pagina 583 in poi. Il motore non ha dato alcun errore. Ha semplicemente smesso di disegnare.
Cosa funziona: suddividere, verificare, unire
- Suddivisione. La trascrizione esegue il rendering di al massimo 1.500 messaggi per passaggio, e ogni passaggio stampa in un proprio file parziale. Nessun singolo passaggio diventa mai abbastanza grande da arrivare al limite.
- Un controllo delle pagine bianche. Ogni parte viene ispezionata dopo la scrittura: se il motore non ha disegnato nulla, la parte viene scartata e rifatta, e una parte che continua a non disegnarsi viene divisa a metà e ritentata. Un output bianco non può arrivare al documento finale.
- Un’unione rinforzata. Le parti vengono cucite in un unico PDF, e il file unito viene verificato in scrittura contro i difetti a cui badano i veri lettori PDF. Ogni regola di quella verifica esiste perché un’esportazione davvero difettosa ce l’ha insegnata; i lettori rigorosi come Acrobat rifiutano file che quelli più tolleranti aprono senza problemi.
- Etichette, non finzioni. Un’esportazione in più parti riporta nelle intestazioni «Parte 3 di 9, messaggi da 12.001 a 13.500 su 84.000». Se qualcosa è stato omesso, il documento lo dice.
I numeri
La prova sotto sforzo per tutto questo è la conversazione di 84.000 messaggi di un utente reale, anni di messaggi con foto ovunque. Si esporta in un unico PDF completo e leggibile. Per dare la misura: lo stesso thread si esportava in 1,05 GB in una versione iniziale; il motore attuale lo produce in 164 MB, e una conversazione di 2.500 messaggi piena di foto si esporta in circa 17 secondi su un normale computer desktop.
Stamparlo davvero
Una nota onesta: la finestra di stampa stessa ha gli stessi limiti del passaggio unico di qualsiasi motore di browser, quindi per i thread molto lunghi Text2Store ti indirizza a Esporta > PDF invece di lasciar fallire la finestra, e stampi dal PDF, tutto o solo le pagine che ti servono. La guida passo passo è in esportare i messaggi di testo dell’iPhone in PDF, e la versione breve di tutta questa pagina è in stampare i messaggi di testo dell’iPhone.
Domande?
Scrivi a hello@text2store.com. Se hai un thread che sospetti sia troppo grande, saremmo sinceramente curiosi di saperlo.