Pēdējoreiz atjaunināts: 10. septembris, 2026

How Compression Works Inside EPUB, DOCX, XLSX, & PPTX: The Hidden ZIP Architecture

Kā saspiešana darbojas EPUB, DOCX, XLSX un PPTX

Ja pārdēvējat .docx, .xlsx, .pptx vai .epub failu uz .zip un veicat dubultklikšķi, notiek kaut kas pārsteidzošs: tas nerāda kļūdu. Jūsu operētājsistēma atver to kā mapi, kas ir piepildīta ar apakšdirektorijām, XML konfigurācijas failiem, stila lapām, fontiem un iegultajiem attēliem.

Mūsdienu dokumentu arhitektūras pirms desmitiem atteicās no monolītiskām binārajām struktūrām. To vietā nozares standarti — proti, Open Packaging Conventions (OPC) Microsoft Office un Open Container Format (OCF) EPUB — pieņēma pārsteidzoši elegantu pamatu: vienkāršo ZIP arhīvu.

Izpratne par to, kā saspiešana darbojas šajos formātos, atklāj, kāpēc mūsdienu dokumenti ir tik izturīgi, viegli un paplašināmi — un kāpēc daži faili saspiest 90 %, kamēr citi gandrīz nemazinās.

1. Konteineru arhitektūra: maskēti ZIP paketes

Pirms izprast pašas saspiešanas algoritmu, ir noderīgi saprast, kāpēc mūsdienu dokumentu formāti ir strukturēti kā paketes, nevis kā neatkarīgi neapstrādāti faili.

Problēma ar mantotajām binārajām formātiem

Visā 1990.ajos gados un agrīnos 2000.ajos Microsoft Office izmantoja īpašas binārās formātus (.doc, .xls, .ppt). Šie faili būtībā bija atmiņas izmeši, kas strukturēti ap Compound File Binary Format (CFBF). Tie bija slaveni ar savu trauslumu:

  • Viena bitu pārslēgšana varēja sabojāt visu faila struktūru.
  • Attēlu iegulšana izraisīja faila izmēru neparedzamu pieaugumu.
  • Parsēšana prasīja blīvu bināro specifikāciju atpakaļizpēti.
  • Starppatformu savietojamība bija murgs.

Pāreja uz atvērtiem, modulāriem konteineriem

  1. gadu vidū notika divas paralēlas evolūcijas:
  2. Office Open XML (OOXML / ISO/IEC 29500): Microsoft iepazīstināja ar XML balstītiem formātiem, kas beidzas ar x (DOCX, XLSX, PPTX). Fona līmenī šie faili seko Open Packaging Conventions (OPC).
  3. EPUB (IDPF / W3C): Digitālā publicēšana pārgāja no īpašnieku lasītāju formātiem uz standarta tīmekļa tehnoloģijām (HTML, CSS, SVG), kas ir iepakotas EPUB Open Container Format (OCF).

Abas arhitektūras balstās uz standarta PKZIP 2.0 / ZIP specifikāciju. Faila paplašinājums vienkārši nosaka gaidāmo shēmu, noklusējuma skatītāja lietojumprogrammu un MIME tipa deklarācijas.

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. Dzinējs zem kapuci: DEFLATE algoritms

Kad programmatūras lietojumprogramma saglabā DOCX vai EPUB failu, tā ne tikai saglabā failus nekompresētā arhīvā. Tā saspiež iekšējos resursus, izmantojot DEFLATE (definēts RFC 1951).

DEFLATE ir divpakāpju bezzaudējumu saspiešanas sistēma, kas apvieno divus pamata informātikas algoritmus:

1. solis: LZ77 (Lempel‑Ziv 1977) — Slīdējoša loga liekvārdības noņemšana

XML un HTML ir ārkārtīgi verbālie. Apsveriet, cik bieži tagi parādās standarta document.xml vai chapter1.xhtml failā:

  • <w:p><w:r><w:rPr><w:sz w:val=\"24\"/></w:rPr><w:t> atkārtojas tūkstošiem reižu Word programmā.
  • row r="1" spans="1:15"><c r="A1" t="s"><v> atkārtojas Excel desmitiem tūkstošu šūnu.
  • <p class="calibre1"><span class="body-text"> atkārtojas visā EPUB grāmatas nodaļās.

LZ77 skenē datu plūsmu, izmantojot slīdējošu vārdnīcas logu (parasti 32 KB). Kad tas sastop rakstzīmju virkni, ko nesen ir redzējis, tas aizstāj dublēto tekstu ar mazu atpakaļrādējošu rādītāju:

  • (distance, length) — piemēram, “doties atpakaļ 142 baitus, kopēt 28 baitus”.

Tā vietā, lai atkārtoti glabātu plašu marķējumu, LZ77 apvieno tūkstošiem atkārtotu XML tagu par kompaktiem koordinātu atsaucēm.

2. solis: Huffmana kodēšana — mainīgā garuma frekvences kodēšana

