Ana səhifə

LibreOffice: уменьшение размера документа с помощью пакетной обработки изображений


Yüklə 1.46 Mb.
tarix24.06.2016
ölçüsü1.46 Mb.

LibreOffice: уменьшение размера документа с помощью пакетной обработки изображений


Офисные пакеты 

Недавно мне в руки попал .odt документ весом 120 мб. Я быстро догадался в чем причина такого ожирения, документ содержал большое количество фотографий в высоком разрешении (больше 80 штук), каждая весом около 2 мб. С размером надо было что-то делать, но не вариант по отдельности выуживать все изображения, менять их разрешение и снова вставлять в документ. На ум сразу пришло словосочетание «пакетная обработка».

Пакетная обработка изображений — одновременное автоматическое выполнение операций над множеством графических файлов.

У меня уже был опыт пакетной обработки изображений программой ImageMagick. Но сейчас передо мной стояло две проблемы:



  • отсутствие исходных изображений

  • все изображения в документе были разной ориентации

Первая проблема решалась очень просто.odf документы это xml файлы запакованные в zip архив. И все изображения, вставленные в документ, хранятся в нем. Поэтому я распаковал документ и обнаружил там папку Pictures. В ней и лежали все изображения, оставалось их только обработать. Для решения второй проблемы я написал небольшой скрипт под названием magick.py (скачать). На основе данных о размере ширины и высоты изображения он определяет его ориентацию (портретная или ландшафтная), а затем уменьшает либо высоту, либо ширину. Теперь подробнее о деталях 

Распаковка odt файла


Не все архиваторы понимают расширение .odt, поэтому для распаковки текстового документа нужно переименовать его и вместо .odt написать .zip. LibreOffice перестанет открывать такой документ, но это временно. Далее просто распаковываем этот zip архив штатным архиватором.

 

В качестве примера я использовал документ меньшего размера не 120 мб, а всего каких-то 75. На всякий случай сделал копию документа example.odt, и сменил ему расширение на .zip. Получился архив copy_example.zip, который я и распаковал. 

 

Вот внутренности документа и заветная папка Pictures. В ней лежат все изображения, вставленные в файл. Ничего лишнего в ней больше нет — идеальный вариант для пакетной обработки.


Несколько слов о вставке изображений в LibreOffice


После вставки изображения в LibreOffice исходное изображение копируется в папку Pictures. В самом документе можно уменьшить изображение, обрезать или выполнить другие действия. Но при этом исходное изображение в папке Pictures не изменяется. В качестве примера я обрежу в руководстве скриншот терминала:

   

Исходное изображение в папке Pictures осталось прежним:

Можно смело изменять разрешение изображений, не опасаясь фатальных изменений в структуре самого документа. Конкретно в моем случае после преобразования изображений вообще ничего не поехало.


Пакетная обработка изображений в папке Pictures


Теперь для обработки изображений скопируем скрипт в папку Pictures. Я не буду останавливаться на настройках скрипта и его использовании (все описано в егоруководстве). Просто покажу конечный результат. Напоминаю, что скрипт создает в папке с изображениями папку magick_out, в которой сохраняет обработанные изображения. Не забудьте скопировать с заменой обработанные изображения в папкуPictures и удалить папку magick_out.

Теперь все изображения имеют приемлемый размер и вес. Можно приступать к запаковке архива.


Запаковка архива


Перед тем, как запаковать архив убедитесь, что вы заменили старые изображения на обработанные и удалили папку magick_out из Pictures. Далее нужно выделить все файлы документа и запаковать их в zip архив.

  



После запаковки меняем обратно расширение .zip на .odt



Все, LibreOffice снова сможет открыть файл, который теперь стал гораздо легче. Конечно при желании можно ужать документ и до меньших размеров. Я уменьшал фотографии до 1000 пикселей и с максимальным качеством. Тут пусть каждый сам ищет для себя баланс.


Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©atelim.com 2016
rəhbərliyinə müraciət