Kemas Kini Terakhir: 10 September, 2026

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

Bagaimana Pemampatan Berfungsi Di Dalam EPUB, DOCX, XLSX, dan PPTX

Jika anda menamakan semula fail .docx, .xlsx, .pptx, atau .epub kepada .zip dan mengklik dua kalinya, sesuatu yang mengejutkan berlaku: ia tidak menghasilkan ralat. Sistem operasi anda membukanya sebagai folder yang dipenuhi dengan subdirektori, fail konfigurasi XML, lembaran gaya, fon, dan imej terbenam.

Arkitektur dokumen moden telah meninggalkan blob binari monolitik beberapa dekad yang lalu. Sebagai gantinya, piawaian industri—iaitu Open Packaging Conventions (OPC) untuk Microsoft Office dan Open Container Format (OCF) untuk EPUB—menggunakan asas yang sangat elegan: arkib ZIP yang sederhana.

Memahami cara pemampatan berfungsi dalam format-format ini mendedahkan mengapa dokumen moden begitu tahan, ringan, dan boleh diperluas—dan mengapa sesetengah fail dipampatkan sehingga 90% manakala yang lain hampir tidak menyusut langsung.

1. Seni Bina Kontena: Pakej ZIP yang Disamarkan

Sebelum memahami algoritma pemampatan itu sendiri, adalah membantu untuk memahami mengapa format dokumen moden disusun sebagai pakej dan bukannya fail mentah yang berdiri sendiri.

Masalah dengan Format Binari Warisan

Sepanjang tahun 1990-an dan awal 2000-an, Microsoft Office menggunakan format binari proprietari (.doc, .xls, .ppt). Fail-fail ini pada dasarnya merupakan dump memori yang disusun mengikut Compound File Binary Format (CFBF). Ia terkenal rapuh:

  • Satu flip bit tunggal boleh merosakkan keseluruhan struktur fail.
  • Menyisipkan imej menyebabkan saiz fail membengkak secara tidak dapat diramalkan.
  • Penguraian memerlukan kejuruteraan terbalik spesifikasi binari yang padat.
  • Interoperabiliti merentas platform menjadi mimpi ngeri.

Peralihan ke Kontena Terbuka, Modular

Pada pertengahan tahun 2000-an, dua evolusi selari berlaku:

  1. Office Open XML (OOXML / ISO/IEC 29500): Microsoft memperkenalkan format berasaskan XML yang berakhir dengan x (DOCX, XLSX, PPTX). Di belakang tabir, fail-fail ini mengikuti Open Packaging Conventions (OPC).
  2. EPUB (IDPF / W3C): Penerbitan digital beralih daripada format pembaca proprietari ke teknologi web standard (HTML, CSS, SVG) yang dibungkus dalam EPUB Open Container Format (OCF).

Kedua-dua seni bina bergantung pada PKZIP 2.0 / spesifikasi ZIP standard. Sambungan fail hanya menentukan skema yang dijangka, aplikasi penonton lalai, dan deklarasi jenis mime.

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. Enjin di Balik Tabir: Algoritma DEFLATE

Apabila aplikasi perisian menyimpan fail DOCX atau EPUB, ia tidak hanya menyimpan fail ke dalam arkib yang tidak dimampatkan. Ia memampatkan aset dalaman menggunakan DEFLATE (ditentukan dalam RFC 1951).

DEFLATE ialah sistem pemampatan tanpa kehilangan dua lapisan yang menggabungkan dua algoritma asas sains komputer:

Langkah 1: LZ77 (Lempel-Ziv 1977) — Penghapusan Redundansi Tingkap Gelongsor

XML dan HTML sangat berlebihan. Pertimbangkan berapa kerap tag muncul dalam fail standard document.xml atau chapter1.xhtml:

  • <w:p><w:r><w:rPr><w:sz w:val=\"24\"/></w:rPr><w:t> berulang beribu-ribu kali dalam Word.
  • row r=\"1\" spans=\"1:15\"><c r=\"A1\" t=\"s\"><v> berulang dalam Excel merentasi puluhan ribu sel.
  • <p class=\"calibre1\"><span class=\"body-text\"> berulang merentasi bab-bab buku EPUB.

LZ77 mengimbas aliran data menggunakan tetingkap kamus gelongsor (biasanya 32 KB). Apabila ia menjumpai rentetan aksara yang baru-baru ini dilihat, ia menggantikan teks duplikat dengan penunjuk mundur yang kecil:

  • (distance, length) — contohnya, "kembali 142 bait, salin 28 bait".

Daripada menyimpan markup yang panjang berulang kali, LZ77 menggabungkan ribuan tag XML yang berulang menjadi rujukan koordinat yang padat.

Langkah 2: Pengekodan Huffman — Pengekodan Frekuensi Panjang Bervariasi

