Kā es nedaudz pakrakoju

2010-01-28

Situācija bija tāda - vienai aplikācijai, ko taisu, ir nepieciešams, lai lietotājs no Interneta pārlūka varētu ieskenēt dokumentu un to pievienot aizpildāmajai formai. Diemžēl PHP ar skeneri pa tiešo sazināties nespēj, jo tam ir pieejami tikai servera un nevis klienta resursi (proti, skenerim būtu jābūt pieslēgtam pie servera un nevis pie lietotāja datora), līdz ar to bija nepieciešams kāds viltīgāks risinājums. Tā kā sistēmas darbības vide ir specifiska (brīnišķīgais pārlūks, kas saucas IE), tad izlēmu, ka kāds ActiveX balstīts risinājums būs ok. Un vienu tādu arī atradu, kas gana veiksmīgi tika galā ar saviem pienākumiem. Taču tur bija viena bēda - kad saglabā iegūto dokumentu JPG failā (šāda funkcionalitāte tiek nodrošināta), tam tiek uzlikta virsū informācija, ka izmantota programmas demo versija - dokumenta augšā tiek pierakstīts, ka izmantota demo versija. Un tas neizskatās diez ko glīti. Lai šo sistēmu apietu, atradu ļoti vienkāršu, bet pietiekami elegantu risinājumu, papildinot funkcionalitāti, kas tiek veikta, saglabājot failu (man ir pieeja tikai Javascript fragmentam, kas definē, kuras Visual Basic funkcijas izsaukt katras pogas nospiešanas gadījumā, bet pašām funkcijām klāt netieku:
1) spiežot saglabāt, saglabāju failu ar info tekstu augšā
2) uzreiz pēc tam pagriežu sākotnējo failu par 180 grādiem (tāda iespēja ir pieejama) un saglabāju arī to, ar līdzīga nosaukuma failu
3) rezultātā esmu ieguvis 2 JPG failu, no kuriem vienam aizsardzības teksts ir augšā, otram - apakšā
4) izsaucu neredzamā ifreimā PHP lapu, kura veic sekojošas darbības - pagriež otro bildu par 180 grādiem, tā ka tagad abas bildes ir vienādas, tikai vienai augšā ir drošības teksts, bet otrai - apakšā (un pagriezts par 180 grādiem)
5) salīmēju abas bildes kopā - augšu ņemu no tās, kurai drošības teksts ir apakšā, apakšu - no otras. Rezultātā iegūta bilde, kurā nav drošības koda nekur.
Protams, šāda sistēma nedarbotos, ja watermark būtu izvietots sākotnējās bildes centrā, jo tur nekāda rotēšana nelīdzetu.