Работа с открытыми форматами документов: Откройте дверь открытым форматам


Что такое открытый формат

Как известно, цифровые данные представляют собой лишь набор единиц и нулей. Бессмысленную для человека последовательность байтов превращают в видео, звук или текст специализированные приложения, «знающие», как именно следует обрабатывать данные. Чтобы прочесть текст или увидеть изображение, пользователь должен обладать таким приложением. Разработчику программ необходимо знать правила, по которым файл был создан. Если его формат является проприетарным – собственным закрытым форматом производителя программного обеспечения, пользователь попадает в зависимость от него. Такая ситуация называется “vendor lock-in” (замыкание на производителе).

Альтернатива проприетарным – открытые форматы, спецификации которых находятся в свободном доступе, а использование не ограничено. В качестве примера приведем определение из Википедии: «Открытый формат – это общедоступная спецификация хранения цифровых данных, обычно разрабатываемая некоммерческой организацией по стандартизации, свободная от лицензионных ограничений при использовании».

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

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

Как формат становится стандартом

Закономерный итог развития успешной технологии – ее стандартизация. Разработкой стандартов информационных технологий обычно занимаются отраслевые консорциумы. Среди наиболее известных стоит выделить следующие: OASIS (Organization for the Advancement of Structured Information Standards – организация по продвижению стандартов для структурированной информации), W3C (World Wide Web Consortium – консорциум WWW), ECMA (European Association for Standardizing Information & Computer Systems – Европейская ассоциация по стандартизации информационных и вычислительных систем). Утвержденные ими спецификации часто называют стандартами, хотя это не совсем верно.

Стандарты* утверждаются международной организацией по стандартизации ISO, созданной в 1947 году и объединяющей стандартизирующие организации различных стран. Россию в ней представляет Федеральное агентство по техническому регулированию и метрологии.

В ISO стандарт-кандидат проходит шесть стадий: стадию предложения, подготовительную стадию, стадию комитета, стадию вопросов, стадию одобрения, стадию публикации. Однако если заявку подал один из сотрудничающих с ISO консорциумов, процедура проходит по схеме Fast Track, и стандарт попадает сразу на четвертый или пятый этап.

Так было в 2006 году, когда консорциум ECMA подал на утверждение в ISO спецификацию формата документов OOXML (Office Open XML), созданного корпорацией Microsoft и используемого в приложениях MS Office 2007.

* Здесь и далее автор говорит о международных стандартах, принятых в сфере ИТ. Разумеется, кроме стандартов ISO существуют и другие, о которых речи в данной статье не идет.

Войны форматов

К моменту подачи заявки разработанный OASIS формат ODF (Open Document Format) уже был принят как международный стандарт ISO 26300. Поскольку оба формата основаны на XML и предназначены для использования в офисных приложениях, у сторонников открытых технологий и противников Microsoft возник закономерный вопрос: зачем международному сообществу еще один стандарт формата офисных документов? Разгорелся конфликт: стороны не уставали приводить убедительные только для них самих аргументы, считать страницы в спецификациях (у ODF их оказалось значительно меньше) и критиковать друг друга.

Первая попытка утвердить OOXML в ISO оказалась неудачной – голосов не хватило (вопрос об утверждении стандарта решается голосованием по принципу большинства голосов). Однако в апреле 2008 года OOXML все-таки стал международным стандартом и получил номер 29500. Впрочем, история на этом не закончилась: четыре страны подали в ISO апелляцию на решение о стандартизации OOXML. Апелляция была отклонена.

Так или иначе, несмотря на продолжающуюся критику OOXML, Microsoft, а также самого процесса принятия OOXML в ISO, сегодня существуют два стандартных формата офисных документов.

