<?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>Сжатие в DOCX on File Format Blog</title>
    <link>https://blog.fileformat.com/ru/tag/%D1%81%D0%B6%D0%B0%D1%82%D0%B8%D0%B5-%D0%B2-docx/</link>
    <description>Recent content in Сжатие в DOCX on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ru</language>
    <lastBuildDate>Thu, 10 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/ru/tag/%D1%81%D0%B6%D0%B0%D1%82%D0%B8%D0%B5-%D0%B2-docx/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Как работает сжатие внутри EPUB, DOCX, XLSX и PPTX?</title>
      <link>https://blog.fileformat.com/ru/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/ru/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>). Эти файлы по сути представляли собой дампы памяти, структурированные вокруг 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> — например, &ldquo;вернуться на 142 байта, скопировать 28 байт&rdquo;.</li>
</ul>
<p>Вместо того чтобы хранить многословную разметку снова и снова, 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;, появляется 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/epb+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.</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>