Pēc tam, kad LZ77 aizstāj liekas sekvences ar garuma‑attāluma tokeniem, Huffman kodēšana analizē katra simbola biežumu plūsmā:

  • Bieži parādās simboli (piemēram, biežākās rakstzīmes e, t, atstarpes vai bieži izmantotie attāluma marķieri) tiek piešķirti īsi binārie bitu kodi (piemēram, 2 līdz 4 biti).
  • Retāk lietoti simboli saņem garākus bināros bitu kodus (piemēram, 12 līdz 16 biti).

Rezultāts ir mainīgā garuma bitkodu plūsma, kas saspiest vienkāršo teksta XML par 75% līdz 88%.

3. Formāts pa formātam sadalījums: kā katrs apstrādā saspiešanu

Lai gan DOCX, XLSX, PPTX un EPUB visi izmanto vienu un to pašu ZIP ietvaru, to iekšējās datu īpašības ir ļoti atšķirīgas.

A. DOCX: Teksta un stila līdzsvarošanas akts

  • Kas ir iekļauts: Vienkāršs XML (word/document.xml), fontu tabulas, stili, attiecību katalogi un word/media/ mape.
  • Kā kompresija darbojas:
    • Neapstrādātais teksts un XML marķējums sasniedz milzīgus kompresijas rādītājus (bieži samazinoties no 5 MB neapstrādāta XML līdz 500 KB).
    • Tomēr mūsdienu dokumenti bieži ietver ekrānattēlus, ilustrācijas un fotogrāfijas. Tā kā JPEG un PNG faili ir jau saspiesti, DEFLATE tos nevar vēl vairāk samazināt. Patiesībā, piemērojot DEFLATE jau saspiestam attēlam, praktiski neiegūst nekādu ietaupījumu (un var pat nedaudz palielināt izmēru sakarā ar kompresijas galveni).
    • Tādējādi DOCX faili bez attēliem ir ārkārtīgi mazi, kamēr ar attēliem bagātīgi pārskati praktiski atspoguļo to iekļauto attēlu failu izmērus.

B. XLSX: Liela apjoma skaitliskie dati un koplietotās virknes

Izklājlapas rada unikālu izaicinājumu: lapa var saturēt simtiem tūkstošu rindu, kas, ja netiek apstrādātas gudri, noved pie astronomiskiem XML failu izmēriem.

  • Koplietoto virkņu stratēģija (xl/sharedStrings.xml):
    • Ja teksta etiķete, piemēram, “United States” vai “In Progress”, parādās 50,000 reizes izklājlapā, <c t="inlineStr"><is><t>United States</t></is></c> saglabāšana 50,000 šūnās izraisītu nekompresētā XML paplašināšanos līdz gigabaitiem.
    • Excel pirms kompresijas noņem teksta dublikātus, saglabājot katru unikālu virkni tikai vienreiz koplietotajā virkņu tabulā un atsaucoties uz to ar skaitlisku indeksu (piem., <v>0</v>, <v>1</v>).
  • Kāpēc XLSX tiek saspiests dramatiskā veidā:
    • Skaitliskie rindu ieraksti (sheet1.xml) seko atkārtojošai, paredzamai sintaksei.
    • DEFLATE viegli atklāj atkārtojošas paraugi tabulārajā XML. Bieži notiek, ka 120 MB neapstrādāts sheet1.xml fails saraužas līdz mazāk nekā 6 MB XLSX arhīvā.

C. PPTX: Mediju smagie slaidu komplekti

Prezentācijas būtiski atšķiras no dokumentiem un izklājlapām:

  • Attēlu dilema: PPTX faili parasti dominē vektoru formas, fona grafika, video klipi un augstas izšķirtspējas slaidi.
  • Saspiešanas profils: Kamēr ppt/slides/slide1.xml līdz slideN.xml tiek efektīvi saspiesti, multivides slodze (ppt/media/) veido 85% līdz 95% no kopējā arhīva svara.
  • Kāpēc PPTX atkārtota saspiešana neko nemaina: Ja mēģināsiet saspiest jau saglabātu PPTX failu ar 7‑Zip vai WinRAR, pamanīsiet, ka praktiski nav samazinājuma. Tā kā iekšpusē jau ir DEFLATE‑saspiests ZIP arhīvs, kas satur iepriekš saspiestus JPEG un MP4, entropija jau ir gandrīz maksimāla.

D. EPUB: Tīmekļa tehnoloģijas ar obligātu nesaspiestu galveni

