воскресенье, 30 марта 2014 г.

LibreOffice Calc: Выпадающий список значений

Несколько минут своей увольнительной, которая приурочена к тому, что мне остается служить сто дней, хочу потратить на написание мини-урока по LibreOffice Calc.

По своей натуре я интроверт (и в какой то мере мизантроп) и зачастую предпочитаю чтение книг общению с людьми. Но армия такое место, где приходится пересекаться с сотнями людей. К сожалению, большинство из этих «людей» оказываются не очень хорошими, но и среди них встречаются весьма интересные личности. Одной из таких личностей является наш ротный компьютерщик Антон Помельников, который автоматизировал многие рутинные задачи и существенно облегчил нам жизнь (да и себе).

суббота, 5 октября 2013 г.

LibreOffice Calc: Нестандартный числовой формат. Как поставить знак «+» плюс перед числом

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

четверг, 25 октября 2012 г.

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

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

На ум сразу пришло словосочетание "пакетная обработка".
Пакетная обработка изображений — одновременное автоматическое выполнение операций над множеством графических файлов.
У меня уже был опыт пакетной обработки изображений программой ImageMagick. Но сейчас передо мной стояло две проблемы:
  • отсутствие исходных изображений
  • все изображения в документе были разной ориентации
Первая проблема решалась очень просто, .odf документы это xml файлы запакованные в zip архив. И все изображения, вставленные в документ, хранятся в нем. Поэтому я распаковал документ и обнаружил там папку Pictures. В ней и лежали все изображения, оставалось их только обработать.

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

Теперь подробнее о деталях

Пакетная обработка изображений с разной ориентацией

Более подробная информация размещена здесь - http://openite.com/ru/graph/2012/11/15/paketnaya-obrabotka-izobrazheniy-s-raznoy-orientaciey.html

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

Как раз с такой проблемой я и столкнулся. И для ее решения написал небольшой скрипт magick.py.

воскресенье, 14 октября 2012 г.

Создание макросов в LibreOffice 3.6.x

Есть хороший краткий мануал по созданию макросов в LibreOffice - http://habrahabr.ru/post/121149/

Первый шаг в нем гласит:
"Открываем текстовый документ. Перейдем Tools — Macros — Record Macro. Появится маленькое окно «Запись макроса» с одной единственной кнопкой «Завершить макрос» (Stop Recording)"

В переводе "Сервис — Макросы — Записать макрос". Однако по умолчанию в LibreOffice 3.6.x отсутствует пункт "Записать макрос".

Данная пункт включается в "Сервис — Параметры — Общие — Включить запись макроса".

После этого в "Сервис — Макросы" появится пункт "Записать макрос"

четверг, 26 июля 2012 г.

Python: совместимость версий 2.6 и 3.0

Хорошая статья на эту тему - Обзор новых возможностей в Python 2.6 и 3.0

Python 3.х не совместим с Python 2.х, но иногда это можно частично исправить с помощью модуля __future__. Также этот модуль позволяет импортировать нововведения из будущих версий языка.
>>> import __future__ 

Например в Python 2.x для вывода используется стандартное выражение print:
>>> print 'Hello World'
Hello World

А в Python 3.x это выражение превратилось во встроенную функцию print():
>>> print('Hello World')
Hello World

В модуле __future__ для Python 2.x есть функция print_function:
>>> from __future__ import print_function
>>> print('Hello World')
Hello World