Иван О. С. Posted August 6 Share Posted August 6 (edited) Добрый вечер. Задача нетривиальная, из серии "было бы просто - не стал бы спрашивать". При сохранении на собирающемся зависнуть компе документа visio он больше не открывается и выдает ошибку открытия файла (внутренняя ошибка # 2132) с предложением закрыть visio и открыть снова. На другом компе не открывается, libre office draw и смотрелка от Асмографа рисуют один пустой листочек. По счастью, это не рабочий документ, а набор корешков для папок с бумажными документами - неприятно, но не смертельно. Но хотелось бы спасти содержимое хотя бы в виде картинок. Ситуация осложняется тем, что это бинарный файл vsd, а не vsdx, который можно было бы открыть архиватором и распаковать папку с картинками. Есть ли какие-то программы, которые это могут открыть / восстановить? Упреждая попытки дать лёгкий рецепт решения проблемы - временных файлов похожего размера и с содержимым в формате visio на компе не найдено. Edited August 6 by Иван О. С. Link to comment Share on other sites More sharing options...
Trotil Posted August 7 Share Posted August 7 Приложи, пожалуйста, битый файл vsd и для сравнения с ним любой хороший файл vsd. Link to comment Share on other sites More sharing options...
Иван О. С. Posted August 7 Author Share Posted August 7 (edited) А что это даст, если файл бинарный? Битый файл отличается тем, что там в какой-то момент обрывается смысловая часть и идет куча пробелов, которых в хорошем файле нет. И да, размер файла 68 МБ, из них 6 МБ пробелов в конце. А файл тяжелый, потому что там много картинок в виде OLE объектов. Хотя бы их оттуда вытащить бы. Чтобы приклеить концовку от файла с другим содержимым - нужно понимать, где начинается конец файла и на каком месте оборвался битый файл, не нужно ли отгрызть ещё что-то. Edited August 7 by Иван О. С. Link to comment Share on other sites More sharing options...
Trotil Posted August 7 Share Posted August 7 Вот я и хотел посмотреть, что там в конце, только вряд ли там пробелы, скорей всего нулевые байты (0x00), пробел - это 0x20. Да, нужно найти парсер vsd с исходным кодом и смотреть, в каком месте парсер запнётся из-за ошибки структуры vsd, ну а затем минимально доработать парсер, чтобы обойти проблему и экспортировать всё, что нужно. Вот я нашёл один проект, который работает с парсером vsd от LibreOffice: https://github.com/kakwa/libvisio2svg?tab=readme-ov-file Link to comment Share on other sites More sharing options...
Иван О. С. Posted August 7 Author Share Posted August 7 23 минуты назад, Trotil сказал: Да, нужно найти парсер vsd с исходным кодом и смотреть, в каком месте парсер запнётся из-за ошибки структуры vsd, ну а затем минимально доработать парсер То есть инструмент для восстановления нужно родить самому, готовых решений не будет? Link to comment Share on other sites More sharing options...
Иван О. С. Posted August 7 Author Share Posted August 7 (edited) Насколько я понял, можно попытаться с помощью HEX-редактора вытащить рисунки в формате jpg, они вроде в теле файла кучей лежат как есть. Выяснить бы теперь, в каком виде туда попадают emf файлы и доступны ли они к изъятию. В принципе, я нашёл предыдущую версию этого файла, которую скидывал коллеге, там процентов 80 сохранилось, так что актуальность задачи ощутимо снизилась. Edited August 7 by Иван О. С. Link to comment Share on other sites More sharing options...
Trotil Posted August 8 Share Posted August 8 (edited) 22 часа назад, Иван О. С. сказал: То есть инструмент для восстановления нужно родить самому, готовых решений не будет? Каждый случай индивидуальный, обычно допиливать руками приходится 15 часов назад, Иван О. С. сказал: можно попытаться с помощью HEX-редактора вытащить рисунки в формате jp Если там действительно jpg лежат, можно попробовать binwalk, очень удобный инструмент по извлечению файлов Он выдаёт смещение и описание того, что нашёл, примерно так: DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 0 0x0 PNG image, 780 x 720, 8-bit/color RGBA, non-interlaced 41 0x29 Zlib compressed data, best compression 153493 0x25795 PNG image, 802 x 118, 8-bit/color RGBA, non-interlaced Экспорт данных, разумеется, он тоже поддерживает. binwalk проще всего установить как готовый пакет в ubuntu, например Edited August 8 by Trotil 1 Link to comment Share on other sites More sharing options...
Иван О. С. Posted August 20 Author Share Posted August 20 Жизнь показала, что Project тоже умеет портить файлы таким же образом - в конце куча пустых байтов. Файл про работу, но чужой, рисую план-график по мотивам, но срисовываю со скана. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now