Text2Store
Downloaden

Blog

Zo print je een volledig iMessage-gesprek (zelfs 84.000 berichten)

Ergens voorbij een paar duizend berichten is ‘print het hele gesprek’ geen vinkje meer in een functielijst, maar een technisch probleem. Mensen ontdekken dat op de harde manier: fora staan vol met exports die eindeloos blijven hangen, na pagina 500 lege pagina’s geven of gewoon crashen. Wij ontdekten het ook op de harde manier, dus hier is wat er binnenin echt gebeurt, en wat ervoor nodig was om een gesprek van 84.000 berichten te kunnen printen.

Waarom grote gesprekken exporters laten vastlopen

Bijna elk hulpmiddel dat een mooi transcript maakt, het onze inbegrepen, laat uiteindelijk een browserengine het gesprek opmaken en in pagina’s verdelen. De printengines van browsers zijn gebouwd voor webpagina’s, niet voor één document met jaren aan berichten en duizenden foto’s. Vraag er een om dat in één keer te pagineren en er gaan drie dingen mis, steeds erger: het duurt eindeloos, hij levert stilletjes lege pagina’s zodra het geheugen krap wordt, en ten slotte raakt het renderproces door zijn geheugen heen en sterft. Een melding uit de praktijk die ons werk vormde: een export van 8.400 berichten leverde een pdf van 811 pagina’s op die vanaf pagina 583 leeg was. De engine gaf geen foutmelding. Hij stopte gewoon met tekenen.

Wat werkt: opdelen, controleren, samenvoegen

  • Opdelen. Het transcript rendert hooguit 1.500 berichten per ronde, en elke ronde print naar een eigen deelbestand. Geen enkele ronde wordt ooit groot genoeg om tegen de grens aan te lopen.
  • Een controle op lege pagina’s. Elk deel wordt na het schrijven bekeken: heeft de engine niets getekend, dan wordt het deel weggegooid en opnieuw gedaan, en een deel dat nog steeds niet tekent wordt gehalveerd en opnieuw geprobeerd. Lege uitvoer kan het uiteindelijke document niet bereiken.
  • Een versterkte samenvoeging. De delen worden tot één pdf samengevoegd, en het samengevoegde bestand wordt bij het schrijven gecontroleerd op de fouten waar echte pdf-lezers om geven. Elke regel in die controle bestaat omdat een echte kapotte export hem ons leerde; strenge lezers zoals Acrobat weigeren bestanden die soepelere zonder morren openen.
  • Labels, geen schijn. Een export in meerdere delen zegt in de kopteksten ‘Deel 3 van 9, berichten 12.001 tot 13.500 van 84.000’. Is er iets weggelaten, dan zegt het document dat.

De cijfers

De stresstest voor dit alles is het gesprek van 84.000 berichten van een echte gebruiker, jaren aan sms’jes met overal foto’s. Het exporteert naar één complete, leesbare pdf. Ter vergelijking: hetzelfde gesprek was in een vroege versie 1,05 GB; de huidige engine maakt er 164 MB van, en een gesprek van 2.500 berichten met veel foto’s exporteert in ongeveer 17 seconden op een gewone desktop.

Het echt printen

Eén eerlijke kanttekening: het printvenster zelf heeft dezelfde grenzen van één ronde als elke browserengine, dus bij heel lange gesprekken stuurt Text2Store je naar Exporteer > PDF in plaats van het venster te laten mislukken, en print je vanuit de pdf, alles of alleen de pagina’s die je nodig hebt. De stappen staan bij iPhone-sms’jes als pdf exporteren, en de korte versie van deze hele pagina bij iPhone-sms’jes printen.

Vragen?

Mail naar hello@text2store.com. Heb je een gesprek waarvan je vermoedt dat het te groot is, dan horen we daar oprecht graag over.