Создание файла в Open Document Text (ODT) из Delphi

06.08.2020

Создание файла в Open Document Text (ODT) из Delphi

Расширение файла ODT используется для текстовых файлов Open Document, которые чаще всего создаются с помощью бесплатного текстового процессора OpenOffice или LibreOffice. Этот формат документов основан на языке разметки XML и поэтому легко конвертируется.

Чтобы понять, что же это за формат, достаточно встретить открытый стандарт OpenDocument Format (созданный сообществом OASIS), непосредственно связанный с ODT. Так как ODF может хранить и выполнять обмен офисными документами, сюда же относится и расширение файла Open Document Text, содержащее различные отчёты, заметки, книги и так далее. Подробнее о формате ODF мы рассказали в этой статье.

Файл расширением ODT получил особую популярность не так давно, в 2014 году, когда веб-приложения Google Docs вместе с Sheets и Slides обзавелись поддержкой стандарта ODF, соответственно у пользователей появилась возможность сохранять текстовые документы в формате .odt и теперь само расширение файла становится всё более распространенным. Открывать файлы с этим расширением весьма просто, а благодаря языку разметки XML можно легко конвертировать в другие форматы, используя соответствующие утилиты.

Корректно открыть файл, имеющий расширение ODT, возможно используя такие офисные пакеты, как Libre Office, StarOffice, OpenOffice, позволяющие беспрепятственно конвертировать и изменять файлы этого формата. Если же пользователь пытается открыть ODT с применением приложения Microsoft Office, то ему потребуется установка дополнительного плагина из серии ODF Sun Plugin for MS Office. Многие из владельцев ПК выполняют открытие ODT файлов при помощи Corel WordPerfect Office, ещё есть NeoOffice, Lotus Symphony. Выбор, на мой взгляд, обширный! Кстати, отечественный офисный пакет для целей импортозамещения “МойОфис” также использует этот стандарт для своих документов.

Сохраняем в ODT формат из Delphi с помощью FastReport

Почему FastReport? Потому как он предназначен именно для формирования документов! Прежде всего, у вас уже должен быть собран проект с внедрённым FastReport c компонентом “экспорт в Open Documents Text” и сформирован отчёт (по созданию отчётов есть отдельная статья). Запустили, нажимаем в предпросмотре “Сохранить” и вызываем экспорт из предпросмотра (в конце статьи есть способ сохранить в ODT сразу из кода), должно появиться такое окошко настроек:

Средства FastReport помогают выбрать, какие страницы нашего документа отправить в Excel, диапазон или только определенные страницы.

Настройки экспорта – большее визуальное соответствие с начальным вариантом (WYSIWYG), page breaks - сохраняются разрывы страниц, continuous - непрерывный документ с пропуском промежуточных заголовков и подвалов страниц, background - экспорт фоновых графических объектов, присвоенных странице отчета.

Традиционно можно указать, куда мы хотим отправить файл. Экспортировать его в память компьютера, на электронную почту, в облако или же в FTP.

Открыть после экспорта – результирующий файл будет открыт сразу же после экспорта программой, которая стоит по умолчанию для открытия ODS -документов.

Код для сохранения в Open Documents Text сразу из Delphi / Lazarus

Сохранение в ODT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
procedure TForm1.Button2Click(Sender: TObject);
begin
 {Формируем отчёт. Перед экспортом отчёт необходимо обязательно сформировать}
 frxReport1.PrepareReport();
 {Устанавливаем диапазон экспортируемых страниц. По умолчанию экспортируются все страницы сформированного отчёта}
 frxODTExport1.PageNumbers := '2-3';
 {Устанавливаем, нужно ли формировать непрерывный документ}
 frxODTExport1.SingleSheet := False;
 {Устанавливаем, экспортировать ли разрывы страниц в пределах листа книги,}
 {чтобы страницы при печати соответствовали страницам сформированного отчёта}
 frxODTExport1.ExportPageBreaks := True;
 {Устанавливаем WYSIWYG}
 frxODTExport1.Wysiwyg := True;
 {Устанавливаем, нужно ли экспортировать фоновое изображение страницы}
 frxODTExport1.Background := True;
 {Устанавливаем, нужно ли открывать результирующий файл после экспорта}
 frxODTExport1.OpenAfterExport := False;
 {Устанавливаем, нужно ли отображать прогресс экспорта(показывать, какая страница в данный момент экспортируется)}
 frxODTExport1.ShowProgress := False;
 {Устанавливаем, нужно ли отображать окно диалога с настройками фильтра экспорта}
 frxODTExport1.ShowDialog := False;
 {Устанавливаем имя результирующего файла.}
 {Обратите внимание на то, что если не установить имя файла и отключить показ диалогового окна фильтра экспорта,}
 {то всё равно будет отображён диалог выбора имени файла}
 frxODTExport1.FileName := 'C:\Output\test.odt';
 {Экспортируем отчёт}
 frxReport1.Export(frxODTExport1);
