آخرین به‌روزرسانی: 10 سپتامبر، 2026

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

چگونه فشرده‌سازی در داخل EPUB، DOCX، XLSX و PPTX کار می‌کند

اگر فایلی با پسوند .docx، .xlsx، .pptx یا .epub را به .zip تغییر نام دهید و دوبار کلیک کنید، اتفاق شگفت‌انگیزی می‌افتد: خطایی نمی‌دهد. سیستم‌عامل شما آن را به عنوان یک پوشه باز می‌کند که شامل زیرپوشه‌ها، فایل‌های پیکربندی XML، شیوه‌نامه‌ها، قلم‌ها و تصاویر جاسازی‌شده است.

معماری‌های مدرن اسناد دهه‌ها پیش بلوک‌های باینری یکپارچه را رها کردند. به جای آن، استانداردهای صنعتی—به‌ویژه Open Packaging Conventions (OPC) برای مایکروسافت آفیس و Open Container Format (OCF) برای EPUB—پایه‌ای شگفت‌انگیزاً زیبا اتخاذ کردند: آرشیو ساده ZIP archive.

درک چگونگی عملکرد فشرده‌سازی درون این فرمت‌ها نشان می‌دهد که چرا اسناد مدرن این‌قدر مقاوم، سبک و قابل گسترش هستند—و چرا برخی فایل‌ها تا ۹۰٪ فشرده می‌شوند در حالی که دیگران به‌سختی کمی کوچک می‌شوند.

1. معماری کانتینر: بسته‌های ZIP مبدل

پیش از درک الگوریتم فشرده‌سازی به‌خودی، مفید است که بفهمیم چرا فرمت‌های مدرن سند به‌صورت بسته‌ها ساختار یافته‌اند نه به‌عنوان فایل‌های خام مستقل.

2. مشکل فرمت‌های باینری قدیمی

در طول دههٔ ۱۹۹۰ و اوایل ۲۰۰۰، مایکروسافت آفیس از فرمت‌های باینری اختصاصی (.doc, .xls, .ppt) استفاده می‌کرد. این فایل‌ها در واقع خروجی‌های حافظه‌ای بودند که حول Compound File Binary Format (CFBF) ساختار یافته بودند. آن‌ها به‌طور بدنامی شکننده بودند:

  • یک تغییر یک بیت می‌توانست کل ساختار فایل را خراب کند.
  • جاسازی تصاویر باعث می‌شد اندازهٔ فایل به‌طور غیرقابل پیش‌بینی بزرگ شود.
  • تحلیل نیاز به مهندسی معکوس مشخصات باینری متراکم داشت.
  • قابلیت همکاری بین‌پلتفرمی یک کابوس بود.

3. تغییر به کانتینرهای باز و مدولار

در اواسط دهه ۲۰۰۰، دو تحول موازی رخ داد:

  1. Office Open XML (OOXML / ISO/IEC 29500): مایکروسافت فرمت‌های مبتنی بر XML که با یک x پایان می‌یابند را معرفی کرد (DOCX, XLSX, PPTX). در پشت صحنه، این فایل‌ها از Open Packaging Conventions (OPC) پیروی می‌کنند.
  2. EPUB (IDPF / W3C): انتشار دیجیتال از فرمت‌های اختصاصی خواننده‌ها به سمت فناوری وب استاندارد (HTML, CSS, SVG) که درون EPUB Open Container Format (OCF) بسته‌بندی می‌شود، حرکت کرد.

هر دو معماری بر استاندارد PKZIP 2.0 / ZIP specification تکیه دارند. پسوند فایل به سادگی طرح‌واره مورد انتظار، برنامه پیش‌فرض نمایشگر و اعلان‌های نوع 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

4. موتور زیر کاپوت: الگوریتم DEFLATE

هنگامی که یک برنامه نرم‌افزاری فایلی DOCX یا EPUB را ذخیره می‌کند، فقط فایل‌ها را در یک آرشیو فشرده‌نشده ذخیره نمی‌کند. بلکه دارایی‌های داخلی را با استفاده از DEFLATE (که در RFC 1951 مشخص شده است) فشرده می‌سازد.

DEFLATE یک سیستم فشرده‌سازی بدون اتلاف دو لایه‌ای است که دو الگوریتم بنیادی علوم کامپیوتر را ترکیب می‌کند:

5. گام 1: LZ77 (Lempel-Ziv 1977) — حذف تکرار با پنجره لغزان