Selepas LZ77 menggantikan urutan berulang dengan token panjang-jarak, Huffman coding menganalisis kekerapan setiap simbol dalam aliran:

  • Simbol yang sering muncul (seperti aksara biasa e, t, ruang, atau penanda jarak biasa) diberikan kod bit binari pendek (contohnya, 2 hingga 4 bit).
  • Simbol yang jarang digunakan menerima kod bit binari yang lebih panjang (contohnya, 12 hingga 16 bit).

Keputusan ialah aliran kod bit bersaiz berubah-ubah yang memampatkan XML teks biasa sebanyak 75% hingga 88%.

3. Pecahan Format demi Format: Bagaimana Setiap Menangani Pemampatan

Walaupun DOCX, XLSX, PPTX, dan EPUB semua menggunakan sampul ZIP yang sama, ciri-ciri data dalaman mereka berbeza secara melampau.

A. DOCX: Tindakan Menyeimbangkan Teks dan Gaya

  • Apa yang ada di dalam: XML biasa (word/document.xml), jadual fon, gaya, katalog hubungan, dan folder word/media/.
  • Bagaimana pemampatan berfungsi:
    • Teks mentah dan penanda XML mengalami nisbah pemampatan yang besar (selalunya turun daripada 5 MB XML mentah kepada 500 KB).
    • Namun, dokumen moden sering menyisipkan tangkapan skrin, ilustrasi, dan foto. Oleh kerana fail JPEG dan PNG sudah dimampatkan, DEFLATE tidak dapat mengecilkannya lagi. Malah, menjalankan DEFLATE ke atas imej yang sudah dimampatkan menghasilkan hampir 0% penjimatan (dan malah boleh sedikit meningkatkan saiz kerana pengepala pemampatan).
    • Oleh itu, fail DOCX tanpa imej sangat kecil, manakala laporan yang banyak imej hampir mencerminkan saiz tepat fail imej yang terkandung di dalamnya.

B. XLSX: Data Numerik Berkapasiti Tinggi & Rentetan Berkongsi

Hamparan lembaran kerja menimbulkan cabaran unik: satu helaian boleh mengandungi ratusan ribu baris, yang menyebabkan saiz fail XML menjadi astronomik jika tidak diuruskan dengan bijak.

  • Strategi Rentetan Berkongsi (xl/sharedStrings.xml):
    • Jika label teks seperti “United States” atau “In Progress” muncul 50,000 kali dalam hamparan, menyimpan <c t=\"inlineStr\"><is><t>United States</t></is></c> dalam 50,000 sel akan membengkakkan XML yang tidak dimampatkan menjadi gigabait.
    • Excel menghilangkan duplikasi teks sebelum pemampatan dengan menyimpan setiap rentetan unik sekali dalam jadual rentetan berkongsi dan merujuknya melalui indeks berangka (contohnya, <v>0</v>, <v>1</v>).
  • Mengapa XLSX Mampat Secara Dramatik:
    • Rekod baris berangka (sheet1.xml) mengikuti sintaks berulang dan dapat diramalkan.
    • DEFLATE dengan mudah mengesan corak berulang dalam XML berjadual. Kebiasaannya, fail sheet1.xml mentah 120 MB dapat mengecil menjadi kurang daripada 6 MB di dalam arkib XLSX.

C. PPTX: Setumpuk Slaid Berat Media

Pembentangan secara asasnya berbeza daripada dokumen dan hamparan:

  • Dilema Imej: Fail PPTX biasanya didominasi oleh bentuk vektor, grafik latar belakang, klip video, dan slaid beresolusi tinggi.
  • Profil Pemampatan: Walaupun ppt/slides/slide1.xml hingga slideN.xml mampat dengan cekap, beban media (ppt/media/) menyumbang 85% hingga 95% daripada berat keseluruhan arkib.
  • Mengapa Menyusun Semula PPTX Tidak Mengubah Apa-apa: Jika anda cuba memampatkan fail PPTX yang sudah disimpan dengan 7-Zip atau WinRAR, anda akan perasan hampir tiada pengurangan saiz. Kerana bahagian dalamnya sudah merupakan arkib ZIP yang dimampatkan dengan DEFLATE mengandungi JPEG dan MP4 yang telah dipra-mampat, entropi sudah hampir maksimum.

D. EPUB: Teknologi Web dengan Header Tidak Dimampatkan yang Wajib