end;

Сравнение Microsoft Word 2007 XML и Open Document Text

А всё же, что лучше использовать? Разберёмся с их основой. «Начинка» в данных форматах одинаковая, а именно язык разметки XML. Он является технологией, разработанной для управления структурированными данными и отображения этих данных в виде удобочитаемого текстового файла. Язык XML соответствует отраслевым стандартам и может быть обработан многими базами данных и приложениями. С помощью XML многие разработчики могут создавать собственные настроенные теги, структуры данных и схемы. Данный язык существенно облегчает определение, передачу, проверку и интерпретацию данных в различных базах данных, приложениях и организациях. Это значит, что оба файла представляют собой переименованный в .docx/.odt zip-архив.

Поговорим о возможностях и функционале. Прикрепление комментариев к определенным частям документа делает отзыв более четким, для этого есть функция «Примечания». Когда вы сохраняете документ в формате ODT и снова открываете его в Word 2007, примечания о группе слов становятся одной точкой. Как правило, эта точка отображается в конце группы слов. Таблицы в примечаниях не поддерживаются. Содержимое таблицы сохраняется в примечании, но структура теряется.

Говоря о защите документов и данных, следует вспомнить о функциях «Защита документа» и «Управление правами на доступ к данным (IRM)». При сохранении файла Word в формате ODT эти функции удаляются, открыть такие файлы невозможно.

А вот всеми любимая функция исправления, спасшая не одну жизнь, в ODT работать не будет, вернее, будут приняты все предложенные изменения и ваша информация может нехило пострадать. Преобразуются в обычный текст списки литературы, заголовки, а сноски просто исчезнут.

«Рамки» поддерживаются частично. При сохранении документа Word 2007 в формате ODT рамки преобразуются в текстовые поля, привязки к некоторым областям полей не поддерживаются. При наличии неподдерживаемого содержимого удаляется рамка, но не само содержимое. К нему относятся таблицы, автофигуры, текстовые поля, рамки и графические элементы SmartArt.

При сохранении документа Word 2007 в формате ODT могут теряться свойства некоторых непрерывных разрывов раздела, такие как верхние и нижние поля, колонтитулы, границы и нумерация строк.

«Таблицы» поддерживается частично. В ODT таблицы с более чем 64 столбцами не поддерживаются, а форматирование темы преобразуется в форматирование уровня ячейки. Вдобавок текстовые поля не могут быть вложенными. Ориентация текста в ячейках таблицы тоже не поддерживается.

Если говорить про графические элементы, то что-то работает в любом формате, а что-то вовсе не поддерживается. Группировка некоторых объектов в Word невозможна, поэтому при открытии файла OpenDocument объекты разгруппировываются. Это относится ко всем объектам, сгруппированным с диаграммой, а также к рисункам, сгруппированным с фигурой, надписью или объектом OLE. Может поменяться видимость объектов. После сохранения файла в формате ODT и его повторного открытия в приложении Word невидимые объекты становятся видимыми.

Перечислять все функции можно до бесконечности, я лишь выделил самые интересные. Подробную таблицу-сравнение можно найти тут.

Если говорить о весе файлов, то особо разницы нет. Вордовский документ весит чуть больше из-за  поддержки шифрования, ODT файл это не поддерживает. За основу взяли вот этих прекрасных рыбок. В данном документе много текста, табличные данные и 30 фотографий. Скриншоты для наглядности:

Подведём итог. Оба формата современные, открытые (что немаловажно), поддерживаются многими текстовыми редакторами. преимущество ODT - поддержка опенсорс-коммьюнити, сообществом OASIS, в то время как DOCX одна Microsoft, который сейчас таки развернулся в сторону Open Source инициатив. Выбор за вами, и вашим заказчиком - в любом случае можете рассчитывать на формирование качественных документов с поддержкой стандартов от FastReport. 

2 сентября 2024

Обзор облачного решения для создания и управления отчетами

МоиОтчеты Облако — это мощное облачное решение для создания и управления отчетами, обеспечивающее широкий спектр возможностей, от создания документов в различных форматах до интеграции с корпоративными системами.
12 августа 2024

Как собрать и установить плагин Postgres в FastReport .NET

В этой статье описывается подключение к базе посредством плагина FastReport .NET для дизайнера отчетов из Visual Studio через NuGet-сервер.
8 августа 2024

Как установить FastReport .NET и его компоненты в Windows

Пошаговая инструкция по онлайн и ручной установке через регистрационный код FastReport .NET и его компонентов в Windows.