XML و HTML بسیار پرحرف هستند. به این فکر کنید که چقدر برچسب‌ها در یک فایل استاندارد document.xml یا chapter1.xhtml ظاهر می‌شوند:

  • <w:p><w:r><w:rPr><w:sz w:val=\"24\"/></w:rPr><w:t> هزاران بار در Word تکرار می‌شود.
  • row r="1" spans="1:15"><c r="A1" t="s"><v> در اکسل در ده‌ها هزار سلول تکرار می‌شود.
  • <p class="calibre1"><span class="body-text"> در فصول کتاب‌های EPUB تکرار می‌شود.

LZ77 جریان داده را با استفاده از یک پنجره لغزندهٔ واژه‌نامه (معمولاً ۳۲ کیلوبایت) اسکن می‌کند. وقتی رشته‌ای از کاراکترها را می‌بیند که اخیراً دیده است، متن تکراری را با یک اشاره‌گر عقب‌گرد کوچک جایگزین می‌کند:

  • (distance, length) — به عنوان مثال، “به اندازه ۱۴۲ بایت به عقب برگردید، ۲۸ بایت را کپی کنید”.

به‌جای ذخیره‌سازی مکرر نشانه‌گذاری‌های پرحجم، LZ77 هزاران برچسب XML تکراری را به ارجاعات مختصاتی فشرده تبدیل می‌کند.

6. گام 2: کدگذاری هوفمان — رمزگذاری فرکانس با طول متغیر

پس از اینکه LZ77 توالی‌های تکراری را با توکن‌های طول‑فاصله جایگزین می‌کند، کدگذاری هوفمان فراوانی هر نماد را در جریان تجزیه و تحلیل می‌نماید:

  • نمادهای پر تکرار (مانند کاراکترهای رایج e، t، فضاها یا نشانگرهای فاصلهٔ معمول) کدهای باینری کوتاه (به عنوان مثال، ۲ تا ۴ بیت) اختصاص می‌یابند.
  • نمادهای به‌ندرت استفاده‌شده کدهای باینری طولانی‌تری (به عنوان مثال، ۱۲ تا ۱۶ بیت) دریافت می‌کنند.

نتیجه یک جریان از کدهای بیتی با طول متغیر است که XML متنی ساده را تا 75% تا 88% فشرده می‌کند.

7. تجزیه و تحلیل فرمت به فرمت: نحوه فشرده‌سازی هر کدام

در حالی که DOCX، XLSX، PPTX و EPUB همگی از همان بسته ZIP استفاده می‌کنند، ویژگی‌های داده داخلی آن‌ها به‌طرز چشمگیری متفاوت است.

8. A. DOCX: تعادل متن و قالب‌بندی

  • محتویات: XML ساده (word/document.xml)، جداول قلم، سبک‌ها، فهرست‌های رابطه، و پوشه word/media/.
  • نحوه عملکرد فشرده‌سازی:
    • متن خام و نشانه‌گذاری XML نسبت فشرده‌سازی عظیمی را تجربه می‌کنند (اغلب از 5 مگابایت XML خام به 500 کیلوبایت کاهش می‌یابند).
    • با این حال، اسناد مدرن اغلب اسکرین‌شات‌ها، تصویرسازی‌ها و عکس‌ها را در خود جای می‌دهند. چون فایل‌های JPEG و PNG از پیش فشرده هستند، DEFLATE نمی‌تواند آن‌ها را بیشتر فشرده کند. در واقع، اعمال DEFLATE بر روی یک تصویر که قبلاً فشرده شده است تقریباً 0٪ صرفه‌جویی می‌دهد (و حتی ممکن است به دلیل سرآیندهای فشرده‌سازی کمی حجم را افزایش دهد).
    • در نتیجه، فایل‌های DOCX بدون تصویر به‌طور استثنایی کوچک هستند، در حالی که گزارش‌های پر از تصویر تقریباً همان اندازه دقیق فایل‌های تصویری موجود در آن‌ها را نشان می‌دهند.

B. XLSX: داده‌های عددی با حجم بالا و رشته‌های مشترک

