Bakgrund
Cirratoservern samlar statistik på precis allt som rör organisationens utskrifter – ända ner till användarnivå. Man kan enkelt se var i systemet kostnader uppstår, om utskrifter sker på det mest kostnadseffektiva sättet, vilken typ av utskrifter olika avdelningar eller olika användare skriver ut. Statistiken kan exporteras till den statistiklösning eller det affärssystem man valt och kan där användas för analyser av hur företagets utskriftsresurser används och se var besparingar är möjliga.
För att ytterligare förbättra insamlingen av statistik ville man lägga till en funktion (parser) i Cirrato som kontrollerar hur många färg- respektive gråskale-sidor varje utskriftsjobb innehåller.
Lösning
Sogeti genomförde en förstudie, där man kom fram till att den bästa lösningen var att med hjälp av en DLL konvertera den PostScript-kod, som representerar användarens dokument till en bildfil. Ur denna bildfil kan man sedan få fram information om färginnehåll och antal sidor.
Resultat
Sogeti implementerade ett bibliotek med funktioner i C++ för att göra konverteringen och plocka ut information om färginnehåll och antal sidor med hjälp ett färdigt grafikbibliotek. Fokus lades på att göra funktionen säker så att man alltid får korrekt statistik. Lösningen gjordes också trådsäker, så att den kan arbeta parallellt med flera dokument.
Teknik
Biblioteket (statisk flertrådad. LIB) med funktioner för C och C++ togs fram i Microsoft Visual Studio 2005. En DLL från företaget OakDoc användes för att tolka PostScript-kod och generera en multi-page TIFF-fil. Ur denna bild fick man fram färginformation och antal sidor med hjälp av grafikbiblioteket ImageMagick. Då den DLL-fil, som användes för konverteringen inte var trådsäker, skapas en process för varje tråd som anropar parser-biblioteket. Denna process kommunicerar resultaten tillbaka via namngivna pipes.