Pictures survive an export

A Notion, Confluence or Obsidian export kept its pictures in the .zip and never unpacked them, so the document arrived with every image pointing at a file that was not there. A PowerPoint deck lost its slides’ pictures. A Word file lost its pictures having already handed every one of them over. All four now carry them, inside the document itself.

Era la lamentela più frequente su due di questi formati, e questo convertitore ce l’aveva anche lui.

Che cosa succedeva

Un’esportazione mette le immagini in cartelle e le collega in modo relativo: Notion accanto a ogni pagina, Confluence sotto attachments/, Obsidian dove le hai messe tu. Dall’archivio veniva letto solo il testo, così il Markdown continuava a dire ![](qualche/percorso.png) di file mai estratti — venti immagini rotte in un wiki convertito, il che sembra che lo strumento le abbia perse invece che non averle mai avute.

Con PowerPoint era peggio in modo più silenzioso: una diapositiva che era solo uno schema lo diceva e passava oltre. Word era il più strano dei quattro, perché mammoth legge le immagini di un .docx dal file stesso e le consegna tutte — e una riga scritta anni fa, mai commentata, le buttava via.

Portate, non caricate

Un’immagine diventa parte del documento, con i propri byte. È il vincolo, non una scorciatoia: ogni conversione qui promette che il file resta nel browser, e mettere le immagini in un archivio remoto lungo la strada renderebbe falsa quella promessa. Vuol dire anche che viaggiano — nel Markdown scaricato, nell’HTML autonomo, nell’esportazione in Word, in un link condiviso.

C’è un tetto, e non è nostro

Un documento deve stare in 4 MB per essere salvato in un account; le immagini si dividono la metà, al massimo un megabyte ciascuna. Oltre, un’immagine che viene da un archivio mantiene il collegamento che aveva già — non si perde nulla che non fosse già perso — e quella che non ha alcun file dietro viene sostituita dalla propria descrizione.

La parte che ha cambiato il progetto

Il modo ovvio di tenere le immagini di Word era smettere di scartarle. Misurato su un documento da 3,5 MB con tre fotografie: 4,7 MB di HTML in 224 ms, e poi più nulla — un <img> il cui indirizzo è lungo due milioni di caratteri non è ciò per cui è fatto un parser HTML. Ora i byte non gli si avvicinano: ogni immagine viene pesata mentre si legge, messa da parte sotto un numero e rimessa quando il Markdown è tornato piccolo. Sessanta millisecondi.