EPUB fails būtībā ir responsīvs, iepakots mikro-tīmekļa vietnes elements, kas satur XHTML nodaļas, CSS stila lapas, TTF/WOFF fontus un metadatus. Tomēr EPUB ir viena stingra iepakošanas noteikuma, kas to atšķir no Microsoft Office failiem:

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
  • Burvīgais mimetype fails:
    • E-lasītājiem jāspēj uzreiz identificēt EPUB, neizvelkot visu arhīvu vai palaidot atspiešanas caurulēs.
    • Open Container Format (OCF) nosaka, ka mimetype fails:
      1. Jābūt pašam pirmajam failam ZIP arhīvā.
      2. Jābūt tieši šim virknei application/epub+zip.
      3. Nav jākompresē (ZIP kompresijas metode 0 / “Stored”).
      4. Jābūt bez papildu lauka datiem, lai MIME virkne vienmēr sākas 38. baitā no fiziskā faila.
  • Teksta kompresija: Visi pārējie faili (.xhtml, .css, .opf) tiek kompresēti, izmantojot standarta DEFLATE (ZIP metode 8), ļaujot pilnas garuma romāniem samazināties līdz dažiem simtiem kilobaitu.

4. Saspiešanas salīdzināšana dažādos formātos

FormātsKodolnosūtījumsPrimārais rezerves avotsTipiskais kompresijas attiecība (teksts/atzīmes)Multivides apstrāde
DOCXWordprocessingML (document.xml)Atkārtoti XML paragrāfa/izpildes tagi75% – 85%Saglabāts word/media/ (galvenokārt iepriekš saspiests)
XLSXSpreadsheetML (sheet*.xml)Atkārtoti šūnu/rindu tagi; Koplietotās virknes80% – 92%Retas; attēli/diagrammas xl/media/
PPTXPresentationML (slide*.xml)Slaidu izkārtojuma metadati, formu koordinātas70% – 80%Smags ppt/media/ slodzes apjoms ierobežo kopējo ietaupījumu
EPUBXHTML, CSS, OPF, NCXHTML tagi, atkārtoti CSS selektori65% – 80%mimetype nesaspakots; multivide apakšmapēs

5. Praktiski secinājumi: Kā optimizēt savus dokumentus

Tā kā tagad jūs zināt, kā darbojas iekšējā pakotne, jūs varat izmantot saspiešanas mehānismus, lai atrisinātu reālus problēmu risinājumus:

  1. Kļūdainu dokumentu labošana: Ja dokuments atsakās atvērt, paplašinājuma mainīšana uz .zip ļauj izpakot saturu un atgūt neapstrādāto tekstu no document.xml vai atsevišķām nodaļām no EPUB text/ direktorijas.
  2. Lielo biroja failu samazināšana: Tā kā XML saspiešana jau ir optimizēta, milzīgi faili gandrīz vienmēr rodas neoptimizētu attēlu dēļ mapē media/. Tā vietā, lai izmantotu trešo pušu PDF vai DOCX saspiedējus, atveriet ZIP konteineru, izvilkt attēlus, palaidiet tos caur attēlu optimizētāju (piemēram, WebP, TinyPNG vai MozJPEG) un aizvietojiet tos arhīvā.
  3. Dokumentu ģenerēšanas automatizēšana: Izstrādātājiem nav vajadzīgas smagākas biroja programmatūras, lai veidotu pārskatus. Jūs varat ģenerēt neapstrādātus XML veidnes, savienot tās, izmantojot standarta zlib/ZIP bibliotēkas, un programmatiski izvadīt derīgus DOCX vai XLSX failus milisekundēs.

6. Biežāk uzdotie jautājumi (BUJ)

Vai es varu pārvērst DOCX vai EPUB uz ZIP failu, vienkārši pārdēvējot faila paplašinājumu? Jā; pārdēvējot paplašinājumu uz .zip, ļauj jebkuram standarta arhīva rīkam (piemēram, 7-Zip, macOS Archive Utility vai Windows Explorer) tieši atvērt un pārbaudīt iekšējos failus.

Kāpēc DOCX vai PPTX saspiešana ar 7-Zip nepadara to būtiski mazāku? Jo fails jau ir iekšēji saspiests ZIP arhīvs, kas satur DEFLATE‑kodētu XML un iepriekš saspiestus attēlus, atstājot minimālu lieko datu daudzumu, ko ārējs rīks varētu noņemt.

Kāpēc EPUB specifikācija pieprasa, lai mimetype fails būtu nesaspiedts? Tas ļauj e-lasītāja programmatūrai pārbaudīt, vai fails ir autentisks EPUB, pārbaudot MIME virkni fiksētā baitu nobīdes vietā, nepiesādot kompresijas ataršanas dzinēju.

Vai šūnu formatēšanas maiņa Excel programmā palielina saspiestā XLSX faila izmēru? Jā; plaša pielāgotā formatēšana pārtrauc vienotu paraugu atkārtošanos starp šūnām, radot garākas XML definīcijas, kas samazina DEFLATE kompresijas efektivitāti.

Vai ir iespējams izvilkt augstas izšķirtspējas oriģinālos attēlus no Word vai PowerPoint faila bez kvalitātes zuduma? Jā; pārdēvējiet failu uz .zip, atveriet word/media vai ppt/media mapi, un atradīsiet oriģinālos, nesaspiedtos avota attēlus tieši tā, kā tie tika ievietoti.

Skatīt arī