Terakhir Diperbarui: 10 September, 2026

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

Bagaimana Kompresi Bekerja di Dalam EPUB, DOCX, XLSX, dan PPTX

Jika Anda mengganti nama file .docx, .xlsx, .pptx, atau .epub menjadi .zip dan mengklik ganda, sesuatu yang mengejutkan terjadi: tidak muncul error. Sistem operasi Anda membukanya sebagai folder yang berisi subdirektori, file konfigurasi XML, lembar gaya, font, dan gambar tersemat.

Arsitektur dokumen modern meninggalkan blob biner monolitik beberapa dekade yang lalu. Sebagai gantinya, standar industri—yaitu Open Packaging Conventions (OPC) untuk Microsoft Office dan Open Container Format (OCF) untuk EPUB—mengadopsi fondasi yang sangat elegan: arsip ZIP.

Memahami cara kompresi bekerja di dalam format-format ini mengungkap mengapa dokumen modern begitu tahan lama, ringan, dan dapat diperluas—dan mengapa beberapa file dapat diperkecil hingga 90% sementara yang lain hampir tidak menyusut sama sekali.

1. Arsitektur Kontainer: Paket ZIP yang Disamarkan

Sebelum memahami algoritma kompresi itu sendiri, penting untuk memahami mengapa format dokumen modern disusun sebagai paket alih-alih file mentah yang berdiri sendiri.

Masalah dengan Format Biner Legacy

Sepanjang tahun 1990-an dan awal 2000-an, Microsoft Office menggunakan format biner proprietari (.doc, .xls, .ppt). File-file ini pada dasarnya merupakan dump memori yang terstruktur di sekitar Compound File Binary Format (CFBF). Mereka terkenal sangat rapuh:

  • Satu bit yang terbalik dapat merusak seluruh struktur file.
  • Menyisipkan gambar menyebabkan ukuran file membengkak secara tidak terduga.
  • Parsing memerlukan rekayasa balik spesifikasi biner yang padat.
  • Interoperabilitas lintas platform menjadi mimpi buruk.

Peralihan ke Kontainer Terbuka dan Modular

Pada pertengahan 2000-an, dua evolusi paralel terjadi:

  1. Office Open XML (OOXML / ISO/IEC 29500): Microsoft memperkenalkan format berbasis XML yang berakhiran x (DOCX, XLSX, PPTX). Di balik layar, file-file ini mengikuti Open Packaging Conventions (OPC).
  2. EPUB (IDPF / W3C): Penerbitan digital beralih dari format pembaca proprietari ke teknologi web standar (HTML, CSS, SVG) yang dibundel dalam EPUB Open Container Format (OCF).

Kedua arsitektur bergantung pada PKZIP 2.0 / spesifikasi ZIP standar. Ekstensi file hanya menentukan skema yang diharapkan, aplikasi penampil default, dan deklarasi tipe 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. Mesin di Balik: Algoritma DEFLATE

Ketika sebuah aplikasi perangkat lunak menyimpan file DOCX atau EPUB, ia tidak hanya menyimpan file ke dalam arsip yang tidak terkompresi. Ia mengompresi aset internal menggunakan DEFLATE (ditentukan dalam RFC 1951).

DEFLATE adalah sistem kompresi lossless dua tingkat yang menggabungkan dua algoritma fundamental ilmu komputer:

Langkah 1: LZ77 (Lempel-Ziv 1977) — Penghapusan Redundansi Jendela Geser

XML dan HTML sangat verbose. Pertimbangkan seberapa sering tag muncul dalam file document.xml atau chapter1.xhtml standar:

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

LZ77 memindai aliran data menggunakan jendela kamus geser (biasanya 32 KB). Ketika menemukan rangkaian karakter yang baru saja dilihat, ia menggantikan teks duplikat dengan penunjuk mundur kecil:

  • (distance, length) — mis., “mundur 142 byte, salin 28 byte”.

Alih-alih menyimpan markup yang bertele-tele berulang kali, LZ77 mengompres ribuan tag XML yang berulang menjadi referensi koordinat yang ringkas.

Langkah 2: Pengkodean Huffman — Pengkodean Frekuensi Panjang Variabel

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

  • Simbol yang sering muncul (seperti karakter umum e, t, spasi, atau penanda jarak umum) diberikan kode biner pendek (mis., 2 hingga 4 bit).
  • Simbol yang jarang digunakan menerima kode biner yang lebih panjang (mis., 12 hingga 16 bit).

