PDF-filformat - Hva er en PDF-fil?
Portable Document Format (PDF) er en type dokument laget av Adobe på 1990-tallet. Formålet med dette filformatet var å introdusere en standard for representasjon av dokumenter og annet referansemateriale i et format som er uavhengig av applikasjonsprogramvare, maskinvare og operativsystem. PDF-filformatet har full kapasitet til å inneholde informasjon som tekst, bilder, hyperkoblinger, skjemafelt, rike medier, digitale signaturer, vedlegg, metadata, geospatiale funksjoner og 3D-objekter i det som kan bli en del av kildedokumentet.
I de fleste tilfeller konverteres eksisterende dokumenter til PDF i stedet for å lage en ny PDF fra bunnen av. Men det betyr ikke at det ikke finnes programvare for opprettelse eller manipulering av PDF-filer.
(Må dele noe om PDF-filformat? Du kan legge ut funnene dine i delen PDF File Format News.)
PDF-filformat – kort historie
En rask gjennomgang av tidslinjen om PDF-filformatet når det gjelder tidslinjen er som følger:
1993 - Adobe Systems gjorde PDF-spesifikasjonene tilgjengelig gratis
2008 - PDF ble utgitt som en åpen standard 1. juli 2008 og ble utgitt av International Organization for Standardization som ISO 32000-1:2008.
2008 - Adobe publiserte en offentlig patentlisens til ISO 32000-1-formatet royaltyfrie rettigheter for alle patenter eid av Adobe som er nødvendige for å lage, bruke, selge og distribuere PDF-kompatible implementeringer.
Den første versjonen av PDF utpekt som PDF 1.0 som senere gikk gjennom revisjoner opp til PDF 1.7. PDF 1.7, som ble ISO 32000-1, inkluderer noen ikke-standardiserte proprietære teknologier så vel som Adobe XML Forms Architecture (XFA) og JavaScript-utvidelse for Acrobat. Det var 28. juli 2017 da PDF 2.0, kjent som ISO 32000-2:2017, ble publisert som ikke inkluderer noen ikke-standardiserte teknologier.
Spesifikasjoner for PDF-filformat
En PDF-fil er et sett med byte som kan grupperes i tokens i henhold til syntaksregler definert av PDF-spesifikasjoner. Én eller flere tokens kombineres for å danne syntaktiske enheter på høyere nivå, hovedsakelig objekter, som er de grunnleggende dataverdiene som et PDF-dokument er konstruert fra.
Filstruktur for PDF-filer
PDF-filens innhold er ordnet i følgende rekkefølge inne i filen.
|Header |Body |Cross-Reference Table |Trailer
PDF-filoverskrift
Uavhengig av PDF-versjonen starter en PDF-fil med en overskrift som inneholder en unik identifikator for PDF og versjonen av formatet som %PDF-1.x hvor x varierer fra 1-7.
Filtekst
Brødteksten til en PDF-fil består av en sekvens av indirekte objekter som representerer innholdet i et dokument. Objektene, som beskrevet ovenfor, representerer komponenter av dokumentet som fonter, sider og samplede bilder. Fra og med PDF 1.5 kan brødteksten også inneholde objektstrømmer, som hver inneholder en sekvens av indirekte objekter.
Kryssreferansetabell
Kryssreferansetabellen inneholder informasjon som tillater tilfeldig tilgang til indirekte objekter i filen, slik at hele filen ikke trenger å leses for å finne et bestemt objekt. Tabellen skal inneholde en én-linjes oppføring for hvert indirekte objekt, som spesifiserer byteforskyvningen til det objektet i selve filen. (Fra og med PDF 1.5 kan noe eller all kryssreferanseinformasjon alternativt være inneholdt i kryssreferansestrømmer.
File Trailer
Traileren til en PDF-fil gjør det mulig for en tilpasset leser å raskt finne kryssreferansetabellen og visse spesielle objekter. Konforme lesere bør lese en PDF-fil fra slutten. Den siste linjen i filen skal bare inneholde slutten av filen, %%EOF. De to foregående linjene skal inneholde, én per linje og i rekkefølge, nøkkelordet startxref og byteforskyvningen i den dekodede strømmen fra begynnelsen av filen til begynnelsen av xref-nøkkelordet i den siste kryssreferansedelen.
PDF-objekter
En PDF-fil inneholder flere forskjellige typer objekter som er av følgende typer
- Boolske verdier - representerer betinget sann eller usann
- Tall - Heltall og reelle verdier
- Strenger - inneholder tegn innenfor parentes
- Navn - start med en frem-/tegn f.eks. /ASomewhatLongerName resulterer i ASomewhatLongerName
- Matriser - PDF støtter endimensjonale matriser. Matriser med høyere dimensjoner kan konstrueres ved å bruke matriser som nestede elementer
- Ordbøker - samling av objekter som nøkkel-verdi-par. Den kan ha null oppføringer.
- Strømmer - representerer sekvens av byte som også kan være av ubegrenset lengde
- Nullobjekt - representerer en nullverdi
Det kan være andre andre objekter som kommentarer som introduseres med %-tegnet og kan inneholde 8-biters tegn.
Indirekte objekter
Ethvert objekt i en PDF-fil kan merkes som et indirekte objekt. Indirekte objekter gis unik objektidentifikator som andre objekter kan referere til det. Kryssreferanser til disse opprettholdes i en indekstabell og merkes med xref-nøkkelordet som følger hoveddelen og gir byte-forskyvningen til hvert indirekte objekt fra starten av filen.
Lineære og ikke-lineære PDF-oppsett
PDF-oppsett er kategorisert som Llnear og ikke-lineære avhengig av målapplikasjonene og andre faktorer.
Ikke-lineær - Ikke-lineære PDF-filer bruker mindre diskplass sammenlignet med lineære PDF-filer. PDF-sider av dokumentet ligger i spredt form over PDF-filen, og det er grunnen til at ikke-lineære filer er tregere sammenlignet med lineære filer.
Lineær PDF - Lineære PDF-filer er rettet mot online PDF-visere, konstruert på en slik måte at de skrives til disk på en lineær måte. Dette krever ikke nettleserplugins for at hele dokumentet skal lastes først før visning.
Objektoversikt
Som nevnt er PDF body en samling av objekter nevnt ovenfor. PDF er i stor grad basert på PostScript uten kontrollfunksjonene til programmeringsspråk som if og loop-kommandoer. Kommandoer utstedt av Postscript-kode for å generere grafisk innhold samles inn og tokeniseres i tillegg til alle filer, grafikk eller fonter som dokumentet refererer til. Alt dette innholdet akkumuleres til en enkelt fil, noe som resulterer i komponert PostScript-utdata.
Tekst
Tekst i PDF er representert av tekstelementer som faktisk vises med glyfer fra fonter. En glyph er en grafisk form og er gjenstand for alle grafiske manipulasjoner, for eksempel koordinattransformasjon. På grunn av viktigheten av tekst i de fleste sidebeskrivelser, gir PDF fasiliteter på høyere nivå for å beskrive, velge og gjengi glyfer på en praktisk og effektiv måte.
Grafikk
Grafikkoperatørene som brukes i PDF-innholdsstrømmer beskriver utseendet til sider som skal reproduseres på en rasterutdataenhet. Fasilitetene er beregnet for både skriver- og displayapplikasjoner. Grafikkoperatørene danner seks hovedgrupper:
- Grafikktilstandsoperatører manipulerer datastrukturen kalt grafikktilstanden, det globale rammeverket som de andre grafikkoperatørene utfører. Grafikktilstanden inkluderer gjeldende transformasjonsmatrise (CTM), som kartlegger brukerplasskoordinater som brukes i en PDF-innholdsstrøm til utdataenhetskoordinater. Den inkluderer også gjeldende farge, gjeldende beskjæringsbane og mange andre parametere som er implisitte operander av malerioperatørene.
- Banekonstruksjonsoperatører spesifiserer stier, som definerer former, linjebaner og regioner av ulike slag. De inkluderer operatører for å starte en ny bane, legge til linjesegmenter og kurver til den og lukke den.
- Operatører for banemaling fyller en bane med en farge, maler et strøk langs den, eller bruker den som en klippegrense.
- Andre maleoperatører maler visse selvbeskrivende grafikkobjekter. Disse inkluderer samplede bilder, geometrisk definerte skygger og hele innholdsstrømmer som igjen inneholder sekvenser av grafikkoperatører.
- Tekstoperatører velger og viser tegnglyfer fra fonter (beskrivelser av skrifttyper for å representere teksttegn). Fordi PDF behandler glyfer som generelle grafiske former, kan mange av tekstoperatorene grupperes med grafikktilstanden eller malerioperatorene. Imidlertid er datastrukturene og mekanismene for å håndtere glyf- og skriftbeskrivelser tilstrekkelig spesialiserte.
- Operatører for merket innhold knytter logisk informasjon på høyere nivå til objekter i innholdsstrømmen. Denne informasjonen påvirker ikke det gjengitte utseendet til innholdet; det er nyttig for programmer som bruker PDF for dokumentutveksling.