В ходе развития событий наблюдатели не раз вспоминали историю десятилетней давности – так называемую войну браузеров. Тогда речь шла о реализациях одного и того же формата данных – html. Отсутствие стандартизированной спецификации позволяло производителям модифицировать язык гипертекстовой разметки (а также связанные технологии JavaScript и CSS) и реализовывать поддержку этих модификаций в собственных браузерах. Основных противников тогда тоже было двое – Microsoft и Netscape. Из длительного противостояния Microsoft вышел победителем, и опять не за счет объективных преимуществ. Internet Explorer на долгие годы безоговорочно монополизировал рынок браузеров. На руинах поверженного Netscape Navigator впоследствии возник Mozilla Firefox.

Сегодня проблема некорректного отображения страниц сайтов в альтернативных браузерах практически забыта. Если Microsoft выполнит обещания, данные при стандартизации OOXML, и полностью откроет спецификации, с форматами офисных документов случится то же: рядовые пользователи просто перестанут замечать отличия. Разработчикам же нужно будет знать формат документа только для того, чтобы определиться с требуемым программным интерфейсом. Способ получения сведений о формате документа зависит от того, какой из нескольких существующих механизмов задания формата используется.

Как задается и определяется формат файла

Что такое формат данных, интуитивно понимает всякий пользователь, имеющий дело с расширениями файлов. Этот механизм используется, например, в операционной системе Windows. Окончание имени файла, следующее после точки, является указанием на его формат. С расширением может быть ассоциировано приложение, которое по умолчанию используется для открытия файлов такого типа.

Существуют и другие механизмы задания формата.

В UNIX-системах применяются так называемые «магические числа» – последовательности символов, соответствующие формату файла. Соответствие комбинаций чисел и форматов файлов задается в специальном файле magic. В GNU/Linux он обычно находится в каталоге /usr/share/misc/. Определить формат можно при помощи команды file (листинг 1).

Листинг 1. Определение формата файла в ОС Linux с помощью команды file

Code
$ file grep
grep: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV),
 for GNU/Linux 2.4.0, dynamically linked
 (uses shared libs), stripped
$ file oracle-security.pdf
$ oracle-security.pdf: PDF document, version 1.4



В файле magic для форматов ELF и pdf указано следующее (листинг 2).

Листинг 2. Содержимое файла magic

Code
0 string  \177ELF ELF
>4 byte  0  invalid class
>4 byte  1  32-bit
>4 byte  2  64-bit

0 string  %PDF-  PDF document
>5 byte  x  \b, version %c
>7 byte  x  \b.%c



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

Для хранения информации о типе файла могут быть задействованы метаданные файловой системы. Такой способ поддерживается в NTFS, ext2 и ext3. Он также является основным в системе HFS+, используемой в компьютерах Apple Macintosh. Впрочем, современные версии Mac OS поддерживают и механизм расширений.

Еще один способ задать формат файла – использование MIME (Multipurpose Internet Mail Extensions) – многоцелевые расширения электронной почты в интернете). Эта технология была специально разработана для передачи информации внутри сообщений электронной почты, но оказалась настолько удобной, что сегодня применяется для определения типов файлов и в других программах. Например, браузеры определяют по MIME-типу полученного от сервера файла, какие действия необходимо выполнить: HTML-документ будет показан как Web-страница, а файл, содержащий звук или видео, передается для выполнения соответствующему модулю.

Тип файла в MIME имеет вид "базовый тип/подтип", причем базовые типы жестко определены в спецификации (RFC 2822), а подтипы создаются и регистрируются по мере необходимости (таблица 1).

Code
application         Двоичные данные
audio                 Аудиофайлы
image         Изображения
message         Сообщения электронной почты
model         Модели – многомерные структуры, состоящие из объектов
multipart         Составные файлы, состоящие из наборов данных разных типов
text                 Текстовые файлы
video                 Видеофайлы


Например, image/jpeg – это MIME-тип изображения в формате JPEG.

Краткий обзор некоторых открытых форматов

Открытые форматы мультимедийных данных

Название метода сжатия и формата изображений JPEG произошло от названия группы его разработчиков: Joint Photography Experts Group – объединенная группа экспертов в области фотографии. Формат характерен компактностью файлов, но медленным декодированием и "потерей" деталей изображения. Для работы с ним существуют свободные библиотеки с открытыми исходными кодами: например, libjpeg – библиотека, созданная Independent JPEG Group.