Hasilnya adalah aliran kode bit dengan panjang variabel yang memampatkan XML teks biasa hingga 75% hingga 88%.

3. Analisis Format demi Format: Bagaimana Setiap Mengelola Kompresi

Meskipun DOCX, XLSX, PPTX, dan EPUB semuanya menggunakan paket ZIP yang sama, karakteristik data internal mereka sangat berbeda.

A. DOCX: Seni Menyeimbangkan Teks dan Gaya

  • Apa isinya: XML biasa (word/document.xml), tabel font, gaya, katalog hubungan, dan folder word/media/.
  • Bagaimana kompresi bekerja:
    • Teks mentah dan markup XML mengalami rasio kompresi yang besar (sering turun dari 5 MB XML mentah menjadi 500 KB).
    • Namun, dokumen modern sering menyertakan tangkapan layar, ilustrasi, dan foto. Karena file JPEG dan PNG sudah terkompresi, DEFLATE tidak dapat memperkecilnya lebih lanjut. Bahkan, menjalankan DEFLATE pada gambar yang sudah terkompresi menghasilkan hampir 0% penghematan (dan bahkan dapat sedikit menambah ukuran karena header kompresi).
    • Akibatnya, file DOCX tanpa gambar sangat kecil, sedangkan laporan yang banyak mengandung gambar hampir memiliki ukuran yang sama dengan file gambar yang terkandung di dalamnya.

B. XLSX: Data Numerik Volume Tinggi & String Bersama

Spreadsheet menghadirkan tantangan unik: sebuah lembar dapat berisi ratusan ribu baris, yang dapat menghasilkan ukuran file XML yang astronomis jika tidak ditangani dengan cerdas.

  • Strategi String Bersama (xl/sharedStrings.xml):
    • Jika label teks seperti “United States” atau “In Progress” muncul 50.000 kali dalam sebuah spreadsheet, menyimpan <c t="inlineStr"><is><t>United States</t></is></c> di 50.000 sel akan membuat XML yang belum dikompresi membengkak hingga gigabyte.
    • Excel menghilangkan duplikasi teks sebelum kompresi dengan menyimpan setiap string unik sekali dalam tabel string bersama dan merujuknya dengan indeks numerik (mis., <v>0</v>, <v>1</v>).
  • Mengapa XLSX Mengalami Kompresi Drastis:
    • Catatan baris numerik (sheet1.xml) mengikuti sintaks yang berulang dan dapat diprediksi.
    • DEFLATE dengan mudah mendeteksi pola berulang dalam XML tabel. Umumnya file sheet1.xml mentah berukuran 120 MB dapat menyusut menjadi kurang dari 6 MB di dalam arsip XLSX.

C. PPTX: Slide Deck Media Berat

Presentasi secara mendasar berbeda dari dokumen dan spreadsheet:

  • Dilema Gambar: File PPTX biasanya didominasi oleh bentuk vektor, grafik latar belakang, klip video, dan slide resolusi tinggi.
  • Profil Kompresi: Sementara ppt/slides/slide1.xml hingga slideN.xml terkompresi secara efisien, muatan media (ppt/media/) menyumbang 85% hingga 95% dari total berat arsip.
  • Mengapa Mengompres Ulang PPTX Tidak Mengubah Apa‑apa: Jika Anda mencoba mengompres file PPTX yang sudah disimpan dengan 7‑Zip atau WinRAR, Anda akan melihat hampir tidak ada pengurangan ukuran. Karena bagian dalamnya sudah berupa arsip ZIP terkompresi DEFLATE yang berisi JPEG dan MP4 yang sudah diprakompresi, entropi sudah mendekati maksimum.

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

File EPUB pada dasarnya adalah mikro‑situs responsif yang dikemas, berisi bab‑bab XHTML, stylesheet CSS, font TTF/WOFF, dan metadata. Namun, EPUB memiliki satu aturan pengemasan ketat yang membedakannya dari file 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
  • File mimetype Ajaib:
    • Pembaca e‑book perlu mengidentifikasi EPUB secara langsung tanpa mengekstrak seluruh arsip atau menjalankan pipeline dekompresi.
    • Open Container Format (OCF) mewajibkan file mimetype untuk:
      1. Harus menjadi file pertama dalam arsip ZIP.
      2. Harus berisi tepat string application/epub+zip.
      3. Tidak boleh dikompresi (metode kompresi ZIP 0 / “Stored”).
      4. Tidak boleh memiliki data bidang tambahan, memastikan string MIME selalu dimulai pada byte 38 dari file fisik.
  • Kompresi Teks: Semua file yang tersisa (.xhtml, .css, .opf) dikompresi menggunakan DEFLATE standar (metode ZIP 8), memungkinkan novel panjang penuh menyusut menjadi beberapa ratus kilobyte.

