Проект re-lab публикует первую документацию по форматам Microsoft Visio

У нашего маленького хулиганского проекта re-lab есть для вас новости касательно реверс-инженеринга двоичных форматов Microsoft Visio. Как вы, вероятно, помните из околоновогоднего отчёта, особого прогресса с разбором VSD не было с 2007 года. Что же изменилось?

Начнём с начала. Microsoft Visio — достаточно популярное приложения для создания схем и диаграмм, полностью заменить которое до сих пор не может ни одно свободное приложение. Вместе с тем, даже минимальная поддержка, только на чтение, уже была бы существенным прогрессом.

A network diagram by Jinho.Jung created with Visio

Мы начали работу над разбором VSD в 2007 году исходя из того, что единственной видимой причиной отутствия поддержки формата был недостаток информации о нём. Так, например, до сих пор говорится на сайте редактора схем Dia, который, как мы надеялись, должен был стать первым приложением, читающим VSD и VSS. Так что мы принялись за работу и почти полностью разобрали шестую и одиннадцатую версии формата, заодно частично разобрав менее популярные четвёртую и пятую версии. В ходе работы было написано два вспомогательных приложения: vsdump, для сброса двоичных данных VSD, и vsdviewer (понятно для чего).

Вскоре мы столкнулись с двумя проблемами. Во-первых, наш собственный код оставлял желать лучшего и для публичного использования не годился. Во-вторых, ни один проект не взялся реализовать фильтры импорта VSD и VSS; надежда на Dia не оправдалась. Как результат, в течение примерно трёх лет ничего не происходило.

В январе этого года Валя портировал код разбора VSD и VSS из vsdviewer в OLE toy — новую вспомогательную программу, которую в конце прошлого года он написал для разбора формата Microsoft Publisher. Т.е. теперь если вам вдруг захочется поизучать устройство VSD изнутри, сделать это очень легко:

OLE toy

Тем не менее, несмотря на существование кода для разбора документов Visio собственно документации в открытом виде до сих пор не было. Почему до сих пор? Сегодняшнее обновление в репозитории Git проекта состоит из двух частей. Первая часть улучшает разбор чанков VSD, а вот вторая — добавляет первую версию документации по форматам. Если вам интересна только документация, можно просто скачать файлы по одному через веб-интерфейс к Git. Приложение OLE toy находится в репозитории tools, документация по VSD — в репозитории graphics.

Имеющейся документации достаточно для того, чтобы начать работу над поддержкой форматов в том или ином свободном приложении, а OLE toy позволяет выяснить остальное.

Есть ли надежда, что о вас позаботятся разработчики собственно редакторов схем? Одним из проектов Google Summer of Code этого года является поддержка файлов VSD в LibreOffice Draw, и мы (на самом деле, только Валя) уже контактируем со студентом и его руководителем. По всей видимости, Draw станет первой программой, поддерживающей документы Visio.

Как и все прочие наши спецификации, документация на форматы файлов Visio, полученная в результате реверс-инженеринга, распространяется на условиях Creative Commons Share-Alike 3.0 Unported.

1 Trackback / Pingback

  1. Что нового в OLE Toy | Мультимедиа в Linux

Комментарии закрыты.