صفحات گسترده (اسپریدشیت) چالشی منحصر به‌فرد ارائه می‌دهند: یک شیت می‌تواند صدها هزار ردیف داشته باشد که در صورت عدم پردازش هوشمندانه منجر به اندازه‌های نجومی فایل XML می‌شود.

  • استراتژی رشته‌های مشترک (xl/sharedStrings.xml):
    • اگر برچسب متنی مانند “United States” یا “In Progress” 50,000 بار در یک صفحه‌گسترده ظاهر شود، ذخیره‌سازی <c t="inlineStr"><is><t>United States</t></is></c> در 50,000 سلول باعث افزایش حجم XML بدون فشرده‌سازی به گیگابایت‌ها می‌شود.
    • اکسل قبل از فشرده‌سازی متن‌ها را حذف تکرار می‌کند با ذخیره هر رشتهٔ یکتا یک‌بار در جدول رشته‌های مشترک و ارجاع به آن با شاخص عددی (مثلاً <v>0</v>، <v>1</v>).
  • چرا XLSX به‌طور چشمگیری فشرده می‌شود:
    • رکوردهای ردیف عددی (sheet1.xml) از سینتکس تکراری و پیش‌بینی‌پذیر پیروی می‌کنند.
    • DEFLATE به‌راحتی الگوهای تکراری در XML جدولی را تشخیص می‌دهد. معمول است که یک فایل خام sheet1.xml به‌اندازهٔ 120 مگابایت به کمتر از 6 مگابایت داخل یک بایگانی XLSX کاهش یابد.

C. PPTX: اسلایدهای پر از رسانه

ارائه‌ها به‌صورت اساسی با اسناد و صفحه‌گسترده‌ها متفاوت هستند:

  • معضل تصویر: فایل‌های PPTX معمولاً توسط اشکال برداری، گرافیک‌های پس‌زمینه، کلیپ‌های ویدئویی و اسلایدهای با وضوح بالا تسلط دارند.
  • پروفایل فشرده‌سازی: در حالی که ppt/slides/slide1.xml تا slideN.xml به‌صورت مؤثر فشرده می‌شوند، بار رسانه‌ای (ppt/media/) بین ۸۵٪ تا ۹۵٪ از وزن کل آرشیو را تشکیل می‌دهد.
  • چرا دوباره فشرده‌سازی یک فایل PPTX هیچ تغییری ایجاد نمی‌کند: اگر سعی کنید یک فایل PPTX ذخیره‌شده را با 7-Zip یا WinRAR فشرده کنید، تقریباً هیچ کاهش اندازه‌ای مشاهده نخواهید کرد. زیرا درون‌ساختار آن قبلاً یک آرشیو ZIP فشرده‌شده با DEFLATE است که شامل JPEGها و MP4های پیش‌فشرده می‌باشد و آنتروپی آن تقریباً به حداکثر رسیده است.

D. EPUB: فناوری‌های وب با هدر غیر فشرده اجباری

یک فایل EPUB در واقع یک میکرو‌وب‌سایت واکنش‌گرا و بسته‌بندی‌شده است که شامل فصول XHTML، شیوه‌نامه‌های CSS، فونت‌های TTF/WOFF و متادیتا می‌باشد. با این حال، EPUB یک قانون بسته‌بندی سخت دارد که آن را از فایل‌های 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
  • فایل جادویی mimetype:
    • دستگاه‌های خواندن الکترونیکی باید فوراً یک EPUB را شناسایی کنند بدون اینکه کل آرشیو را استخراج یا خطوط لولهٔ بازگشایی را اجرا کنند.
    • قالب باز کانتینر (OCF) الزام می‌کند که فایل mimetype:
      1. باید اولین فایل در آرشیو ZIP باشد.
      2. باید دقیقاً رشتهٔ application/epub+zip را شامل شود.
      3. نباید فشرده شود (روش فشرده‌سازی ZIP 0 / “Stored”).
      4. نباید دادهٔ فیلد اضافی داشته باشد، به‌طوری که رشتهٔ MIME همیشه در بایت ۳۸ فایل فیزیکی شروع شود.
  • فشرده‌سازی متن: تمام فایل‌های باقی‌مانده (.xhtml, .css, .opf) با استفاده از DEFLATE استاندارد (روش ZIP 8) فشرده می‌شوند، که امکان کاهش رمان‌های تمام‌طول به چند صد کیلوبایت را فراهم می‌کند.

4. مقایسه فشرده‌سازی در فرمت‌های مختلف