4. Membandingkan Kompresi Antara Format

FormatPayload IntiSumber Redundansi UtamaRasio Kompresi Umum (Teks/Markup)Penanganan Media
DOCXWordprocessingML (document.xml)Tag XML paragraf/run yang berulang75% – 85%Disimpan di word/media/ (sebagian besar sudah terkompresi)
XLSXSpreadsheetML (sheet*.xml)Tag sel/baris yang berulang; String Bersama80% – 92%Jarang; gambar/diagram di xl/media/
PPTXPresentationML (slide*.xml)Metadata tata letak slide, koordinat bentuk70% – 80%Payload ppt/media/ yang berat membatasi penghematan keseluruhan
EPUBXHTML, CSS, OPF, NCXTag HTML, selector CSS berulang65% – 80%mimetype tidak terkompresi; media dalam subfolder

5. Pelajaran Praktis: Cara Mengoptimalkan Dokumen Anda

Karena Anda sekarang mengerti cara kerja pengemasan internal, Anda dapat memanfaatkan mekanisme kompresi untuk menyelesaikan masalah dunia nyata:

  1. Memperbaiki Dokumen Rusak: Jika sebuah dokumen menolak untuk dibuka, mengubah ekstensi menjadi .zip memungkinkan Anda mengekstrak isinya dan memulihkan teks mentah dari document.xml atau bab-bab individual dari direktori text/ EPUB.
  2. Mengurangi Ukuran File Office Raksasa: Karena kompresi XML sudah dioptimalkan, file besar hampir selalu disebabkan oleh gambar yang tidak dioptimalkan di media/. Alih-alih menggunakan kompresor PDF atau DOCX pihak ketiga, buka kontainer ZIP, ekstrak gambar, jalankan melalui optimizer gambar (seperti WebP, TinyPNG, atau MozJPEG), dan ganti mereka di dalam arsip.
  3. Mengotomatisasi Pembuatan Dokumen: Pengembang tidak memerlukan suite kantor yang berat untuk membuat laporan. Anda dapat menghasilkan templat XML mentah, menggabungkannya menggunakan pustaka zlib/ZIP standar, dan menghasilkan file DOCX atau XLSX yang valid secara programatis dalam hitungan milidetik.

6. Pertanyaan yang Sering Diajukan (FAQ)

Apakah saya dapat mengonversi DOCX atau EPUB menjadi file ZIP hanya dengan mengganti ekstensi file? Ya; mengganti ekstensi menjadi .zip memungkinkan alat arsip standar apa pun (seperti 7-Zip, macOS Archive Utility, atau Windows Explorer) untuk membuka dan memeriksa file internal secara langsung.

Mengapa mengompres DOCX atau PPTX dengan 7-Zip tidak membuatnya jauh lebih kecil? Karena file tersebut sudah merupakan arsip ZIP yang dikompresi secara internal yang berisi XML yang dikodekan dengan DEFLATE dan gambar yang sudah diprakompresi, sehingga menyisakan redundansi minimal untuk dihilangkan oleh alat eksternal.

Mengapa spesifikasi EPUB mengharuskan file mimetype tidak dikompresi? Hal ini memungkinkan perangkat lunak e-reader memverifikasi bahwa file tersebut adalah EPUB yang sah dengan memeriksa string MIME pada offset byte tetap tanpa harus menginisialisasi mesin dekompresi.

Apakah mengubah format sel di Excel meningkatkan ukuran file XLSX yang terkompresi? Ya; format kustom yang ekstensif memutuskan pengulangan pola seragam di seluruh sel, menghasilkan definisi XML yang lebih panjang yang mengurangi efisiensi kompresi DEFLATE.

Apakah memungkinkan mengekstrak gambar asli beresolusi tinggi dari file Word atau PowerPoint tanpa kehilangan kualitas? Ya; ubah nama file menjadi .zip, buka folder word/media atau ppt/media, dan Anda akan menemukan gambar sumber asli yang tidak terkompresi persis seperti saat dimasukkan.

Lihat Juga