Формат файлов изображений с широким динамическим диапазоном OpenEXR разработан компанией Industrial Light & Magic. Применяется для работы с изображениями высокого качества, в том числе при создании компьютерных эффектов в кино. Для этой цели OpenEXR впервые был применен в фильме «Гарри Поттер и философский камень». На сайте формата openexr.com (EN) разработчики предлагают программное обеспечение для работы с ним: приложение exrdisplay для просмотра exr-изображений и средства для программистов – библиотеки IlmImf и Imath, а также c++-класс Half. Формат exr поддерживается большинством приложений для работы с изображениями, поскольку является отраслевым стандартом.

Растровый формат изображений PNG (Portable Network Graphics – переносимая сетевая графика), в отличие от jpeg, использует сжатие без потерь. Функциональная спецификация формата закреплена в стандарте ISO/IEC 15948:2003. PNG поддерживается в большинстве приложений для работы с изображениями, а также в браузерах. Существует официальная библиотека для работы с форматом – libpng. Она, как и libjpeg, входит в состав набора свободных библиотек для работы с изображением FreeImage.

SVG (Scalable Vector Graphics – масштабируемая векторная графика) – основанный на XML формат отображения векторной и векторно-растровой графики на WEB-страницах. Поддерживается всеми браузерами, а также приложениями для работы с векторными изображениями, например CorelDRAW. Файлы SVG можно открывать в обычных текстовых редакторах. Вообще, все форматы, производные от XML, являются надстройками над текстовым форматом.

Аудиоформат FLAC (Free Lossless Audio Codec – свободный аудиокодек без потерь) разработан сообществом Xiph.Org Foundation. Базовые кодеры и декодеры формата доступны в виде библиотек; кроме того, разработчики предлагают утилиты командной строки для работы с flac-файлами.

Особенность разработанного в рамках того же проекта Xiph.Org Foundation формата OGG заключается в том, что сам по себе он является лишь контейнером, содержащим мультимедиа-данные в различных форматах. Файл в формате ogg может содержать аудио- и видеоданные, закодированные различными кодеками, а также текстовые данные – субтитры.

Файлы в формате 7z – архивные файлы, полученные в результате сжатия данных с использованием свободного архиватора 7-zip. Основной алгоритм сжатия LZMA, используемый в формате 7z, имеет открытый SDK.

Открытые форматы разметки документов

Отдельного внимания заслуживают форматы разметки документов, произошедшие от спецификации языка SGML (Standard Generalized Markup Language – стандартный обобщенный язык разметки). К ним относятся формат гипертекстовой разметки документов HTML, а также XML, который сегодня нашел применение практически во всех областях автоматизации.

Язык HTML использует специальные инструкции (теги) для обозначения форматирования содержимого документов. Набор возможных тегов закреплен в спецификации (сейчас консорциумом W3C ведется разработка спецификации HTML 5.0).

В языке XML теги задаются произвольно. Главное – согласовать их перечень между всеми сторонами, принимающими участие в информационном обмене. На основе XML разрабатываются так называемые словари – наборы тегов, позволяющие создавать структуры данных для самых различных применений. В число ставших стандартными словарей входят RSS, MathML, XHTML и уже упоминавшийся здесь SVG.

Язык разметки документов TeX является одновременно и языком программирования. Изначально он был разработан для набора математических формул, а сегодня нашел множество других применений. Упрощенная версия TeX, в которой возможно применение более высокоуровневых инструкций, получила название LaTeX.

Открытые форматы документов

Формат электронных документов PDF (Portable Document Format – переносимый формат документов) – разработка Adobe Systems. Помимо Acrobat Reader – официальной бесплатной программы для работы с PDF-документами, формат поддерживается приложениями OpenOffice, Evince, Foxit Reader, PDFCreator и т.д. Версия 1.7 спецификации формата PDF является международным стандартом ISO 32000.

