Terakhir Diperbarui: 10 September, 2026

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:
- 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). - 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 folderword/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>).
- Jika label teks seperti “United States” atau “In Progress” muncul 50.000 kali dalam sebuah spreadsheet, menyimpan
- 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.xmlmentah berukuran 120 MB dapat menyusut menjadi kurang dari 6 MB di dalam arsip XLSX.
- Catatan baris numerik (
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.xmlhinggaslideN.xmlterkompresi 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
mimetypeAjaib:- Pembaca e‑book perlu mengidentifikasi EPUB secara langsung tanpa mengekstrak seluruh arsip atau menjalankan pipeline dekompresi.
- Open Container Format (OCF) mewajibkan file
mimetypeuntuk:- Harus menjadi file pertama dalam arsip ZIP.
- Harus berisi tepat string
application/epub+zip. - Tidak boleh dikompresi (metode kompresi ZIP
0/ “Stored”). - 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 ZIP8), memungkinkan novel panjang penuh menyusut menjadi beberapa ratus kilobyte.
4. Membandingkan Kompresi Antara Format
| Format | Payload Inti | Sumber Redundansi Utama | Rasio Kompresi Umum (Teks/Markup) | Penanganan Media |
|---|---|---|---|---|
| DOCX | WordprocessingML (document.xml) | Tag XML paragraf/run yang berulang | 75% – 85% | Disimpan di word/media/ (sebagian besar sudah terkompresi) |
| XLSX | SpreadsheetML (sheet*.xml) | Tag sel/baris yang berulang; String Bersama | 80% – 92% | Jarang; gambar/diagram di xl/media/ |
| PPTX | PresentationML (slide*.xml) | Metadata tata letak slide, koordinat bentuk | 70% – 80% | Payload ppt/media/ yang berat membatasi penghematan keseluruhan |
| EPUB | XHTML, CSS, OPF, NCX | Tag HTML, selector CSS berulang | 65% – 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:
- Memperbaiki Dokumen Rusak:
Jika sebuah dokumen menolak untuk dibuka, mengubah ekstensi menjadi
.zipmemungkinkan Anda mengekstrak isinya dan memulihkan teks mentah daridocument.xmlatau bab-bab individual dari direktoritext/EPUB. - 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. - 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.