Senest opdateret: 10 september, 2026

Hvordan fungerer komprimering inde i EPUB, DOCX, XLSX og PPTX
Hvis du omdøber en .docx, .xlsx, .pptx eller .epub fil til .zip og dobbeltklikker på den, sker der noget overraskende: den giver ikke en fejl. Dit operativsystem åbner den som en mappe fyldt med undermapper, XML-konfigurationsfiler, stilark, skrifttyper og indlejrede billeder.
Moderne dokumentarkitekturer opgav monolitiske binære klumper for årtier siden. I deres sted har industristandarder—nemlig Open Packaging Conventions (OPC) for Microsoft Office og Open Container Format (OCF) for EPUB—adopteret en overraskende elegant grundlag: det ydmyge ZIP-arkiv.
At forstå, hvordan komprimering fungerer inden i disse formater, afslører, hvorfor moderne dokumenter er så robuste, letvægtige og udvidelige—og hvorfor nogle filer komprimeres med 90 %, mens andre knap nok krymper overhovedet.
1. Containerarkitekturen: Forklædte ZIP Pakker
Før man forstår selve komprimeringsalgoritmen, er det nyttigt at forstå, hvorfor moderne dokumentformater er struktureret som pakker i stedet for selvstændige rå filer.
Problemet med ældre binære formater
I løbet af 1990’erne og begyndelsen af 2000’erne brugte Microsoft Office proprietære binære formater (.doc, .xls, .ppt). Disse filer var i bund og grund hukommelsesdump struktureret omkring Compound File Binary Format (CFBF). De var berygtet skrøbelige:
- Et enkelt bit‑flip kunne korrumpere hele filstrukturen.
- Indlejring af billeder fik filstørrelserne til at vokse uforudsigeligt.
- Parsing krævede reverse engineering af tætte binære specifikationer.
- Cross‑platform interoperabilitet var et mareridt.
Skiftet til åbne, modulære containere
I midten af 2000’erne fandt to parallelle evolutioner sted:
- Office Open XML (OOXML / ISO/IEC 29500): Microsoft introducerede de XML-baserede formater, der ender med et
x(DOCX, XLSX, PPTX). Under overfladen følger disse filer Open Packaging Conventions (OPC). - EPUB (IDPF / W3C): Digital udgivelse bevægede sig væk fra proprietære læserformater mod standard webteknologier (HTML, CSS, SVG) pakket ind i EPUB Open Container Format (OCF).
Begge arkitekturer er afhængige af standard PKZIP 2.0 / ZIP-specifikation. Filtypenavnet bestemmer blot det forventede skema, standardvisningsprogrammet og mime-type deklarationer.
Sample DOCX File (Unzipped):
├── [Content_Types].xml <-- Registry of MIME types for parts
├── _rels/ <-- Package-level relationships
│ └── .rels
├── docProps/ <-- Core and extended metadata
│ ├── app.xml
│ └── core.xml
└── word/ <-- Main content payload
├── document.xml <-- Text, paragraphs, and tags
├── styles.xml <-- Typography and presets
├── numbering.xml <-- Lists and counters
├── media/ <-- Embedded images (PNG, JPG)
└── _rels/
└── document.xml.rels <-- Internal hyperlinks & resource pointers
2. Motoren under motorhjelmen: DEFLATE-algoritmen
Når et softwareprogram gemmer en DOCX- eller EPUB-fil, gemmer det ikke blot filer i et ukomprimeret arkiv. Det komprimerer de interne aktiver ved hjælp af DEFLATE (specificeret i RFC 1951).
DEFLATE er et to-trins tabsfri komprimeringssystem, der kombinerer to grundlæggende datalogi-algoritmer:
Trin 1: LZ77 (Lempel-Ziv 1977) — Fjernelse af redundans med glidende vindue
XML og HTML er ekstremt omstændelige. Overvej, hvor ofte tags forekommer i en standard document.xml eller chapter1.xhtml fil:
<w:p><w:r><w:rPr><w:sz w:val=\"24\"/></w:rPr><w:t>gentages tusindvis af gange i Word.row r="1" spans="1:15"><c r="A1" t="s"><v>gentages i Excel på tværs af titusindvis af celler.<p class="calibre1"><span class="body-text">gentages på tværs af EPUB-bogkapitler.
LZ77 scanner datastrømmen ved hjælp af et glidende ordbogs‑vindue (typisk 32 KB). Når den støder på en streng af tegn, den har set for nylig, erstatter den den duplikerede tekst med en lille bagud‑peger:
(distance, length)— f.eks. “gå tilbage 142 bytes, kopier 28 bytes”.
I stedet for at gemme omstændelig markup igen og igen, komprimerer LZ77 tusindvis af gentagne XML‑tags til kompakte koordinatreferencer.
Trin 2: Huffman-kodning — Variabel-længde frekvenskodning
Efter LZ77 har erstattet overflødige sekvenser med længde‑afstand‑tokens, analyserer Huffman‑kodning hyppigheden af hvert symbol i strømmen:
- Hyppigt forekommende symboler (såsom almindelige tegn
e,t, mellemrum eller almindelige afstandsmarkører) tildeles korte binære bit‑koder (f.eks. 2 til 4 bits). - Sjældent brugte symboler får længere binære bit‑koder (f.eks. 12 til 16 bits).
Resultatet er en strøm af variabel‑længde bitkoder, der komprimerer ren tekst‑XML ned med 75% til 88%.
3. Format-for-format analyse: Hvordan hver håndterer kompression
Selvom DOCX, XLSX, PPTX og EPUB alle bruger den samme ZIP‑indpakning, varierer deres interne datakarakteristika kraftigt.
A. DOCX: Tekst- og stilbalancering
- Hvad der er inde: Ren XML (
word/document.xml), skrifttabeller, stilarter, relationskataloger og enword/media/mappe. - Hvordan komprimering fungerer:
- Den rå tekst og XML‑markup oplever massive komprimeringsforhold (ofte falder fra 5 MB rå XML ned til 500 KB).
- Moderne dokumenter indeholder dog ofte skærmbilleder, illustrationer og fotos. Da JPEG‑ og PNG‑filer er allerede komprimerede, kan DEFLATE ikke reducere dem yderligere. Faktisk giver kørsel af DEFLATE på et allerede komprimeret billede næsten 0 % besparelse (og kan endda let øge størrelsen på grund af komprimerings‑headere).
- Derfor er DOCX‑filer uden billeder usædvanligt små, mens billedtunge rapporter næsten svarer til den nøjagtige størrelse af de indeholdte billedfiler.
B. XLSX: Højvolumen numeriske data & delte strenge
Regneark udgør en unik udfordring: et ark kan indeholde hundredtusinder af rækker, hvilket kan føre til astronomiske XML‑filstørrelser, hvis det ikke håndteres smart.
- Strategi for delte strenge (
xl/sharedStrings.xml):- Hvis en tekstetiket som “United States” eller “In Progress” forekommer 50.000 gange i et regneark, vil lagring af
<c t=\"inlineStr\"><is><t>United States</t></is></c>i 50.000 celler oppuste den ukomprimerede XML til gigabytes. - Excel fjerner dubletter i tekst før komprimering ved at gemme hver unik streng én gang i en delt strengtabel og referere til den via numerisk indeks (f.eks.
<v>0</v>,<v>1</v>).
- Hvis en tekstetiket som “United States” eller “In Progress” forekommer 50.000 gange i et regneark, vil lagring af
- Hvorfor XLSX komprimeres dramatisk:
- Numeriske rækkeposter (
sheet1.xml) følger gentagende, forudsigelig syntaks. - DEFLATE opdager let gentagne mønstre i tabel-XML. Det er almindeligt, at en rå
sheet1.xml-fil på 120 MB krymper til mindre end 6 MB i et XLSX-arkiv.
- Numeriske rækkeposter (
C. PPTX: Medietunge slide-decks
Præsentationer er grundlæggende forskellige fra dokumenter og regneark:
- Billeddilemmaet: PPTX-filer domineres typisk af vektorformer, baggrundsgrafik, videoklip og højopløsningsslides.
- Komprimeringsprofil: Mens
ppt/slides/slide1.xmltilslideN.xmlkomprimeres effektivt, udgør mediepayloaden (ppt/media/) 85% til 95% af den samlede arkivvægt. - Hvorfor gen-zipning af en PPTX ikke ændrer noget: Hvis du forsøger at komprimere en allerede gemt PPTX-fil med 7-Zip eller WinRAR, vil du bemærke næsten ingen størrelsesreduktion. Fordi indholdet allerede er et DEFLATE-komprimeret ZIP-arkiv, der indeholder forkomprimerede JPEG’er og MP4’er, er entropien allerede næsten maksimal.
D. EPUB: Webteknologier med et obligatorisk ukomprimeret header
En EPUB-fil er i bund og grund et responsivt, pakket mikro‑website, der indeholder XHTML‑kapitler, CSS‑stilark, TTF/WOFF‑skrifttyper og metadata. EPUB har dog én streng pakkeregulering, der adskiller den fra Microsoft Office-filer:
EPUB Internal Structure:
├── mimetype <-- MUST be uncompressed (Stored) & at byte offset 38
├── META-INF/
│ └── container.xml <-- Tells reader where the OPF manifest lives
└── OEBPS/ (or EPUB/)
├── content.opf <-- Manifest of all book assets
├── toc.ncx / nav.xhtml <-- Table of contents navigation
├── styles/style.css <-- CSS formatting
├── images/ <-- Book cover & illustrations
└── text/ <-- chapter1.xhtml, chapter2.xhtml
- Den magiske
mimetype-fil:- E‑læsere skal kunne identificere en EPUB med det samme uden at udtrække hele arkivet eller køre dekomprimeringsprocesser.
- Open Container Format (OCF) pålægger, at
mimetype-filen:- Skal være den allerførste fil i ZIP-arkivet.
- Skal indeholde præcis strengen
application/epub+zip. - Må ikke komprimeres (ZIP-komprimeringsmetode
0/ “Stored”). - Må ikke have ekstra feltd data, så MIME-strengen altid begynder ved byte 38 i den fysiske fil.
- Tekstkomprimering: Alle resterende filer (
.xhtml,.css,.opf) komprimeres ved hjælp af standard DEFLATE (ZIP-metode8), hvilket gør det muligt for fuldlængde romaner at krympe til nogle få hundrede kilobyte.
4. Sammenligning af kompression på tværs af formater
| Format | Kernepayload | Primær redundanskilde | Typisk komprimeringsforhold (tekst/markup) | Mediehåndtering |
|---|---|---|---|---|
| DOCX | WordprocessingML (document.xml) | Gentagne XML afsnit/kørsel-tags | 75% – 85% | Gemmes i word/media/ (mest forkomprimeret) |
| XLSX | SpreadsheetML (sheet*.xml) | Gentagne celle/række-tags; Delte strenge | 80% – 92% | Sparsomme; billeder/diagrammer i xl/media/ |
| PPTX | PresentationML (slide*.xml) | Diaslayout-metadata, formkoordinater | 70% – 80% | Tung ppt/media/ payload begrænser den samlede besparelse |
| EPUB | XHTML, CSS, OPF, NCX | HTML-tags, gentagne CSS-selektorer | 65% – 80% | mimetype ukomprimeret; medier i undermapper |
5. Praktiske konklusioner: Sådan optimerer du dine dokumenter
Fordi du nu ved, hvordan intern pakning fungerer, kan du udnytte komprimeringsmekanismer til at løse virkelige problemer:
- Reparerer korrupte dokumenter:
Hvis et dokument nægter at åbne, gør ændring af filendelsen til
.zipdet muligt at udtrække indholdet og gendanne den rå tekst fradocument.xmleller individuelle kapitler fra EPUB’enstext/-mappe. - Formindskelse af store Office-filer:
Da XML-komprimering allerede er optimeret, skyldes store filer næsten altid uoptimerede billeder i
media/. I stedet for at bruge tredjeparts PDF- eller DOCX-kompressorer, skal du åbne ZIP-beholderen, udtrække billederne, køre dem gennem en billedoptimerer (som WebP, TinyPNG eller MozJPEG) og erstatte dem i arkivet. - Automatisering af dokumentgenerering: Udviklere behøver ikke tunge kontorpakker for at opbygge rapporter. Du kan generere rå XML-skabeloner, pakke dem sammen ved hjælp af standard zlib/ZIP-biblioteker og programmatiskt udgive gyldige DOCX- eller XLSX-filer på millisekunder.
6. Ofte stillede spørgsmål (FAQ)
Kan jeg konvertere en DOCX eller EPUB til en ZIP-fil blot ved at omdøbe filendelsen? Ja; omdøbning af endelsen til .zip gør det muligt for ethvert standardarkiveringsværktøj (som 7-Zip, macOS Archive Utility eller Windows Explorer) at åbne og inspicere de interne filer direkte.
Hvorfor gør komprimering af en DOCX eller PPTX med 7-Zip den ikke mærkbart mindre? Fordi filen allerede er et internt komprimeret ZIP-arkiv, der indeholder DEFLATE-kodet XML og forkomprimerede billeder, hvilket efterlader minimal redundans for et eksternt værktøj at fjerne.
Hvorfor kræver EPUB-specifikationen, at mimetype-filen er ukomprimeret? Det gør det muligt for e‑læser‑software at verificere, at filen er en ægte EPUB ved at tjekke MIME‑strengen på en fast byte‑offset uden at skulle initialisere en dekomprimeringsmotor.
Øger ændring af celleformatering i Excel den komprimerede XLSX‑filstørrelse? Ja; omfattende brugerdefineret formatering bryder ensartet mønstergentagelse på tværs af celler, hvilket skaber længere XML‑definitioner, der reducerer DEFLATE’s komprimeringseffektivitet.
Er det muligt at udtrække højopløselige originale billeder fra en Word‑ eller PowerPoint‑fil uden kvalitetstab? Ja; omdøb filen til .zip, åbn word/media‑ eller ppt/media‑mappen, og du vil finde de originale, ukomprimerede kildebilleder præcis som de blev indsat.