PDF

This work by pixabay is marked with CC0 1.0

O PDF

Prenosna oblika dokumenta- Portable Document Format (PDF) je vrsta dokumenta, ki ga je Adobe ustvaril v devetdesetih letih prejšnjega stoletja. Namen tega zapisa datoteke je bil uvesti standard za predstavitev dokumentov in drugega referenčnega gradiva v obliki, ki je neodvisna od aplikativne programske opreme, strojne opreme in operacijskega sistema. Torej format svoje storitve omogoča ne glede na to, kakšno strojno in programsko opremo ima računalnik ter kakšen je operacijski sistem. Datoteke PDF je mogoče odpreti v programu Adobe Acrobat Reader/Writer, pa tudi v večini sodobnih brskalnikov, kot so Chrome, Safari, Firefox, prek razširitev-vtičnikov. Večina komercialno dostopnih programov ponuja tudi pretvorbo svojih dokumentov v format datoteke PDF brez potrebe po dodatnih komponentah programske opreme. Tako ima format datoteke PDF v celoti možnost, da vsebuje informacije, kot so besedilo, slike, hiperpovezave, polja obrazcev, obogateni mediji, digitalni podpisi, priloge, metapodatki, geoprostorske funkcije in 3D predmeti, ki lahko postanejo del izvornega dokumenta.[1] Torej PDF ohranja formate pisav, formatiranje, barve in grafiko, kar imanujemo wysiwyg, kar pa HTML recimo ne omogoča. Tako PDF ni zamenjava za HTML, ampak je njegova dopolnitev. [2] V večini primerov se obstoječi dokumenti pretvorijo v PDF in ne ustvarijo novega PDF iz nič. A to še ne pomeni, da ni programske opreme za ustvarjanje ali obdelavo datotek PDF. Adobe Writer je ena izmed Adobejevih lastnih programov za ustvarjanje PDF datotek. [1]

This work by pixabay is marked with CC0 1.0

Stiskanje PDF datotek

PDF je zelo podoben PostScriptu, njegovemu predhodniku, a je od njega bolj učinkovit, saj ima možnost stiskanja vsebine. Datoteke PDF so lahko dokaj kompaktne, veliko manjše od enakovrednih datotek v PostScriptu. To dosežemo zaradi zelo učinkovitih algoritmov stiskanja, ki jih podpira PDF. Seznam algoritmov stiskanja, ki jih je mogoče uporabiti, je obsežen:

 

  • CCITT G3/G4 – uporablja se za enobarvne (črno-bele) slike. Gre za isti algoritem stiskanja, ki se uporablja tudi v faks napravah. Je brezizguben, kar pomeni, da ne bo vplival na kakovost vaših slik. Acrobat ponuja stiskanje CCITT skupine 3 ali skupine 4. Nekako je skupina CCITT 4 (G4) bolj primerna od G3, saj je lahko ves čas vklopljena. [3] Stiskanje G3 in G4 sliko obravnavata kot vrsto vodoravnih črnih trakov na beli strani. Boljše stiskanje dosežemo, če je na strani manj unikatnih črnih pik ali črt. Tako G3-2D kot G4 dodata dvodimenzionalno funkcijo za doseganje večje kompresije z izkoriščanjem vertikalne simetrije. [4]
  • JPEG – algoritem z izgubami, ki se uporablja za stiskanje slik (postopek stiskanja si lahko pogledate tukaj)
  • Flate – se uporablja za stiskanje besedila in slik, ki je kar zapleten algoritem stiskanja
  • JBIG2 – alternativa stiskanju CCITT za enobarvne slike
  • LZW – uporablja se za stiskanje besedila in slik, vendar ga zamenja Flate. Gre za algoritem, kjer lahko osnovno stiskanje zmanjša velikost datoteke PDF na približno polovico enakovredne datoteke PostScript.
  • RLE (Run Length Encoding) – uporablja se za enobarvne slike, algoritem brez izgub
  • ZIP – uporablja se za sivine ali barvne slike, je nekoliko pametnejša različica stiskanja LZW in je algoritem brez izgub [3]

Malo bolj podrobno bom predstavila algoritem LZW. Vse skupaj bom predstavila tudi na primeru.

LZW

LZW je najpopularnejša različica algoritma LZ78, ki ga je razvil Terry A. Welch v članku leta 1984. Glavna značilnost algoritma je odpravljanje drugega dela žetona, tako da žeton vsebuje le indeks slovarja. Zaradi tega moramo na začetku inicializirati slovar z vsemi znaki abecede. Pri tipičnih 8–bitnih znakih ASCII moramo v slovarju napolniti prvih 256 mest, ki ustrezajo vrstnemu redu kod ASCII, preden začnemo brati vhodni tok. Ker slovar inicializiramo z vsemi znaki abecede, bomo pri branju vhodnega toka že imeli posamezne znake v slovarju in zato potrebujemo v žetonu samo podatek o indeksu. [5]

Kodirnik inicializira slovar in prazni niz I. Začnemo brati posamezne znake x iz vhodnega toka in preiščemo slovar, ali vsebuje niz Ix, kjer sta niz I in znak x združena. Če najdemo niz Ix v slovarju, potem nizu I dodelimo vrednost niza Ix in nadaljujemo z naslednjim vhodnim znakom. Kadar niza Ix ne najdemo v slovarju, naredimo sledeče: v izhodni tok zapišemo žeton z indeksom niza I iz slovarja, v slovar na naslednje mesto vstavimo vnos z nizom Ix in nizu I dodelimo vrednost znaka x. [5]

Primer: Imamo slovar velikosti 512, ki ga inicializiramo od mesta 0 do 255 z znaki ASCII. Poskušamo zakodirati sporočilo AACAACABCABACADDDDC.

 

Korak Niz I Vhodni znak x Združen niz Ix Ali je niz Ix v slovarju? Novi vnos v slovar Izhodni žeton Novi niz I
1 / A A DA / / A
2 A A AA NE 256-AA (97) A
3 A C AC NE 257-AC (97) C
4 C A CA NE 258-CA (99) A
5 A A AA DA / / AA
6 AA C AAC NE 259-AAC (256) C
7 C A CA DA / / CA
8 CA B CAB NE 260-CAB (258) B
9 B C BC NE 261-BC (98) C
10 C A CA DA / / CA
11 CA B CAB DA / / CAB
12 CAB A CABA NE 262-CABA (260) A
13 A C AC DA / / AC
14 AC A ACA NE 263-ACA (257) A
15 A D AD NE 264-AD (97) D
16 D D DD NE 265-DD (100) D
17 D D DD DA / / DD
18 DD D DDD NE 266-DDD (256) D
19 D C DC NE 267-DC (100) C
20 C EOF / / / (99) /

Iz zgornjega primera dobimo rezultat kodiranja, množico žetonov (97), (97), (99), (256), (258), (98), (260), (257), (97), (100), (265), (100), (99). Konec vhodnega toka smo ponazorili z znakom EOF, kjer smo končali in zapisali zadnji žeton. Ker smo za naš primer izbrali 9–bitne žetone, končna velikost zakodiranega niza znaša 13 × 9 = 117 bitov v primerjavi s prvotno velikostjo 152 bitov. Praktične implementacije navadno izberejo žetone velikosti 16 bitov, kar znaša slovar z velikostjo 65536 vnosov. 

(Visited 33 times, 1 visits today)
Dostopnost