Прошло уже больше года с того момента как я расстался со своей второй работой, где достаточно плотно использовал в работе Lazarus для разработки небольших программ под Linux. Именно тогда в блоге публиковались посты про использование формата Open Document и формирование отчётов для OpenOffice. Тогда же я и поделился с вами своим модулем для работы с документом Oo как с zip-архивом. Надо сказать, что первой неожиданностью было то, что такая простенькая работа оказалась полезна кому-то кроме меня =) И спустя некоторое время Бурков Сергей aka Leo дважды вносил изменения в модуль и улучшал его работу.
А примерно неделю назад Сергей снова обратился ко мне просьбой разрешить выложить исходники модуля на SourceForge и организовать небольшой, но полезный проект для Lazarus и FPC под названием ODFProc. Ну что ж, я искренне рад, что модуль для работы с OpenOffice продолжает использоваться и даже перерастает в нечто большее, чем просто модуль — в небольшой, но полезный проект. И хоть я в настоящее время и не являюсь постоянным пользователем Lazarus, но тем не менее немного расскажу про новый проект ведь блог посещают не только люди, использующие исключительно Delphi — может кто-то решит присоединиться к проекту и внести свой вклад в его развитие.
Итак, адрес проекта https://sourceforge.net/projects/odfproc/
Проектом руководит Leo. Найти его можно на форуме FreePascal.ru, а точнее в ветке работы над модулем (тут).
Что представляет из себя модуль uOpenOffice.pas (а ныне ODFproc.pas):
Модуль реализует запись документов Oo Writer, используя информацию по формату ODF. При этом в работе НЕ используется UNO Bridge — запись идет напрямую в разные части документа с использованием XMLReader/Writer.
При работе каждый документ представляется в виде zip-архива (так оно и есть — документ представляет собой простой zip) в котором располагаются xml-файлы, каждый из которых содержит какую-либо информацию по документу:
- content.xml — содержит текст документа, таблицы, ссылки на рисунки и т.д.
- styles.xml — содержит стили документа, список шрифтов документа и т.д.
- meta.xml — мета-информация по документу, такая как автор документа, генератор документа, дата создания, статистика документа и т.д.
- META-INF/manifest.xml — содержит описание всего документа, что и где располагается и т.д.
Первоначально мной били реализованы самые простейшие операции по работе с документами Oo Writer — запись текста. Этого было достаточно для реализации всех необходимых операций в моих программах. В последствии Leo дважды вносил изменения в модуль:
- Был добавлено новый класс TTable для формирования таблиц в документа
- Добавлены функции поиска/замены текста в документе
- Добавлены функции по загрузке шаблонов документов
- и т.д.
- Избавили модуль от работы с внешними архиваторами и использовали модуль zipper (frost_asm)
- Исправили работу процедур по поиску/замене текста в сложно форматированных документах (frost_asm)
- На сколько я понял по сообщениям на форуме, также в процессе доработки была попутно организована поддержка LibreOffice

Было бы неплохо если бы на Sourceforge была ссылка не только на SVN-репозитарий, но и на прямое скачивание библиотеки (стабильной версии)
Alexxx, думаю, что такая ссылка обязательно появиться — репозиторию чуть больше суток от роду, ещё всё только начинается
Почему не сделать и для Delphi?
Keeper, можно конечно. Только зачем? В Delphi можно и без выкрутасов с zip-архивами всё прекрасно сделать, через UNO.
Влад, для работы через UNO, надо разобраться с UNO, а с компонентами или библиотеками гораздо проще разобраться.
Здравствуйте, я из Бразилии, извините, не знаю России использовал Google Translator. Мне нужно создать некоторые отчеты в Open Office от Лазаря, ваш компонент был очень хорош, но как привести пример, составленный в Лазаре, хотя основные, чтобы увидеть, как операция (. Ехе и источник). Уже благодарна внимания