قالببار اصلیمنبع اصلی افزونگینسبت فشرده‌سازی معمولی (متن/نشانه‌گذاری)مدیریت رسانه
DOCXWordprocessingML (document.xml)برچسب‌های تکراری پاراگراف/اجرای XML75% – 85%ذخیره شده در word/media/ (اکثراً پیش‌فشرده)
XLSXSpreadsheetML (sheet*.xml)برچسب‌های تکراری سلول/سطر؛ رشته‌های مشترک80% – 92%پراکندگی؛ تصاویر/نمودارها در xl/media/
PPTXPresentationML (slide*.xml)متادیتای چیدمان اسلاید، مختصات شکل70% – 80%بار سنگین ppt/media/ محدودیت در صرفه‌جویی کلی
EPUBXHTML، CSS، OPF، NCXبرچسب‌های HTML، انتخابگرهای تکراری CSS65% – 80%mimetype فشرده‌نشده؛ رسانه‌ها در زیرپوشه‌ها

5. نکات عملی: چگونه اسناد خود را بهینه‌سازی کنیم

چون اکنون می‌دانید بسته‌بندی داخلی چگونه کار می‌کند، می‌توانید از مکانیک‌های فشرده‌سازی برای حل مشکلات دنیای واقعی استفاده کنید:

  1. رفع اسناد خراب: اگر سندی باز نشود، تغییر پسوند به .zip به شما امکان می‌دهد محتوا را استخراج کرده و متن خام را از document.xml یا فصل‌های جداگانه از پوشه text/ EPUB بازیابی کنید.
  2. کوچک‌کردن فایل‌های بزرگ آفیس: از آنجا که فشرده‌سازی XML قبلاً بهینه‌سازی شده است، فایل‌های بزرگ تقریباً همیشه به دلیل تصاویر بهینه‌نشده در media/ ایجاد می‌شوند. به‌جای استفاده از فشرده‌کننده‌های شخص ثالث PDF یا DOCX، محفظه ZIP را باز کنید، تصاویر را استخراج کنید، آن‌ها را از طریق یک بهینه‌ساز تصویر (مانند WebP، TinyPNG یا MozJPEG) عبور دهید و داخل آرشیو جایگزین کنید.
  3. اتوماتیک‌سازی تولید سند: توسعه‌دهندگان نیازی به مجموعه‌های اداری سنگین برای ساخت گزارش‌ها ندارند. می‌توانید قالب‌های XML خام را تولید کنید، آن‌ها را با استفاده از کتابخانه‌های استاندارد zlib/ZIP بسته‌بندی کنید و به‌صورت برنامه‌نویسی، فایل‌های DOCX یا XLSX معتبر را در میلی‌ثانیه‌ها خروجی بگیرید.

6. سؤالات متداول (FAQ)

آیا می‌توانم یک فایل DOCX یا EPUB را فقط با تغییر پسوند فایل به ZIP تبدیل کنم؟ بله؛ تغییر پسوند به .zip به هر ابزار آرشیو استاندارد (مانند 7-Zip، macOS Archive Utility یا Windows Explorer) امکان می‌دهد که فایل‌های داخلی را به‌صورت مستقیم باز و بررسی کند.

چرا فشرده‌سازی یک فایل DOCX یا PPTX با 7-Zip آن را به‌طور قابل‌توجهی کوچکتر نمی‌کند؟ زیرا این فایل از پیش یک آرشیو ZIP داخلی فشرده‌شده است که شامل XML رمزگذاری‌شده با DEFLATE و تصاویر پیش‌فشرده می‌باشد، به‌طوری که تکرارهای بسیار کمی برای حذف توسط ابزار خارجی باقی می‌ماند.

چرا مشخصات EPUB نیاز دارد که فایل mimetype فشرده نشده باشد؟ این امکان را به نرم‌افزارهای خواننده الکترونیکی می‌دهد تا با بررسی رشته MIME در یک آفست بایتی ثابت، صحت یک EPUB واقعی را تأیید کنند، بدون این‌که نیاز به راه‌اندازی موتور فشرده‌سازی داشته باشند.

آیا تغییر قالب‌بندی سلول‌ها در Excel باعث افزایش حجم فایل فشرده XLSX می‌شود؟ بله؛ قالب‌بندی سفارشی گسترده الگوی تکراری یکنواخت در سلول‌ها را می‌شکند و تعاریف XML طولانی‌تری ایجاد می‌کند که کارایی فشرده‌سازی DEFLATE را کاهش می‌دهد.

آیا می‌توان تصاویر اصلی با وضوح بالا را از یک فایل Word یا PowerPoint بدون از دست رفتن کیفیت استخراج کرد؟ بله؛ فایل را به .zip تغییر نام دهید، پوشه word/media یا ppt/media را باز کنید، و تصاویر منبع اصلی و فشرده‌نشده را دقیقاً همان‌گونه که وارد شده‌اند، خواهید یافت.

موارد مرتبط