<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Пакування ZIP on File Format Blog</title>
    <link>https://blog.fileformat.com/uk/tag/%D0%BF%D0%B0%D0%BA%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F-zip/</link>
    <description>Recent content in Пакування ZIP on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>uk</language>
    <lastBuildDate>Thu, 10 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/uk/tag/%D0%BF%D0%B0%D0%BA%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F-zip/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Як працює стиснення всередині EPUB, DOCX, XLSX та PPTX?</title>
      <link>https://blog.fileformat.com/uk/compression/how-compression-works-inside-epub-docx-xlsx-and-pptx/</link>
      <pubDate>Thu, 10 Sep 2026 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/uk/compression/how-compression-works-inside-epub-docx-xlsx-and-pptx/</guid>
      <description>Колись задумувалися, що приховано всередині файлу .docx або .epub? Дослідіть, як пакування ZIP та стиснення DEFLATE роблять сучасні офісні документи та електронні книги легкими та організованими. </description>
      <content:encoded><![CDATA[<p><strong>Останнє оновлення</strong>: 10 вересня, 2026</p>
<figure class="align-center ">
    <img loading="lazy" src="images/how-compression-works-inside-epub-docx-xlsx-and-pptx.png#center"
         alt="How Compression Works Inside EPUB, DOCX, XLSX, &amp; PPTX: The Hidden ZIP Architecture"/> 
</figure>

<h2 id="як-працює-стиснення-всередині-epub-docx-xlsx-та-pptx">Як працює стиснення всередині EPUB, DOCX, XLSX та PPTX</h2>
<p>Якщо ви перейменуєте файл <code>.docx</code>, <code>.xlsx</code>, <code>.pptx</code> або <code>.epub</code> у <code>.zip</code> і двічі клацнете по ньому, станеться щось несподіване: система не виведе помилку. Операційна система відкриє його як папку, заповнену підкаталогами, XML‑файлами конфігурації, таблицями стилів, шрифтами та вбудованими зображеннями.</p>
<p>Сучасні архітектури документів відкинули монолітні бінарні блоби ще десятиліття тому. На їхньому місці індустріальні стандарти — а саме <strong>Open Packaging Conventions (OPC)</strong> для Microsoft Office та <strong>Open Container Format (OCF)</strong> для EPUB — прийняли надзвичайно елегантну основу: скромний <strong>ZIP-архів</strong>.</p>
<p>Розуміння того, як працює стиснення в цих форматах, розкриває, чому сучасні документи такі стійкі, легкі та розширювані — і чому деякі файли стискаються на 90 %, тоді як інші майже не зменшуються.</p>
<h2 id="1-архітектура-контейнерів-приховані-zip9-пакети">1. Архітектура контейнерів: Приховані <a href="https://docs.fileformat.com/compression/zip/">ZIP</a> пакети</h2>
<p>Перш ніж розбирати сам алгоритм стиснення, корисно зрозуміти, чому сучасні формати документів організовані як пакети, а не як окремі необроблені файли.</p>
<h3 id="проблема-зі-старими-бінарними-форматами">Проблема зі старими бінарними форматами</h3>
<p>Протягом 1990‑х та початку 2000‑х років Microsoft Office використовував пропрієтарні бінарні формати (<code>.doc</code>, <code>.xls</code>, <code>.ppt</code>). Ці файли були по суті дампами пам&rsquo;яті, структурованими навколо Compound File Binary Format (CFBF). Вони були сумнозвісно крихкими:</p>
<ul>
<li>Один лише бітовий збій міг пошкодити всю структуру файлу.</li>
<li>Вбудовування зображень призводило до непередбачуваного збільшення розміру файлів.</li>
<li>Парсинг вимагав зворотного інжинірингу складних бінарних специфікацій.</li>
<li>Крос‑платформна взаємодія була справжнім кошмаром.</li>
</ul>
<h3 id="перехід-до-відкритих-модульних-контейнерів">Перехід до відкритих, модульних контейнерів</h3>
<p>У середині 2000‑х років відбулися два паралельні еволюційні процеси:</p>
<ol>
<li><strong>Office Open XML (OOXML / ISO/IEC 29500):</strong> Microsoft представила формати на основі XML, що закінчуються на <code>x</code> (<a href="https://docs.fileformat.com/word-processing/docx/">DOCX</a>, <a href="https://docs.fileformat.com/spreadsheet/xlsx/">XLSX</a>, <a href="https://docs.fileformat.com/presentation/pptx/">PPTX</a>). Під капотом ці файли слідують <strong>Open Packaging Conventions (OPC)</strong>.</li>
<li><strong><a href="https://docs.fileformat.com/ebook/epub/">EPUB</a> (IDPF / W3C):</strong> Цифрове видавництво відійшло від пропрієтарних форматів читачів до стандартних веб‑технологій (HTML, CSS, SVG), упакованих у <strong>EPUB Open Container Format (OCF)</strong>.</li>
</ol>
<p>Обидві архітектури спираються на стандартну <strong>PKZIP 2.0 / ZIP specification</strong>. Розширення файлу просто визначає очікувану схему, типову програму перегляду та оголошення mime‑type.</p>
<pre tabindex="0"><code>Sample DOCX File (Unzipped):
├── [Content_Types].xml        &lt;-- Registry of MIME types for parts
├── _rels/                     &lt;-- Package-level relationships
│   └── .rels
├── docProps/                  &lt;-- Core and extended metadata
│   ├── app.xml
│   └── core.xml
└── word/                      &lt;-- Main content payload
    ├── document.xml           &lt;-- Text, paragraphs, and tags
    ├── styles.xml             &lt;-- Typography and presets
    ├── numbering.xml          &lt;-- Lists and counters
    ├── media/                 &lt;-- Embedded images (PNG, JPG)
    └── _rels/
        └── document.xml.rels  &lt;-- Internal hyperlinks &amp; resource pointers
</code></pre><h2 id="2-двигун-під-капотом-алгоритм-deflate">2. Двигун під капотом: алгоритм DEFLATE</h2>
<p>Коли програмне забезпечення зберігає файл DOCX або EPUB, воно не просто розміщує файли в не стиснутому архіві. Воно стискає внутрішні ресурси за допомогою <strong>DEFLATE</strong> (вказано у RFC 1951).</p>
<p>DEFLATE — це двоступенева безвтратна система стиснення, що поєднує два фундаментальні алгоритми інформатики:</p>
<h3 id="крок-1-lz77-lempel-ziv-1977--видалення-надлишковості-за-допомогою-ковзного-вікна">Крок 1: LZ77 (Lempel-Ziv 1977) — Видалення надлишковості за допомогою ковзного вікна</h3>
<p>XML та HTML надзвичайно багатослівні. Подумайте, як часто теги з’являються у стандартному файлі <code>document.xml</code> або <code>chapter1.xhtml</code>:</p>
<ul>
<li><code>&lt;w:p&gt;&lt;w:r&gt;&lt;w:rPr&gt;&lt;w:sz w:val=\&quot;24\&quot;/&gt;&lt;/w:rPr&gt;&lt;w:t&gt;</code> повторюється тисячами разів у Word.</li>
<li><code>row r=\&quot;1\&quot; spans=\&quot;1:15\&quot;&gt;&lt;c r=\&quot;A1\&quot; t=\&quot;s\&quot;&gt;&lt;v&gt;</code> повторюється в Excel у десятках тисяч клітинок.</li>
<li><code>&lt;p class=\&quot;calibre1\&quot;&gt;&lt;span class=\&quot;body-text\&quot;&gt;</code> повторюється у розділах книги EPUB.</li>
</ul>
<p>LZ77 сканує потік даних, використовуючи ковзне вікно словника (зазвичай 32 КБ). Коли він натрапляє на рядок символів, який нещодавно бачив, він замінює дубльований текст на маленький зворотний вказівник:</p>
<ul>
<li><code>(distance, length)</code> — напр., &quot;повернутись назад на 142 байти, скопіювати 28 байт&quot;.</li>
</ul>
<p>Замість того, щоб зберігати об&rsquo;ємну розмітку знову і знову, LZ77 стискає тисячі повторюваних XML‑тегів у компактні координатні посилання.</p>
<h3 id="крок-2-кодування-хаффмана--кодування-частоти-змінної-довжини">Крок 2: Кодування Хаффмана — Кодування частоти змінної довжини</h3>
<p>Після того, як LZ77 замінює надлишкові послідовності токенами довжина‑відстань, <strong>Huffman coding</strong> аналізує частоту кожного символу у потоці:</p>
<ul>
<li>Символи, що часто зустрічаються (наприклад, поширені символи <code>e</code>, <code>t</code>, пробіли або загальні маркери відстані), отримують короткі бінарні коди (наприклад, 2‑4 біти).</li>
<li>Рідко використовувані символи отримують довші бінарні коди (наприклад, 12‑16 біт).</li>
</ul>
<p>Результат — це потік бітових кодів змінної довжини, які стискають звичайний текстовий XML на <strong>75% до 88%</strong>.</p>
<h2 id="3-розбір-формату-за-форматом-як-кожен-справляється-зі-стисненням">3. Розбір формату за форматом: як кожен справляється зі стисненням</h2>
<p>Хоча DOCX, XLSX, PPTX і EPUB використовують один і той же ZIP‑контейнер, їх внутрішні характеристики даних різняться дуже сильно.</p>
<h3 id="a-docx-балансування-тексту-та-стилізації">A. DOCX: Балансування тексту та стилізації</h3>
<ul>
<li><strong>Що всередині:</strong> звичайний XML (<code>word/document.xml</code>), таблиці шрифтів, стилі, каталоги зв’язків і папка <code>word/media/</code>.</li>
<li><strong>Як працює стиснення:</strong>
<ul>
<li>Необроблений текст і розмітка XML досягають величезних коефіцієнтів стиснення (часто зменшуючись з 5 МБ необробленого XML до 500 КБ).</li>
<li>Однак у сучасних документах часто вбудовуються скріншоти, ілюстрації та фотографії. Оскільки файли JPEG і PNG <strong>вже стиснені</strong>, DEFLATE не може їх ще більше стискати. Насправді, застосування DEFLATE до вже стисненого зображення дає практично 0 % економії (а може навіть трохи збільшити розмір через заголовки стиснення).</li>
<li>Внаслідок цього DOCX‑файли без зображень надзвичайно малі, тоді як звіти, насичені зображеннями, майже точно відповідають розміру вбудованих файлів зображень.</li>
</ul>
</li>
</ul>
<h3 id="b-xlsx-дані-великого-обсягу-числових-даних-та-спільних-рядків">B. XLSX: Дані великого обсягу числових даних та спільних рядків</h3>
<p>Електронні таблиці створюють унікальну проблему: лист може містити сотні тисяч рядків, що призводить до астрономічних розмірів XML‑файлів, якщо не підходити до цього розумно.</p>
<ul>
<li><strong>Стратегія спільних рядків (<code>xl/sharedStrings.xml</code>):</strong>
<ul>
<li>Якщо текстова мітка, наприклад &ldquo;United States&rdquo; або &ldquo;In Progress&rdquo;, з&rsquo;являється 50,000 разів у електронній таблиці, збереження <code>&lt;c t=&quot;inlineStr&quot;&gt;&lt;is&gt;&lt;t&gt;United States&lt;/t&gt;&lt;/is&gt;&lt;/c&gt;</code> у 50,000 клітинках призведе до розширення не стисненого XML до гігабайтів.</li>
<li>Excel усуває дублікати тексту перед стисненням, зберігаючи кожен унікальний рядок один раз у таблиці спільних рядків і посилаючись на нього за числовим індексом (наприклад, <code>&lt;v&gt;0&lt;/v&gt;</code>, <code>&lt;v&gt;1&lt;/v&gt;</code>).</li>
</ul>
</li>
<li><strong>Чому XLSX стискається драматично:</strong>
<ul>
<li>Числові записи рядків (<code>sheet1.xml</code>) мають повторюваний, передбачуваний синтаксис.</li>
<li>DEFLATE легко виявляє повторювані шаблони у табличному XML. Звично, що необроблений файл <code>sheet1.xml</code> розміром 120 MB стискається до менше ніж 6 MB у архіві XLSX.</li>
</ul>
</li>
</ul>
<h3 id="c-pptx-слайддеки-з-великою-кількістю-медіа">C. PPTX: Слайд‑деки з великою кількістю медіа</h3>
<p>Презентації принципово відрізняються від документів та електронних таблиць:</p>
<ul>
<li><strong>Дилема зображень:</strong> Файли PPTX зазвичай переважаються векторними формами, фоновими графіками, відеокліпами та слайдами високої роздільної здатності.</li>
<li><strong>Профіль стиснення:</strong> Хоча <code>ppt/slides/slide1.xml</code> до <code>slideN.xml</code> стискаються ефективно, медіапакет (<code>ppt/media/</code>) становить від 85% до 95% загальної ваги архіву.</li>
<li><strong>Чому повторне архівування PPTX нічого не змінює:</strong> Якщо спробувати стиснути вже збережений файл PPTX за допомогою 7-Zip або WinRAR, ви помітите майже відсутнє зменшення розміру. Це тому, що всередині вже є ZIP-архів, стиснений методом DEFLATE, що містить попередньо стиснені JPEG та MP4, і ентропія вже майже максимальна.</li>
</ul>
<h3 id="d-epub-вебтехнології-з-обовязковим-не-стисненим-заголовком">D. EPUB: Веб‑технології з обов’язковим не стисненим заголовком</h3>
<p>Файл EPUB по суті є адаптивним, упакованим мікросайтом, що містить розділи у форматі XHTML, таблиці стилів CSS, шрифти TTF/WOFF та метадані. Однак у EPUB є одне суворе правило упаковки, яке відрізняє його від файлів Microsoft Office:</p>
<pre tabindex="0"><code>EPUB Internal Structure:
├── mimetype                    &lt;-- MUST be uncompressed (Stored) &amp; at byte offset 38
├── META-INF/
│   └── container.xml           &lt;-- Tells reader where the OPF manifest lives
└── OEBPS/ (or EPUB/)
    ├── content.opf             &lt;-- Manifest of all book assets
    ├── toc.ncx / nav.xhtml     &lt;-- Table of contents navigation
    ├── styles/style.css        &lt;-- CSS formatting
    ├── images/                 &lt;-- Book cover &amp; illustrations
    └── text/                   &lt;-- chapter1.xhtml, chapter2.xhtml
</code></pre><ul>
<li><strong>Чарівний файл <code>mimetype</code>:</strong>
<ul>
<li>Електронні рідери повинні одразу ідентифікувати EPUB без розпакування всього архіву чи запуску процесів декомпресії.</li>
<li>Відкритий формат контейнера (OCF) вимагає, щоб файл <code>mimetype</code>:
<ol>
<li>Був першим файлом у ZIP-архіві.</li>
<li>Мав містити точно рядок <code>application/epub+zip</code>.</li>
<li><strong>Не має бути стисненим</strong> (метод стиснення ZIP <code>0</code> / &ldquo;Збережено&rdquo;).</li>
<li>Не повинно містити зайвих даних полів, забезпечуючи, що рядок MIME завжди починається з байту 38 фізичного файлу.</li>
</ol>
</li>
</ul>
</li>
<li><strong>Стиснення тексту:</strong> Усі інші файли (<code>.xhtml</code>, <code>.css</code>, <code>.opf</code>) стискаються за допомогою стандартного DEFLATE (метод ZIP <code>8</code>), що дозволяє повноцінним романам зменшитися до кількох сотень кілобайт.</li>
</ul>
<h2 id="4-порівняння-стиснення-між-форматами">4. Порівняння стиснення між форматами</h2>
<table>
<thead>
<tr>
<th style="text-align:left">Формат</th>
<th style="text-align:left">Основне навантаження</th>
<th style="text-align:left">Основне джерело надмірності</th>
<th style="text-align:left">Типове співвідношення стискання (текст/розмітка)</th>
<th style="text-align:left">Обробка медіа</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><strong>DOCX</strong></td>
<td style="text-align:left">WordprocessingML (<code>document.xml</code>)</td>
<td style="text-align:left">Повторювані XML-теги абзаців/запусків</td>
<td style="text-align:left">75% – 85%</td>
<td style="text-align:left">Збережено в <code>word/media/</code> (переважно попередньо стиснено)</td>
</tr>
<tr>
<td style="text-align:left"><strong>XLSX</strong></td>
<td style="text-align:left">SpreadsheetML (<code>sheet*.xml</code>)</td>
<td style="text-align:left">Повторювані теги клітинок/рядків; Спільні рядки</td>
<td style="text-align:left">80% – 92%</td>
<td style="text-align:left">Рідкісний; зображення/діаграми у <code>xl/media/</code></td>
</tr>
<tr>
<td style="text-align:left"><strong>PPTX</strong></td>
<td style="text-align:left">PresentationML (<code>slide*.xml</code>)</td>
<td style="text-align:left">Метадані макету слайдів, координати форм</td>
<td style="text-align:left">70% – 80%</td>
<td style="text-align:left">Важке навантаження <code>ppt/media/</code> обмежує загальну економію</td>
</tr>
<tr>
<td style="text-align:left"><strong>EPUB</strong></td>
<td style="text-align:left">XHTML, CSS, OPF, NCX</td>
<td style="text-align:left">HTML‑теги, повторювані CSS‑селектори</td>
<td style="text-align:left">65% – 80%</td>
<td style="text-align:left"><code>mimetype</code> не стиснуто; медіа у підпапках</td>
</tr>
</tbody>
</table>
<h2 id="5-практичні-висновки-як-оптимізувати-ваші-документи">5. Практичні висновки: Як оптимізувати ваші документи</h2>
<p>Оскільки ви тепер знаєте, як працює внутрішнє пакування, ви можете використати механізми стиснення для вирішення реальних проблем:</p>
<ol>
<li><strong>Виправлення пошкоджених документів:</strong>
Якщо документ відмовляється відкриватися, зміна розширення на <code>.zip</code> дозволяє розпакувати вміст і відновити сирий текст з <code>document.xml</code> або окремих розділів у каталозі <code>text/</code> EPUB‑файлу.</li>
<li><strong>Зменшення великих офісних файлів:</strong>
Оскільки стиснення XML вже оптимізовано, великі файли майже завжди викликані неоптимізованими зображеннями в <code>media/</code>. Замість використання сторонніх компресорів PDF або DOCX, відкрийте ZIP‑контейнер, витягніть зображення, пропустіть їх через оптимізатор зображень (наприклад WebP, TinyPNG або MozJPEG) і замініть їх у архіві.</li>
<li><strong>Автоматизація створення документів:</strong>
Розробникам не потрібні важкі офісні пакети для створення звітів. Ви можете генерувати сирі XML‑шаблони, збирати їх за допомогою стандартних бібліотек zlib/ZIP і програмно виводити дійсні файли DOCX або XLSX за мілісекунди.</li>
</ol>
<h2 id="6-часто-задавані-питання-faq">6. Часто задавані питання (FAQ)</h2>
<p><strong>Чи можу я конвертувати DOCX або EPUB у ZIP‑файл просто перейменувавши розширення файлу?</strong> Так; перейменування розширення на <code>.zip</code> дозволяє будь‑якому стандартному інструменту архівації (наприклад 7‑Zip, macOS Archive Utility або Windows Explorer) відкривати та безпосередньо переглядати внутрішні файли.</p>
<p><strong>Чому стискання DOCX або PPTX за допомогою 7‑Zip не робить його помітно меншим?</strong> Тому що файл вже є внутрішньо стисненим ZIP‑архівом, що містить XML, закодований за допомогою DEFLATE, і попередньо стиснені зображення, залишаючи мінімальну надлишковість для зовнішнього інструменту.</p>
<p><strong>Чому специфікація EPUB вимагає, щоб файл <code>mimetype</code> був не стисненим?</strong> Це дозволяє програмному забезпеченню електронних рідерів перевіряти, що файл є справжнім EPUB, перевіряючи рядок MIME за фіксованим байтовим зсувом без необхідності ініціалізувати механізм розпакування.</p>
<p><strong>Чи збільшує зміна форматування клітинок в Excel розмір стисненого файлу XLSX?</strong> Так; широке користувацьке форматування порушує однорідність повторення шаблонів у клітинках, створюючи довші XML‑визначення, що знижують ефективність стиснення DEFLATE&rsquo;s.</p>
<p><strong>Чи можливо витягнути оригінальні зображення високої роздільної здатності з файлу Word або PowerPoint без втрати якості?</strong> Так; перейменуйте файл у <code>.zip</code>, відкрийте папку <code>word/media</code> або <code>ppt/media</code>, і ви знайдете оригінальні, не стиснені вихідні зображення точно такими, якими вони були вставлені.</p>
<h2 id="дивіться-також">Дивіться також</h2>
<ul>
<li><a href="https://blog.fileformat.com/compression/compression-file-formats-at-fileformat-com/">Формати файлів стиснення на FileFormat.com</a></li>
<li><a href="https://blog.fileformat.com/compression/zip-bombs-exploding-your-storage/">ZIP-бомби – вибух вашого сховища</a></li>
<li><a href="https://blog.fileformat.com/compression/what-is-7z-file-format-comprehensive-guide-and-faqs/">Розуміння формату файлів 7z – всебічний посібник і FAQ</a></li>
<li><a href="https://blog.fileformat.com/compression/how-to-open-rar-files-with-best-rar-openers/">7 найкращих інструментів для відкриття або розпакування файлів RAR</a></li>
</ul>
<!-- raw HTML omitted -->
]]></content:encoded>
    </item>
    
  </channel>
</rss>