Fail EPUB pada dasarnya ialah mikro-website responsif yang dipaketkan mengandungi bab-bab XHTML, lembaran gaya CSS, fon TTF/WOFF, dan metadata. Walau bagaimanapun, EPUB mempunyai satu peraturan pembungkusan ketat yang membezakannya daripada fail Microsoft Office:

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
  • Fail mimetype Ajaib:
    • Pembaca e-book perlu mengenal pasti EPUB dengan serta-merta tanpa mengekstrak keseluruhan arkib atau menjalankan paip penyahmampatan.
    • Format Kontena Terbuka (OCF) mewajibkan bahawa fail mimetype:
      1. Mesti menjadi fail pertama dalam arkib ZIP.
      2. Mesti mengandungi tepat rentetan application/epub+zip.
      3. Tidak boleh dimampatkan (kaedah mampatan ZIP 0 / “Stored”).
      4. Mesti tidak mempunyai data medan tambahan, memastikan rentetan MIME selalu bermula pada bait 38 fail fizikal.
  • Pemampatan Teks: Semua fail yang tinggal (.xhtml, .css, .opf) dimampatkan menggunakan DEFLATE standard (kaedah ZIP 8), membolehkan novel penuh panjang mengecil menjadi beberapa ratus kilobait.

4. Membandingkan Pemampatan Merentasi Format

FormatMuat UtamaSumber Redundansi UtamaNisbah Pemampatan Biasa (Teks/Markup)Pengendalian Media
DOCXWordprocessingML (document.xml)Tag perenggan/run XML yang berulang75% – 85%Disimpan dalam word/media/ (kebanyakannya pra-dikompress)
XLSXSpreadsheetML (sheet*.xml)Tag sel/baris berulang; Rentetan Berkongsi80% – 92%Jarang; images/charts in xl/media/
PPTXPresentationML (slide*.xml)Metadata susun atur slaid, koordinat bentuk70% – 80%Beban ppt/media/ yang berat mengehadkan penjimatan keseluruhan
EPUBXHTML, CSS, OPF, NCXTag HTML, pemilih CSS berulang65% – 80%mimetype tidak dimampatkan; media dalam subfolder

5. Pengajaran Praktikal: Cara Mengoptimumkan Dokumen Anda

Kerana anda kini mengetahui cara kerja pembungkusan dalaman, anda boleh memanfaatkan mekanisme pemampatan untuk menyelesaikan masalah dunia sebenar:

  1. Membaiki Dokumen Rosak: Jika dokumen menolak dibuka, menukar sambungan kepada .zip membolehkan anda mengekstrak kandungan dan memulihkan teks mentah daripada document.xml atau bab individu daripada direktori text/ EPUB.
  2. Mengecilkan Fail Office Gergasi: Oleh kerana pemampatan XML sudah dioptimumkan, fail besar hampir selalu disebabkan oleh imej yang tidak dioptimumkan dalam media/. Daripada menggunakan pemampat PDF atau DOCX pihak ketiga, buka kontena ZIP, ekstrak imej, jalankan melalui pengoptimum imej (seperti WebP, TinyPNG, atau MozJPEG), dan gantikan imej tersebut di dalam arkib.
  3. Mengautomasi Penjanaan Dokumen: Pemaju tidak memerlukan suite pejabat berat untuk membina laporan. Anda boleh menjana templat XML mentah, menggabungkannya menggunakan perpustakaan zlib/ZIP standard, dan menghasilkan fail DOCX atau XLSX yang sah secara programatik dalam milisaat.

6. Soalan Lazim (FAQ)

Bolehkah saya menukar DOCX atau EPUB kepada fail ZIP hanya dengan menamakan semula sambungan fail? Ya; menamakan semula sambungan kepada .zip membolehkan mana-mana alat arkib standard (seperti 7-Zip, macOS Archive Utility, atau Windows Explorer) membuka dan memeriksa fail dalaman secara langsung.

Mengapa memampatkan DOCX atau PPTX dengan 7-Zip tidak menjadikannya lebih kecil secara ketara? Kerana fail tersebut sudah merupakan arkib ZIP yang dimampatkan secara dalaman mengandungi XML yang dikodkan DEFLATE dan imej yang telah dipra-mampat, meninggalkan sedikit redundansi untuk alat luar mengeluarkannya.

Mengapa spesifikasi EPUB memerlukan fail mimetype tidak dimampatkan? Ia membolehkan perisian e-pembaca mengesahkan bahawa fail tersebut adalah EPUB yang sah dengan memeriksa rentetan MIME pada offset bait tetap tanpa perlu memulakan enjin penyahmampatan.

Adakah mengubah pemformatan sel dalam Excel meningkatkan saiz fail XLSX yang dimampatkan? Ya; pemformatan khusus yang meluas memutuskan pengulangan corak seragam di antara sel, menghasilkan definisi XML yang lebih panjang yang mengurangkan kecekapan pemampatan DEFLATE.

Adakah mungkin mengekstrak imej asal beresolusi tinggi daripada fail Word atau PowerPoint tanpa kehilangan kualiti? Ya; namakan semula fail kepada .zip, buka folder word/media atau ppt/media, dan anda akan menemui imej sumber asal yang tidak dimampatkan tepat seperti ketika dimasukkan.

Lihat Juga