Senast uppdaterad: 10 september 2026

Hur komprimering fungerar i EPUB, DOCX, XLSX och PPTX
Om du byter namn på en .docx, .xlsx, .pptx eller .epub-fil till .zip och dubbelklickar på den, händer något överraskande: den ger inget felmeddelande. Ditt operativsystem öppnar den som en mapp fylld med undermappar, XML‑konfigurationsfiler, stilmallar, typsnitt och inbäddade bilder.
Moderna dokumentarkitekturer övergav monolitiska binära massor för decennier sedan. Istället antog branschstandarder—namnligt Open Packaging Conventions (OPC) för Microsoft Office och Open Container Format (OCF) för EPUB—en förvånansvärt elegant grund: den enkla ZIP-arkivet.
Att förstå hur komprimering fungerar i dessa format avslöjar varför moderna dokument är så motståndskraftiga, lätta och utbyggbara—och varför vissa filer komprimeras med 90 % medan andra knappt krymper alls.
1. Containerarkitekturen: Förklädda ZIP paket
Innan man förstår komprimeringsalgoritmen i sig är det bra att förstå varför moderna dokumentformat är strukturerade som paket snarare än fristående råa filer.
Problemet med äldre binära format
Under 1990‑talen och början av 2000‑talen använde Microsoft Office proprietära binära format (.doc, .xls, .ppt). Dessa filer var i princip minnesdumpningar strukturerade kring Compound File Binary Format (CFBF). De var ökända för sin bräcklighet:
- En enda bitväxling kunde korrupta hela filstrukturen.
- Inbäddning av bilder fick filstorlekarna att svälla oförutsägbart.
- Parsing krävde reverse‑engineering av täta binära specifikationer.
- Plattformsöverskridande interoperabilitet var en mardröm.
Övergången till öppna, modulära containrar
I mitten av 2000-talet skedde två parallella evolutioner:
- Office Open XML (OOXML / ISO/IEC 29500): Microsoft introducerade de XML-baserade formaten som slutar med ett
x(DOCX, XLSX, PPTX). Under huven följer dessa filer Open Packaging Conventions (OPC). - EPUB (IDPF / W3C): Digital publicering gick bort från proprietära läsarformat och övergick till standard webbteknik (HTML, CSS, SVG) som paketeras i EPUB Open Container Format (OCF).
Båda arkitekturerna bygger på standard PKZIP 2.0 / ZIP-specifikationen. Filändelsen bestämmer helt enkelt det förväntade schemat, standardvisningsprogrammet och MIME-typdeklarationerna.
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. Motorn under huven: DEFLATE-algoritmen
När ett mjukvaruprogram sparar en DOCX- eller EPUB-fil lagrar det inte bara filer i ett okomprimerat arkiv. Det komprimerar de interna resurserna med DEFLATE (specificerad i RFC 1951).
DEFLATE är ett tvåstegs förlustfritt komprimeringssystem som kombinerar två grundläggande datavetenskapliga algoritmer:
Steg 1: LZ77 (Lempel-Ziv 1977) — Borttagning av redundans med glidande fönster
XML och HTML är extremt utförliga. Tänk på hur ofta taggar förekommer i en standard document.xml- eller chapter1.xhtml-fil:
<w:p><w:r><w:rPr><w:sz w:val="24"/></w:rPr><w:t>upprepas tusentals gånger i Word.row r=\"1\" spans=\"1:15\"><c r=\"A1\" t=\"s\"><v>upprepas i Excel över tiotusentals celler.<p class=\"calibre1\"><span class=\"body-text\">upprepas över EPUB-bokkapitel.
LZ77 skannar dataströmmen med ett glidande ordboksfönster (vanligtvis 32 KB). När den stöter på en teckensträng som den nyligen har sett, ersätter den den duplicerade texten med en liten bakåtpil:
(distance, length)— t.ex. "gå tillbaka 142 byte, kopiera 28 byte".
Istället för att lagra utförlig markup om och om igen, komprimerar LZ77 tusentals repetitiva XML-taggar till kompakta koordinatreferenser.
Steg 2: Huffmankodning — Variabel längdkodning av frekvens
Efter att LZ77 har ersatt redundanta sekvenser med längd‑avstånd‑token, analyserar Huffman‑kodning frekvensen för varje symbol i strömmen:
- Frekvent förekommande symboler (som vanliga tecken
e,t, mellanslag eller vanliga avståndsmarkörer) tilldelas korta binära bitkoder (t.ex. 2 till 4 bitar). - Sällan använda symboler får längre binära bitkoder (t.ex. 12 till 16 bitar).
Resultatet är en ström av variabel‑längd bitkoder som komprimerar vanlig text‑XML med 75 % till 88 %.
3. Format-för-format-genomgång: Hur varje hanterar komprimering
Även om DOCX, XLSX, PPTX och EPUB alla använder samma ZIP‑omslag, skiljer deras interna datakarakteristik sig kraftigt.
A. DOCX: Balansakten mellan text och stil
- Vad som finns: Vanlig XML (
word/document.xml), teckensnittstabeller, stilar, relationskataloger och enword/media/‑mapp. - Hur komprimeringen presterar:
- Den råa texten och XML‑markupen uppnår enorma komprimeringsförhållanden (ofta minskar från 5 MB rå XML till 500 KB).
- Moderna dokument innehåller dock ofta skärmdumpar, illustrationer och foton. Eftersom JPEG‑ och PNG‑filer är redan komprimerade, kan DEFLATE inte krympa dem ytterligare. Faktum är att köra DEFLATE på en redan komprimerad bild ger i praktiken 0 % besparing (och kan till och med öka storleken något på grund av komprimeringshuvuden).
- Följaktligen är DOCX‑filer utan bilder exceptionellt små, medan bildtunga rapporter nästan exakt motsvarar storleken på de bildfiler de innehåller.
B. XLSX: Stordata med numeriska värden & delade strängar
Kalkylblad utgör en unik utmaning: ett blad kan innehålla hundratusentals rader, vilket leder till astronomiska XML‑filstorlekar om de inte hanteras smart.
- Strategin för delade strängar (
xl/sharedStrings.xml):- Om en textetikett som “United States” eller “In Progress” visas 50 000 gånger i ett kalkylblad, skulle lagring av
<c t="inlineStr"><is><t>United States</t></is></c>i 50 000 celler blåsa upp den okomprimerade XML-filen till gigabyte. - Excel avduplicerar text innan komprimering genom att lagra varje unik sträng en gång i en delad strängtabell och referera den med ett numeriskt index (t.ex.
<v>0</v>,<v>1</v>).
- Om en textetikett som “United States” eller “In Progress” visas 50 000 gånger i ett kalkylblad, skulle lagring av
- Varför XLSX komprimeras dramatiskt:
- Numeriska radposter (
sheet1.xml) följer repetitiv, förutsägbar syntax. - DEFLATE upptäcker enkelt repetitiva mönster i tabulär XML. Det är vanligt att en rå
sheet1.xml-fil på 120 MB krymper till mindre än 6 MB i ett XLSX‑arkiv.
- Numeriska radposter (
C. PPTX: Mediatunga bildspel
Presentationer är i grunden annorlunda än dokument och kalkylblad:
- Bilddilemmat: PPTX-filer domineras vanligtvis av vektorformer, bakgrundsgrafik, videoklipp och högupplösta bilder.
- Komprimeringsprofil: Medan
ppt/slides/slide1.xmltillslideN.xmlkomprimeras effektivt, står mediepayloaden (ppt/media/) för 85% till 95% av den totala arkivvikten. - Varför om‑zippning av en PPTX inte förändrar någonting: Om du försöker komprimera en redan sparad PPTX‑fil med 7‑Zip eller WinRAR, kommer du märka nästan ingen storleksreduktion. Eftersom innehållet redan är ett DEFLATE‑komprimerat ZIP‑arkiv som innehåller förkomprimerade JPEG‑filer och MP4‑filer, är entropin redan nära maximum.
D. EPUB: Webteknologier med ett obligatoriskt okomprimerat huvud
En EPUB‑fil är i huvudsak en responsiv, paketerad mikro‑webbplats som innehåller XHTML‑kapitel, CSS‑stilmallar, TTF/WOFF‑typsnitt och metadata. EPUB har dock en strikt paketeringsregel som skiljer den från 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 magiska
mimetype‑filen:- E‑läsare måste identifiera en EPUB omedelbart utan att extrahera hela arkivet eller köra dekomprimeringspipelines.
- Open Container Format (OCF) kräver att
mimetype‑filen:- Måste vara den allra första filen i ZIP‑arkivet.
- Måste innehålla exakt strängen
application/epub+zip. - Får inte komprimeras (ZIP-komprimeringsmetod
0/ “Stored”). - Får inte ha extra fältdata, vilket säkerställer att MIME-strängen alltid börjar vid byte 38 i den fysiska filen.
- Textkomprimering: Alla återstående filer (
.xhtml,.css,.opf) komprimeras med standard DEFLATE (ZIP-metod8), vilket gör att hela romaner kan krympa till några hundra kilobyte.
4. Jämföra komprimering mellan format
| Format | Kärnlast | Primär redundanskälla | Typisk komprimeringsgrad (Text/Markup) | Mediehantering |
|---|---|---|---|---|
| DOCX | WordprocessingML (document.xml) | Upprepade XML-paragraf-/kör-taggar | 75% – 85% | Lagrad i word/media/ (mest förkomprimerad) |
| XLSX | SpreadsheetML (sheet*.xml) | Upprepade cell-/rad-taggar; delade strängar | 80% – 92% | Sparsamt; bilder/diagram i xl/media/ |
| PPTX | PresentationML (slide*.xml) | Metadata för bildlayout, formkoordinater | 70% – 80% | Tung ppt/media/-payload begränsar den totala besparingen |
| EPUB | XHTML, CSS, OPF, NCX | HTML-taggar, repetitiva CSS-väljare | 65% – 80% | mimetype okomprimerad; media i undermappar |
5. Praktiska slutsatser: Hur du optimerar dina dokument
Eftersom du nu vet hur intern paketering fungerar kan du utnyttja komprimeringsmekanismer för att lösa verkliga problem:
- Åtgärda korrupta dokument:
Om ett dokument vägrar att öppnas, gör du så att ändra filändelsen till
.zipså kan du extrahera innehållet och återställa råtexten fråndocument.xmleller enskilda kapitel från EPUB:stext/-katalog. - Krympa enorma Office-filer:
Eftersom XML-komprimering redan är optimerad, beror stora filer nästan alltid på icke-optimerade bilder i
media/. Istället för att använda tredjeparts PDF- eller DOCX-kompressorer, öppna ZIP-behållaren, extrahera bilderna, kör dem genom en bildoptimerare (som WebP, TinyPNG eller MozJPEG) och ersätt dem i arkivet. - Automatisering av dokumentgenerering: Utvecklare behöver inte tunga kontorssviter för att skapa rapporter. Du kan generera råa XML-mallar, paketera dem med standard zlib/ZIP-bibliotek och programatiskt producera giltiga DOCX- eller XLSX-filer på millisekunder.
6. Vanliga frågor (FAQ)
Kan jag konvertera en DOCX eller EPUB till en ZIP-fil bara genom att byta filändelse? Ja; att byta namn på ändelsen till .zip gör att vilket standardarkivverktyg som helst (som 7-Zip, macOS Archive Utility eller Windows Explorer) kan öppna och inspektera de interna filerna direkt.
Varför blir en DOCX eller PPTX inte märkbart mindre när den komprimeras med 7-Zip? Eftersom filen redan är ett internt komprimerat ZIP-arkiv som innehåller DEFLATE-kodad XML och förkomprimerade bilder, vilket lämnar minimal redundans för ett externt verktyg att ta bort.
Varför kräver EPUB-specifikationen att mimetype-filen är okomprimerad? Det gör att e-boksläsarprogram kan verifiera att filen är en autentisk EPUB genom att kontrollera MIME-strängen på ett fast byteoffset utan att behöva initiera en dekomprimeringsmotor.
Ökar ändring av cellformatering i Excel den komprimerade XLSX-filens storlek? Ja; omfattande anpassad formatering bryter den enhetliga mönsterupprepningen över celler, vilket skapar längre XML-definitioner som minskar DEFLATE:s komprimeringseffektivitet.
Är det möjligt att extrahera högupplösta originalbilder från en Word- eller PowerPoint-fil utan kvalitetsförlust? Ja; byt namn på filen till .zip, öppna word/media- eller ppt/media-mappen, så hittar du de ursprungliga, okomprimerade källbilderna exakt som de infördes.