вторник, 15 ноября 2016 г.

Восстановление VSDX

Рассматривается один из случаев восстановления документа Visio в формате VSDX. Предыстория. Файл неожиданно перестал открываться. При попытке открытия Visio выдает ошибку.
Способ основан на том, что файл в формате VSDX представляет собой архив ZIP, со-держащий множество вложенных файлов. И этими файлами можно манипулировать. Но не всегда. В сломанном архиве часть операций блокируется. Ниже показан один из вариантов действий в такой ситуации.
Попытка открыть архив с помощью ZIP выводится сообщение, что файл открыть не удается.

Смотрим, чем может помочь RAR.

При попытке протестировать архив получаем сообщение, что он поврежден или имеет неизвестный формат.
Пытаемся просто открыть его. При поиске файла указываем "Все файлы", потому что по умолчанию RAR не считает VSDX архивным файлом.

Что-то открывается, но выводится сообщение о неожиданном конце архива. То есть ошибка в структуре.
Но RAR умеет восстанавливать архивы. Выполняем команду "Восстановить архив".

RAR выводит перечень файлов, которые ему удалось найти, и создает новый (восстановленный) файл.

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

Судя по размещению (папка embeddings) и имени (oleObject.bin), сломан внедренный OLE-объект. Можно предположить, что после его удаления и удаления всех ссылок на него, ос-тавшаяся часть архива будет воспринята Visio как нормальный документ
Однако поиск и исправление ссылок – довольно кропотливая работа. Поэтому реально при восстановлении данного документа пошли другим путем. В Visio был создан пустой файл-приемник. Этот файл также открыт как архив. И из восстановленного архива в новый архив переброшены папки masters, pages и файл Content_Types.xml.
Полученный файл открывается в Visio без сообщения об ошибке и содержимого оказа-лось достаточно для продолжения работы.


Комментариев нет:

Отправить комментарий