PDF-filformat forklaret: Anatomi, lag og standarder
Hvad er der faktisk inde i en PDF? Et mærket diagram og ordliste, der dækker de fire fysiske sektioner (header, body, xref, trailer), de seks indholdslag (tekst, billeder, skrifttyper, annotationer, vektorer, signaturer), metadata og ISO-standarderne (PDF/A, PDF/X, PDF/UA, PDF/E, PDF/VT), der er bygget ovenpå.
En PDF er ikke én ting. Det er en binær container med en specifik struktur på disken, et sæt indholdslag stablet inde i den container og en familie af ISO-standarder bygget oven på basis-specifikationen. Åbn en i en hex-editor, og strukturen er synlig i klartekst på de første par linjer. Åbn en i en viewer, og lagene gengives sammen som en enkelt side.
Denne guide er en mærket reference: den fysiske filstruktur, indholdslagene en body indeholder, metadataene, der omgiver alt, og standarderne (PDF/A, PDF/X, PDF/UA, PDF/E, PDF/VT), der begrænser den til specifikke anvendelsestilfælde.

Vil du bruge dette diagram på din blog? Kopier denne indlejringskode:
De Fire Fysiske Sektioner
Enhver PDF på disken har den samme fire-delte struktur, i denne rækkefølge:
1. Header
Filens første linje. Starter altid med %PDF- efterfulgt af et versionsnummer:
%PDF-1.7Versioner spænder fra 1.0 (udgivet 1993) til 2.0 (udgivet 2017, aktuel). Headeren efterfølges af en kommentarlinje med binære bytes, der signalerer til FTP og andre transportværktøjer, at dette er en binær fil.
2. Body - Indirekte Objekter
Hovedparten af filen. Hver side, skrifttype, billede, annotation og formularfelt er et nummereret indirekte objekt:
1 0 obj
<< /Type /Catalog /Pages 2 0 R >>
endobj
2 0 obj
<< /Type /Pages /Kids [3 0 R] /Count 1 >>
endobj
3 0 obj
<< /Type /Page /Parent 2 0 R /Contents 4 0 R /Resources << ... >> >>
endobjHvert objekt har et ID (nummeret før 0 obj), et generationsnummer (0, brugt til inkrementelle opdateringer) og en nyttelast mellem << og >> for ordbøger eller stream og endstream for binære streams (billeddata, skrifttypedata, komprimeret indhold).
Objekter refererer til hinanden med <id> <gen> R syntaksen (f.eks. 3 0 R betyder "objekt 3, generation 0"). Dette er, hvordan en side refererer til den skrifttype, den bruger, eller hvordan et katalog refererer til roden af sidetræet.
3. Krydsreference-tabel (xref)
En byte-offset opslagstabel. For hvert objekt i bodyen registrerer xref'en dets absolutte byteposition i filen:
xref
0 6
0000000000 65535 f
0000000017 00000 n
0000000089 00000 n
0000000172 00000 n
0000000299 00000 n
0000000453 00000 nDette er, hvad der gør PDF'er tilfældigt tilgængelige. En viewer kan læse xref'en, springe direkte til byte-offset for objekt 3 og gengive den side uden at parse resten af filen. Det er derfor, PDF'er af et enkelt kapitel åbner øjeblikkeligt, selv når kilde-filen er 500 sider.
4. Trailer
Den sidste sektion. Fortæller parseren, hvor xref'en skal findes, og hvilket objekt der er roden:
trailer
<< /Size 6 /Root 1 0 R /Info 7 0 R >>
startxref
1893
%%EOFstartxref-værdien er byte-offset for xref-tabellen. %%EOF-markøren er filens bogstavelige afslutning. Trailers er, hvad der muliggør inkrementelle opdateringer: at tilføje en ny xref + trailer til sidst giver dig mulighed for at tilføje objekter uden at omskrive hele filen.
De Seks Indholdslag
Inde i bodyen gemmes indhold på tværs af seks lagtyper. Hver gengivet PDF-side er en sammensætning af disse lag:
1. Tekst
Glyfpositioneringskommandoer og skrifttypereferencer, ikke tekststrenge. En PDF gemmer instruktioner som "tegn glyf 42 fra skrifttype F3 på position (120, 540)" i stedet for "tegn bogstavet A her." Derfor er tekst valgbar og søgbar: viewer'en kortlægger glyf-ID'er tilbage til Unicode-kodepunkter via en ToUnicode-mapping (eller en CMap for CJK-skrifttyper).
Når en tekst mangler en ToUnicode-mapping, får du det klassiske problem med "PDF med valgbar tekst, der kopieres som vrøvl." Teksten er synlig, men glyf-til-Unicode-mappingen er brudt eller fraværende.
2. Billeder
Gemt som indlejrede streams i et af flere formater:
- JPEG (DCTDecode filter): fotografier, mest almindelige
- JPEG2000 (JPXDecode): højere kompression, mindre almindelige
- PNG-ækvivalent (FlateDecode + Predictor): skærmbilleder, streggrafik
- CCITT Group 4 (CCITTFaxDecode): sort-hvid scanned tekst, brugt i arkivscanninger
- JBIG2 (JBIG2Decode): tofarvebilleder, almindelige i OCR'ede dokumenter
Billeder kan nedskaleres, rekomprimeres eller erstattes uden at påvirke andet indhold.
3. Skrifttyper
Indlejret som fulde skrifttypeprogrammer, delmængder (kun brugte glyffer inkluderet) eller refereret ved navn (skal være installeret på viewerens system). Delmængder er standarden - det reducerer filstørrelsen dramatisk. Understøttede skrifttypeformater: Type1, TrueType, OpenType og CIDFont (til CJK).
Når en skrifttype refereres, men ikke er indlejret og ikke er installeret på viewerens system, erstatter viewer'en en lignende skrifttype - hvilket normalt ser forkert ud. PDF/A kræver, at alle skrifttyper er indlejret for at forhindre dette.
4. Annotationer
Højdepunkter, kommentarer, links, stempler, vandmærker og formularfelter er alle annotationer. De lægges oven på sideindholdet og kan tilføjes, redigeres eller fjernes uden at ændre den underliggende side.
Formularfelter er et specialtilfælde: en interaktiv widget-annotation (den synlige del) plus en feltordbog (datadelen). Når du udfylder en formular og gemmer, ændres kun feltordbøgerne - selve siden forbliver uberørt.
5. Vektorgrafik
Linjer, former, kurver og stier tegnet med PostScript-lignende operatorer (moveto, lineto, curveto). Kan skaleres uendeligt uden kvalitetstab. De fleste CAD-eksport, diagrammer og illustrationer i PDF'er er vektorgrafik.
6. Digitale Signaturer
PKI-baserede signaturer knyttet til byteområder af filen. Signaturordbogen angiver "bytes 0 til 12.547 og 14.200 til slutningen af filen er signeret" - et lille område i midten er reserveret til selve signaturværdien. Enhver ændring i de signerede byteområder ugyldiggør signaturen, hvilket er, hvordan PDF'er opdager manipulation efter signering.
Nogle PDF'er har flere signaturer, lagdelt som inkrementelle opdateringer - hver underskriver underskriver filen, som den eksisterede, da de modtog den, og bevarer kæden.
Metadata: To Parallelle Systemer
PDF har to metadatasystemer, der ofte er uenige:
Standard /Info Ordbog
Gemt i traileren. Felter: Title, Author, Subject, Keywords, Creator (appen brugeren oprettede dokumentet i), Producer (appen, der genererede PDF'en), CreationDate, ModDate. Klartekststrenge, lette at læse med ethvert PDF-værktøj.
XMP Metadata Stream
En separat XML-stream (Adobe XMP, baseret på RDF/XML), der understøtter rigere skemaer: Dublin Core, IPTC, brugerdefinerede domænespecifikke skemaer (farveprofiler, copyright-registreringer, manuskriptversionering).
Moderne PDF-generatorer skriver til begge. Gamle PDF'er har kun /Info. Nogle PDF'er har forældet /Info fra en tidligere version og nøjagtig XMP fra en nylig redigering - eller omvendt. Ved revision af PDF'er for overholdelse eller retsmedicin, tjek begge.
ISO-standarder Bygget på PDF
Basis PDF-specifikationen er ISO 32000. Flere afledte standarder begrænser PDF til specifikke anvendelsestilfælde:
| Standard | Brug | Begrænsninger |
|---|---|---|
| PDF/A | Langtidsarkivering | Alle skrifttyper indlejret, ingen JavaScript, ingen lyd/video, farverum enhedsuafhængige. Overensstemmelsesniveauer: PDF/A-1, A-2, A-3 (tillader filvedhæftninger) |
| PDF/X | Printproduktion | CMYK-farver, indlejrede skrifttyper og farveprofiler, ingen gennemsigtighed (PDF/X-1a) eller kontrolleret gennemsigtighed (PDF/X-4) |
| PDF/UA | Tilgængelighed | Tagget strukturtræ, sprogmetadata, alt-tekst til billeder, logisk læserækkefølge |
| PDF/E | Ingeniørvidenskab | 3D-modeller (U3D, PRC-formater), CAD-specifikke metadata |
| PDF/VT | Variabel transaktionel udskrivning | Optimeret til personlige masseforsendelser |
En PDF kan overholde flere standarder samtidigt - PDF/A-2u (arkivering med Unicode-mapping) plus PDF/UA (tilgængelighed) er almindeligt for offentlige og juridiske arkiver.
Lineære PDF'er (Web-optimeret)
En "lineær" eller "web-optimeret" PDF omarrangerer bodyen, så den første sides objekter vises tidligt i filen. En web-viewer kan gengive side 1 efter kun at have downloadet de første ca. 50 KB i stedet for at vente på hele filen. Traileren duplikeres foran, plus en hint-tabel, der fortæller viewer'en, hvor hver side starter.
De fleste moderne PDF-generatorer understøtter linearisering som en "Gem til web"-indstilling. Formatet tilføjer 2-5% til filstørrelsen til gengæld for hurtig gengivelse af den første side over langsomme forbindelser.
Kryptering og Tilladelser
PDF'er kan krypteres med et kodeord (eller certifikater) og tildeles granulære tilladelser: udskriv, kopier tekst, rediger, udfyld formularer, ekstraher til tilgængelighed. Krypteringen gemmes i trailerens /Encrypt ordbog.
Krypteringsstyrker har udviklet sig: RC4 40-bit (tidlige PDF'er, trivielt knækket i dag), RC4 128-bit (stadig svag), AES-128, AES-256. Den oprindelige Acrobat 5 RC4-implementering blev offentligt knækket i 2001; moderne PDF-kryptering (AES-256, PDF 2.0) er solid, når den bruges med stærke kodeord.
Bemærk: "Tilladelser" er vejledende. En viewer, der respekterer dem, vil håndhæve dem. En viewer, der ignorerer dem (eller et værktøj, der fjerner krypteringen), gør det ikke.
Sådan Læser PDFSub PDF'er
PDFSub behandler PDF'er ved hjælp af Rusts PDFium-binding (samme motor, der driver Chromiums PDF-viewer) plus PaddleOCR til scannede dokumenter. For fulde arkitekturdetaljer og en sammenligning med cloud-baserede værktøjer, se Browser vs Cloud PDF Security.
Til konvertering af PDF'er til andre formater, mens strukturen beskrevet ovenfor bevares:
- PDF til Excel - udtrækker tekst + tabeller, bevarer koordinater
- OCR PDF - tilføjer et søgbart tekstlag til scannede PDF'er
- PDF til Word - ombryder tekst til redigerbare afsnit
- Komprimer PDF - nedskalerer billeder, delmængder af skrifttyper
Til specifikke arkiverings-workflows, se Sådan konverteres PDF til PDF/A.
Læs Videre
- ISO 32000-2 (PDF 2.0 spec) - autoritativ reference, betalingsmur
- Adobe PDF Reference Arkiver - gratis reference for PDF 1.7
- PDF Association - branchearbejdsgruppe, gratis artikler og konformitetstestfiler
For PDF-specifikke emner: PDF Compliance Guide for Lawyers, PDF/A Konverteringsguide.