- PVSM.RU - https://www.pvsm.ru -

Картинки в doc-файле: снижение веса хирургическим путём

Жил-был на свете один перевод (как процесс, а не как результат). Существовал он таким образом: из pdf-ки с оригинальным текстом вырезались кусочки, вставлялись прямо в Word и снизу посредством значительных мысленных усилий появлялся русский текст, и, как правило, пара-другая сносок. А если в оригинале были сноски, то в сносках тоже появлялись картинки. Перевод шёл, и файл разрастался — в 16-страничном файле было 51 изображение, и Word стал работать так медленно, что перевод никак не мог стать результатом.
Встроенная функция компрессии изображений почему-то совсем не помогала, поэтому было решено произвести вмешательство хирургическим путём.

Файл выглядит вот так (узкие колонки — не текст, а картинки):
Картинки в doc файле: снижение веса хирургическим путём

Во внутренности doc-файла залезть тоже можно, но гораздо проще сделать это в .docx. Пересохраняем. Видим, что само по себе пересохранение ничего не дало — как весил файл 12 мегабайт, так и весит.
Картинки в doc файле: снижение веса хирургическим путём

Как известно, .docx-файл представляет собой zip-архив с особой внутренней структурой — поэтому без всякого труда заглянуть ему в кишки, а там…
Картинки в doc файле: снижение веса хирургическим путём
в распакованном виде директория word весила бы почти семьсот мегабайт! Неудивительно, что Word отказывается работать…
Конечно, главный виновник — изображения, каждое из которых занимает порядка десяти мегабайт:
Картинки в doc файле: снижение веса хирургическим путём

Интересно, почему явно растровые изображения Word хранит в EMF — векторном формате? Вероятно, этому есть какое-то глубинное объяснение, которое будет задействовать аргумент о PDF-источнике («ведь PDF — тоже векторный формат!»), но сейчас нас волнует не это. Чтобы не заморчиваться редактированием файла document.xml при изменении формата рисунков, мы ограничимся всего лишь уменьшением их размера. К счастью, IrfanView среди всех прочих полезных функций умеет писать EMF (Photoshop, например, не умеет из коробки). А ещё он может уменьшать изображения пачками — этой функцией мы и воспользуемся. 800 пикселов по длинной стороне вполне достаточно.
Картинки в doc файле: снижение веса хирургическим путём
(на картинке сверху справа виден фрагмент буквы g — и это ещё уменьшенная по ширине экрана оригинальная версия).

После этого можно запаковать обратно изменённые файлы — весить они будут значительно меньше (в 15 раз):
Картинки в doc файле: снижение веса хирургическим путём.

Word совершенно спокойно съел этот файл. Правда, при сохранении обратно в .doc он несколько потолстел, но всё же совсем не настолько:
Картинки в doc файле: снижение веса хирургическим путём

Итого: файл сжат в 6,5 раз без уменьшения видимого качества (для печати файл не предназначен, но даже и в этом случае выглядел бы он неплохо), процесс перевода пошёл гораздо быстрее (и с меньшим количеством ругательств), а дома стало несколько спокойнее, что, без сомнения, является главным достижением.

Автор: m03r

Источник [1]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/docx/24016

Ссылки в тексте:

[1] Источник: http://habrahabr.ru/post/164683/