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.

Das war die lauteste Beschwerde über zwei dieser Formate — und dieser Konverter hatte sie auch.

Was passiert ist

Ein Export legt seine Bilder in Ordner und verlinkt sie relativ: Notion neben jeder Seite, Confluence unter attachments/, Obsidian dort, wo Sie sie abgelegt haben. Aus dem Archiv wurde nur der Text gelesen, also stand im Markdown weiterhin ![](irgendein/pfad.png) über Dateien, die nie entpackt wurden — zwanzig kaputte Bilder in einem konvertierten Wiki, was so aussieht, als hätte dieses Werkzeug sie verloren, statt sie nie gehabt zu haben.

Bei PowerPoint war es auf stillere Weise schlimmer: eine Folie, die nur ein Diagramm war, sagte das und ging weiter. Word war der seltsamste der vier Fälle, denn mammoth liest die Bilder einer .docx aus der Datei und übergibt jedes einzelne — und eine vor Jahren gesetzte, nirgends kommentierte Zeile warf sie weg.

Getragen, nicht hochgeladen

Ein Bild wird Teil des Dokuments, mit seinen eigenen Bytes. Das ist die Randbedingung und keine Abkürzung: jede Konvertierung hier verspricht, dass die Datei im Browser bleibt, und die Bilder unterwegs in einen Speicher zu legen, würde das unwahr machen. Es heißt auch, dass sie mitreisen — in das heruntergeladene Markdown, in das eigenständige HTML, in den Word-Export, in einen geteilten Link.

Es gibt eine Obergrenze, und sie ist nicht unsere

Ein Dokument muss in 4 MB passen, um in einem Konto gespeichert zu werden; die Bilder teilen sich die Hälfte davon und dürfen einzeln ein Megabyte wiegen. Darüber behält ein Bild aus einem Archiv den Link, den es ohnehin hatte — verloren geht nichts, was nicht vorher schon verloren war — und eines ohne Datei dahinter wird durch seine eigene Beschreibung ersetzt.

Was den Entwurf verändert hat

Der naheliegende Weg für Words Bilder war, sie einfach nicht mehr zu verwerfen. Gemessen an einem 3,5-MB-Dokument mit drei Fotos ergab das 4,7 MB HTML in 224 ms — und lief dann nicht zu Ende: ein <img>, dessen Adresse zwei Millionen Zeichen lang ist, ist nicht das, wofür ein HTML-Parser gebaut ist. Die Bytes kommen ihm jetzt gar nicht mehr nahe: jedes Bild wird beim Lesen gewogen, unter einer Nummer beiseitegelegt und wieder eingesetzt, wenn das Markdown klein ist. Sechzig Millisekunden.