PostScript – язык описания страниц, используемый для вывода на печатающие устройства текста, изображений и графики. Первая реализация была разработана в Adobe Systems. PS является стандартом де-факто в области допечатной подготовки и поддерживается в принтерах большинства ведущих производителей. Команды PostScript включаются в документ в виде текста. Принтер, поддерживающий этот язык, имеет встроенный интерпретатор PostScript, который и выполняет включенные в текст команды. С файлами в формате PostScript можно работать, например, в приложении Adobe PageMaker, а также в бесплатной программе Ghostscript.

В результате компиляции исходного файла на TeX или LaTeX создается файл в формате DVI (Device Independent Format – не зависящий от устройства формат). Он содержит графический документ, читаемый на всех платформах. Для компиляции используется программа latex. Чаще всего dvi-файл далее конвертируется в PDF.

За аббревиатурой ODF (Open Document Format) скрывается формат документов для офисных приложений, основанный на XML. Разработанный OASIS ODF cтандартизован ISO/IEC под номером 26300. Формат поддерживается такими приложениями, как IBM Lotus Symphony, KOffice, Google Docs. В таблице 2 приведен перечень типов документов, создаваемых в формате ODF.


Code
Вид документа                           MIME-тип                                                         Расширение
Текстовый документ                  application/vnd.oasis.opendocument.text                        odt
Шаблон текстового документа  application/vnd.oasis.opendocument.text-template               ott
Графический документ          application/vnd.oasis.opendocument.graphics                odg
Шаблон графического документа  application/vnd.oasis.opendocument.graphics-template         otg
Презентация                          application/vnd.oasis.opendocument.presentation                 odp
Шаблон презентации                  application/vnd.oasis.opendocument.presentation-template otp
Электронная таблица                  application/vnd.oasis.opendocument.spreadsheet                 ods
Шаблон электронной таблицы  application/vnd.oasis.opendocument.spreadsheet-template ots
Диаграмма                                  application/vnd.oasis.opendocument.chart                         odc
Шаблон диаграммы                  application/vnd.oasis.opendocument.chart-template         otc
Изображение                          application/vnd.oasis.opendocument.image                         odi
Шаблон изображения                  application/vnd.oasis.opendocument.image-template         oti
Формула                                  application/vnd.oasis.opendocument.formula                 odf
Шаблон формулы                  application/vnd.oasis.opendocument.formula-template         otf
Составной текстовый документ     application/vnd.oasis.opendocument.text-master                 odm
Текстовый документ,
используемый как шаблон для
HTML-документов                  application/vnd.oasis.opendocument.text-web                 oth


ODF принят в качестве государственного стандарта в Бразилии, Хорватии, Италии, Корее, ЮАР, Швеции, Венесуэле. Он продолжает развиваться, создаются новые версии спецификации и программные средства разработчиков.

Так, в ноябре 2008 года IBM и Sun объявили о запуске проекта ODF Toolkit Union, призванного объединить программистов, работающих с форматом ODF. В рамках проекта создаются и объединяются программные средства, облегчающие работу с документами. К ним относятся как наборы инструментов разработки, так и программы, позволяющие протестировать соответствие стандарту.

С момента начала распространения персональных компьютеров тысячи, а потом и миллионы конечных пользователей попали в ловушку проприетарных форматов, испытывая ряд сложностей, среди которых:

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

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

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

В результате сегодня мы наблюдаем, как на смену стремлению отдельных производителей разрабатывать собственные форматы и протоколы для всего на свете приходит понимание необходимости работать «в открытую», используя специфицированные форматы хранения и обработки данных, в частности, электронных документов. Примером служит инициатива IBM и Sun – проект ODF Toolkit Union. Средства, разрабатываемые и уже созданные в рамках этого проекта, будут рассмотрены в следующей статье.

Об авторе
Татьяна Василькова - ведущий инженер Научно-исследовательского института средств автоматизации (Минск, Республика Беларусь). Основная область профессиональных интересов – защита информации в информационных системах, в том числе, программные средства безопасности с открытым исходным кодом. Имеет степень магистра технических наук.

Взято с: www.ibm.com