Какая разница?
Документ в формате ODF, как известно, это банальный ZIP-архив. Если смотреть на это с точки зрения пользователя, то какая, собственно, разница, в каком формате документ записан на диске? — в двоичном, в десятичном, в формате индейцев майя?
Пусть компутер об этом думает — у него под это мозги заточены.
С одной стороны — рассуждения верные. Если пользователь ничего сложнее служебной записки не делает. А если приходится делать сложные документы?
Лень — двигатель прогресса!Я отношусь к той категории бюрократов, которым простые документы не попадаются. Да порой я и из простого документа умудряюсь сделать сложный. Поэтому давно уже вывел максиму: «лучше день потерять, зато за пять минут долететь!» (Её потом в одном мультфильме процитировали).
Это значит, что я всегда ищу способ как можно меньше сделать работы самому, и как можно больше переложить на чужие плечи. И я знаю одного субъекта, который не даст в глаз за то, что на него перевалили чужую работёнку. Благо — у него мозги кремниевые.
То есть, я стараюсь по максимуму автоматизировать все рутинные процессы работы с документом.
Возьмём, для примера, набор ГОСТовских шаблонов управленческих документов — приказ, бланк письма продольный и угловой, и т. д. Для того, чтобы их заточить под конкретную организацию нужно, в совокупности, вписать более 50 (пятидесяти!) параметров. Начиная от названия организации и её формы собственности, кончая кодами ОГРН и прочей лабуды. Казалось бы, что здесь нет проблем — заполнил один раз и забыл.
Ага, счаз.
Чаще всего в данном наборе меняются банковские реквизиты, реже — налоговые (КПП и прочее). Но уже одного этого достаточно, чтобы огрести немалый объём работы по изменению набора бланков.
Лениво.
И как выясняется — OpenOffice.org Writer позволяет легко решить эту проблему с помощью мета-полей и простейших макросов.
Ковыряем ODF
Я приступил к экспериментам. В свойствах документа Witer'а можно создавать неограниченное количество полей, что и было сделано. Понасоздавал в одном шаблоне более тридцати полей и задействовал их в документе. Всё чудесно было до тех пор, пока не взялся за обработку их макросом. И посыпались ошибки. Как выяснилось — ошибка была одна — в имени созданных полей.
По неопытности, я начал их с символа подчёркивания. А он является (вот это новость!) управляющим символом в языках программирования. Выход один — переименовывать все поля. Для этого их надо удалить из самого документа (с введёнными данными, разумеется) и из свойств документа.
Лениво.
Но благо, что склероз ещё не полный, и в памяти всплыло, что документ-то ZIP-архив. Закрываю документ. Распаковываю его как архив, и вытаскиваю из его корня два файла: content.xml и meta.xml.
В meta.xml хранятся описания созданных полей.
В content.xml — сам текст документа с полями и их значениями.
С помощью банального «копипаста» произвожу замену некорректных имён на новые, запихиваю файлы назад в архив и с трепетом открываю документ...
Лень спокойна!
Документ открылся корректно!
Таким образом, мне не пришлось делать всю подготовительную работу заново — не потребовалось вычищать из текста документа поля с ошибочными именами, удалять их затем из свойств документа, создавать новые поля, расставлять их по документу и снова заполнять данными.
Таким образом открытый формат документа — ODF — снова сэкономил мне несколько часов работы.
Лениво!