Публикация Школы траблшутеров

Избавлению от шлама поспособствует программа

Время чтения: 4 мин 50 сек
29 мая 2025 г. Просмотров: 931

Оптимизация размеров файлов очередной раз становится во главу угла производительного документооборота. Основатель «Школы траблшутеров» Олег Брагинский и ученики Валерий Хлебнов и Рамиль Мамедов опишут трудности похудения в динамичном компьютерном мире.

Избавлению от шлама поспособствует программа

Современные пакеты офисных программ становятся универсальными монструозными комбайнами. Написанный текст сопровождается графическими материалами запредельного качества для восприятия невооружённым глазом. Фотоотчёты редактируются неприлично долго.

Олег сформулировал задачу: «Книги Школы Траблшутеров, написанные в MS Word тяжелы для конвертирования и пересылки, неповоротливы для редактирования и добавления новых мыслей. Необходимо посадить текстовые документы на цифровую диету для удобной работы с ноутбука».

По структуре файлов знаем, что документы с расширением «.docx» на самом деле являются ZIP‑архивом. Нацелились на оптимизацию картинок и фотографий, хранящихся внутри. Рисунки, скачанные с интернета, имеют неоптимальный формат с дополнительной незримой информацией.

При вставке фотографий с завершённых проектов удивились разрешениям «4K» и «8K». Смартфоны помимо снимка хранят исчерпывающие exif‑данные. Такое качество необходимо только при демонстрации с профессиональных проекторов и не заметно при чтении с планшета.

Искоренять сложности решили с помощью Python. Начального навыка программирования оказалось достаточно для решения нетривиальной задачи. Перед кодированием вскрыли книги вручную – подсмотреть структуру файла. Понимание атомов спрогнозирует последующие шаги.

Оказалось, что файлы MS Word имеют вполне понятную структуру:

  • разметка текстового документа
  • библиотеки стилей
  • хранилище медиа.

Библиотекой «zipfile» достаём папку с изображениями для последующих манипуляций. Имена файлов идут последовательно по мере добавления в книги, именуются «Image1», «Image2» и так далее. Изображения форматов разнится: «*.jpeg», «*.jpg», «*.gif», «*.bin», «*.svg», «*.wdp», «*.emf».

Для обработки выбрали библиотеку Pillow как самую понятную и распространённую. Первые попытки перевести все картинки в наиболее плотный формат «*.webp», разработанный Google, не увенчались успехом. При сохранении файла MS Word конвертирует их в понятный для него «*.png».

Наиболее приемлемый уровень сжатия по весу изображений оказался «*.jpg». «*.gif» демонстрирует наибольшую стройность за счёт ограниченной палитры цветов в 256 единиц. Фотографии создают ощущение сломанного дисплея и шлют «Привет!» из начала миллениума.

Pillow 10.4.0 не умеет работать с прозрачностью. При удалении альфа-слоя пустота закрашивается чёрным цветом. Для заливки белым выкрутились дублированием изображения с последующим использованием в качестве подложки. Прозрачность редко нужна в документах, имеет большой вес.

После конвертации картинок и запаковки MS Word ругался на битую структуру. Замена расширений изображений сбивает с толку внутреннюю разметку. Ответственный находится по пути: «\word\_rels\document.xml.rels». Заменяем старые форматы на изменённые с сохранением.

Распотрошённый и причёсанный комплект документов пытаемся собрать в первозданный ZIP‑архив. При сохранении добавим якорь «_compressed» в имя файла для быстрого распознавания новоиспечённых файлов. Переименование «*.zip» в «*.docx» завершает работу.

После тестирования скрипта дописываем обвязку для работы со всеми файлами, имеющими расширение «*.docx», расположенными в текущей директории. Позволит не заморачиваться с прописыванием путей расположения целевых документов. Финалим скрипт в exe‑программу.

Под каждый проект, планируемый для компиляции, необходимо создавать рабочее окружение. В противном случае в программу упакуются все присутствующие библиотеки на рабочей станции, а не необходимые. Склеиваем всё в единый файл, добавляем логотип, рисуем псевдоинтерфейс.

После отработки написанная программы демонстрирует сжатие файлов MS Word до 60%. Редактирование книг стало более комфортным. Удешевилось хранение на облачных хранилищах. Упростилась пересылка по электронной почте. Экспорт в PDF-формат перестал утомлять.

Итоговый вес программы со всеми библиотеками получился менее 10 мегабайт, что считается неплохим результатом для сегодняшнего дня и абсолютно неприемлемым для гуру, познавших Assembler. Экономию по времени юзания чужих библиотек ставим в противовес функционалу.

С приходом искусственного интеллекта в программирование не можем опираться на константы. ИИ по своему усмотрению оптимизирует алгоритмы и выдаёт неожиданные результаты. Уже через короткое время увидим, как изменятся структуры файлов и придётся начинать всё сначала…