CDRfind - программа для поиска и восстановления рисунков Corel Draw

     Данная программа представляет собой набор полезных инструментов для работы с CDR файлами. Она является более продвинутой версией моей старой утилиты CDRdoct, которая помогала восстанавливать сбойные файлы. Основные полезные функции этой программы - быстрое получение краткой информации о CDR файле (версия, нескривленный текст и шрифты, содержащиеся в файле) не открывая его; просмотр полей RIFF структуры файла в текстовом виде; быстрый поиск нужного файла по содержащемуся в нем текстовому фрагменту или объекту заданных размеров; возможное восстановление информации из сбойных файлов. Рассмотрим их по порядку.

   Для получения краткой информации о CDR файле можно просто указать этот файл программе, как аргумент в командной строке:

CDRfind test.cdr.

Таким образом, можно назначить эту программу как альтернативный viewer для CDR файлов в windows меню "Открыть с помощью". Информация о файле отображается в двух текстовых окнах блокнота. В первом окне отображается краткая информация о файле: версия, подверсия, размер, используемые шрифты и тексты:

Во втором окне отображается "дизассемблированная" RIFF структура файла:

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

   Файл любого размера открывается практически мгновенно, поэтому перед тем, как открывать новый файл в Corel полезно сперва просмотреть его этой утилитой - многое станет понятно, в частности, стоит ли его открывать в Corele вообще. ;-) Другой способ получения информации о файле - открыть его из главного меню программы, нажав кнопку File info и выбрав соответствующий файл.

  Другая полезная функция программы - поиск CDR документа на диске по заданному критерию. Очень часто приходится, имея на руках распечатанный рисунок, нарисованный очень давно, найти его в компьютере среди тысячи файлов, разбросанных по каталогам, и даже не помня его названия. Данная программа очень помогает в этом. Даже если весь текст в макете переведен в кривые, достаточно просто замерить линейкой приблизительный размер объекта и задать его в поиске - программа выдаст все файлы, в которых присутствуют объекты, близкие по размерам. Чтобы вызвать окно поиска файлов, нужно нажать кнопку Search file из основной панели. Панель поиска выглядит следующим образом:

В верхней строке задается маршрут, по которому будет вестись поиск CDR файлов, для выбора надо нажать кнопку Search file и из файлового диалога выбрать любой файл, находящийся в искомом каталоге. Флажок Include subfolders устанавливает, вести ли поиск в подкаталогах заданного каталога. Для поиска файла по текстовому фрагменту установите флажок Include text и укажите сам текстовый фрагмент. Для поиска заданной ширины или высоты установите флажок Width (Height) и установите минимальные и максимальные значения ширины (высоты) объекта в миллиметрах. Параметры поиска можно объединять логическими операторами "И" (And) и "ИЛИ" (Or), устанавливая между критериями соответствующие флажки. К примеру, так будет выглядеть поиск по всему диску С файла, содержащего слово "CMYK" или объект размерами от 100x100 мм до 110x110 мм:

Установив все параметры, нужно нажать кнопку Search. После поиска результат будет выдан в HTML виде:

В нем видно, в каком файле присутствует текст или объект подходящих габаритов.

При помощи данной программы можно так же, как в CDRdoct, пробовать восстанавливать сбойные CDR файлы. Данная функция в настоящий момент находится на стадии разработки, поэтому работает еще не в полном объеме. Однако, пользуясь имеющимися средствами, уже можно восстанавливать некоторые файлы, которые Corel Draw не может открыть. Зайти в режим редактирования/восстановления файлов можно, нажав на кнопку Edit/Restore file с основной панели программы. Общее окно восстановления выглядит так:

Можно открыть сбойный файл, нажав Open file и выбрав его. При этом в левом окне отображается RIFF структура выбранного файла:

В связи с тем, что подавляющее большинство файлов CDR сохраняются в сжатом виде, малейший сбой внутри файла вызывает серьезные проблемы при открытии и восстановлении информации из него. К примеру, порча всего-навсего одного байта внутри сжатого блока графических данных делает невозможной декомпрессию информации, следующей за ним до конца блока, данные теряются безвозвратно. Данная программа позволяет восстановить хотя бы остальные данные в блоке. Еще хуже ситуация, когда файл обрезан в конце (скажем, недокачался из интернета). Дело в том, что в компрессированом файле почему-то длины каждого chunkа вынесены в одну таблицу, хранящуюся в конце блока упакованных данных. Соответственно, если эта таблица отсутствует, даже при полной сохранности данных, теряется связность RIFF структуры и восстановление данных становится очень проблематичным. В связи с этим, настоятельно советую при сохранении файлов отключать компрессию растровых и векторных данных. Файл при этом будет больше по размеру, зато открываться станет быстрее и меньше вероятности гибели его в результате какого-либо сбоя. Но даже если сбой и произойдет, восстанавливать неупакованный файл тоже будет проще.

Рассмотрим основные типы повреждений файлов и перспективы восстановления каждого из них.

Полное разрушение RIFF структуры.

В файле отсутствует сигнатура и заголовок, при попытке открытия программа в логи пишет ошибку This is not RIFF file! Самый тяжелый случай, все данные, скорее всего, безвозвратно потеряны. К сожалению, такие повреждения очень часто случаются из-за дисковых сбоев или, при работе с очень большими файлами (>1Gb). В этом случае, скорее всего, файл, какого бы размера он ни был, забит случайной информацией и данных не содержит вообще. Можно попытаться спасти его, открыв как zip архив в WinZip или WinRar (если версия файла старше X3) Можно попробовать открыть файл программой в режиме Test file, по полученным логам будет понятно, осталась ли внутри файла хоть какая-либо осмысленная информация.

Нарушение RIFF структуры внутри блока данных.

В файле присутствует заголовок и поле sumi в конце, программа корректно определяет версию и показывает дерево RIFF. Но при открытии файла в режиме File info в логе map.log ближе к концу файла попадаются ошибки:

Error ! Bad block length!

Error ! Bad block size!

Warning ! Block sizes not equal!

Unknown object!

В этом случае можно попробовать пересохранить этот файл, нажав кнопку Save file и выбрав имя результирующего файла. Файл будет сохранен в неупакованном виде, и сбойные поля будут выброшены. После этого можно попытаться открыть пересохраненный файл в Corel Draw. При открытии будут возникать ошибки, которые можно игнорировать и в конце концов файл скорее всего все-таки откроется. Если сбой приходится на растровое изображение, внедренное в файл (обычно они занимают большую часть файла), то можно попробовать вытащить из файла только векторную часть. Для этого существует режим Extract vector. Нажав эту кнопку и выбрав исходный и результирующий файлы, мы получим файл, содержащий только векторную часть исходного. При открытии такого файла Corel тоже будет выдавать ошибки, которые можно проигнорировать и открыв, пересохранить файл в нормальный.

Конец файла обрезан.

В этом случае при открытии файла в режиме File info заголовок и версия присутствует, но кроме этого в файле данных - в map.log выдается предупреждение:

Error! Length block truncated! Try 'Export vector' mode for restore file.

Очень тяжелый случай. Данные в файле сохранились, но таблица длин блоков отсутствует, что ведет к краху древовидной RIFF структуры. В этом случае, как нам и советует предупреждение, следует воспользоваться режимом Export vector (не путать с Extract vector).

Режим Export vector part

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

Для того, чтобы запустить этот режим, надо в окне Edit file сперва открыть восстанавливаемый файл через Open file, а затем нажать на кнопку Eхроrt vector part. При этом программа запросит номер экспортируемой страницы:

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

Texts- имеющиеся на странице тексты будут проэкспортированы.

Fonts-имеющиеся в документе ссылки на шрифты будут проэкспортированы (при этом вовсе не обязательно, что шрифтовая разметка в документе сохранится, однако, если отключить эту опцию - разметка потеряется гарантировано).

Fills, Outlines-для экспортируемых векторных объектов будут сохранены оригинальные заливки или обводки. К сожалению, эта опция не всегда распространяется на текстовые объекты, поэтому, при экспорте возможна потеря оригинальных заливок и обводок на текстах. Для начала, установите все эти опции. Если же полученный файл все-таки не открывается, попробуйте еще раз проэкспортировать, убирая эти опции по одной, для начала, жертвуя текстами или заливками. Скорее всего, какой-то урезаный вариант страницы все-таки откроется. При отказе от экспорта в файл заливок, обводок и шрифтов, при открытии полученного файла в Corel возможно, будут возникать ошибки типа "Invalid fill" или "Invalid outline". Их нужно или пропускать или игнорировать - файл в конечном итоге откроется и без них.

RIFF структура полностью сохранена, но файл содержит сбойные объекты.

Несмотря на то, что в этом случае процент повреждений файла самый минимальный, данный случай является, чуть ли не самым сложным для восстановления. Файл открывается через File Info корректно, в map.log полностью отсутствуют ошибки и предупреждения, однако сам CorelDraw данный файл открывать не хочет. Это может происходить по целому ряду причин, и определить, по какой именно, зачастую очень сложно.

В этом случае, если попытки открыть файл всеми возможными способами не увенчались успехом, следует начать препарировать файл при помощи данной программы. Для начала, просто распакуйте файл и попробуйте открыть распакованный. Иногда помогает. В случае, если версия файла старше X3, можно воспользоваться обычным WinZIP или WinRar. Откройте CDR файл как ZIP архив и распакуйте оттуда файл RiffData.cdr и попробуйте открыть корелом его. Попробуйте открыть файл программой в режиме Edit/Restore file и пересохранить файл через Save file. Если полученные файлы все равно не открываются Corelом, попробуйте открыть файл без растровой части, пересохранив его через режим Extract vector part. В самом крайнем случае, попробуйте экспортировать векторную часть в режиме Export vector part.

Если у вас достаточно времени и упорства, а файл вам нужен в максимально полном виде, то можно пробовать просто удалять объекты по одному, пересохранять файл и смотреть, открывается ли он после этого или нет. Для этого в режиме Edit/Restore file откройте нужный файл и выберите chunk, который хотите удалить. Поддерево LIST раскрывается, если нажать на маленький крестик слева возле него. После этого выберите режим Edit chunk->Delete chunk. После удаления объект не удаляется из списка, но его идентификатор в списке заменяется на "XXXX":

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

Поиск сбойного объекта - достаточно утомительное дело, ведь файл может содержать до миллиона chunkов и каждый из них может быть сбойным. Стратегия скорейшего поиска следующая. Если в файле присутствуют стили (поддерево LIST clol), просто удалите их сразу. Если не помогло, попробуйте локализовать сбойную страницу. Удаляйте по очереди все поддеревья LIST page c последующим сохранением, до тех пор, пока файл не начнет открываться. Как только станет ясно на какой странице сбой, ту же самую операцию проделайте со слоями внутри сбойной страницы: по очереди удаляйте поддеревья page->gobj->layr. После этого, внутри найденного слоя поочередно удаляются объекты. Соответствующие поддеревья для них page->gobj->layr->obj (или для группы page->gobj->layr->grp). Объектов внутри слоя может быть чрезвычайно много, поэтому на последнем этапе оптимизировать данный процесс можно методом половинного деления: сперва удалить половину объектов на слое сразу, потом по очереди разбивая пополам сбойную половину и т.д. В конечном итоге файл будет восстановлен полностью, за исключением сбойного объекта.

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

Система трассировки открытия файла (File open spy system)

Начиная с версии 2.0 появилась возможность отслеживать процесс открытия CDR файла самим Corel для более быстрой локализации сбойных полей. Для этого некоторые системные библиотеки Corel (CDRCPR.DLL и CDRCORE.DLL) заменяются на пользовательские. Поскольку при этом происходит модификация установленного пакета CorelDRAW, выполнять установку системы слежения нужно крайне осторожно, так как возможна невосстановимая порча пакета, вплоть до полной переустановки. Если вы не уверены, что сможете корректно пользоваться этой функцией и, в крайнем случае, переустановить CorelDRAW в исходное состояние - не инсталлируйте данную систему.

Основной принцип данной системы заключается в следующем. Чтение из CDR файла выполняется библиотекой CDRCORE.DLL через библиотеку мультимедиа ввода-вывода WINMM.DLL (в случае неупакованной RIFF структуры), или через Corel Compress Library CDRCPR.DLL (в случае упакованной структуры). В процессе установки File open spy system в системе заменяются библиотеки CDRCPR.DLL и CDRCORE.DLL. Старые версии сохраняются в этом же каталоге под именами CDRCPROLD.DLL и CDRCOREOLD.DLL, откуда их можно вернуть назад в процессе деинсталляции. Новые библиотеки осуществляют слежение за чтением блоков данных и записывают последовательность чтения каждого выбранного блока в текстовый файл Chunks.log. Кроме того, при помощи них можно блокировать чтение из файла определенных записей. Для этого используется фильтр, определенный в текстовом файле Scope.ini.

При нажатии на кнопку File open spy system вызывается основное окно:

Для установки системы трассировки необходимо для начала выбрать путь к программному каталогу Corel DRAW. В случае нескольких версий Corel DRAW, одновременно установленных на компьютер, версию, на которую будет выполенна установка, можно выбрать из списка. При желании, можно и явно задать путь к каталогу, содержащему CDRCORE.DLL, используя кнопку Browse. Возможна выборочная установка системы слежения за мультимедиа вводом-выводом (mmio, например, в случае заведомо неупакованного файла) или компрессией (cmpr, в случае, соответственно, заведомо упакованного файла). В первом случае заменяется только библиотека CDRCORE.DLL, во втором - только CDRCPR.DLL. При инсталляции обеих библиотек будут отслеживаться записи, считанные из файла при помощи обеих библиотек.

Установить фильтр на чтение или параметры записи в LOG отдельных записей, можно, редактируя файл Scope.ini. Для этого предназначена кнопка Edit spy filter. Данный файл состоит из строк, каждая из которых имеет следующий синтаксис:

(????) Команда Смещение
Первые 4 символа в скобках - имя трассируемого chunk; команда - действие, выполняемое над ним; Смещение - 16ричное смещение в файле

Команды бывают следующими:

TRACE

Синтаксис: (????)|(ALL ) TRACE
Включает при открытии запись в файл Chunks.log полей определенного типа. Если имя поля заданно в (ALL )-записываются все поля

Примеры:
(ALL ) TRACE
В файл записываются все читаемые поля.
(LIST) TRACE
В файл записываются все поля LIST.

OFF

Синтаксис: (cmpr)|(mmio) OFF
Отключает запись в файл полей, читаемых через библиотеки компрессии или мультимедиа ввода-вывода соответственно.

Примеры:
(mmio) OFF
Отключает запись в файл полей, читаемых через библиотеку мультимедиа ввода-вывода.
(cmpr) OFF
Отключает запись в файл полей, читаемых через библиотеку компрессии.

ONLY/EXCEPT

Синтаксис: (????) ONLY|EXCEPT (RANGE) Смещение1 (Смещение2)
Определяет фильтр на открытие определенных полей. Первые 4 символа в скобках задают имя поля. ONLY - при открытии будут открыты только разрешенные данной командой поля с этим названием. Остальные поля, носящие это имя будут заблокированы. EXCEPT - поля с данным именем и смещениями будут заблокированы. Если в данной строке не задан параметр RANGE - аргумент данной строки - смещение до разрешаемого (или блокируемого) поля. В противном случае аргумента два: Смещение1, Смещение2 - первое и последнее поля диапазона

Примеры:
(page) ONLY 237F
При открытии файла открывается только страница со смещением 237F.
(obj ) EXCEPT RANGE 345F7 45678
При открытии файла блокируются объекты со смещениями начиная с 345F7 по 45678 включительно
(clol) EXCEPT 37F5
При открытии файла блокируются стили со смещением 37F5

Команды можно комбинировать. К примеру, чтобы задать заблокировать определенные объекты внутри определенной страницы, файл Scope.ini должен выглядеть следующим образом:

(page) ONLY 237F
(LIST) EXCEPT 3278
(LIST) EXCEPT 3345
(obj ) EXCEPT RANGE 45678 45789

В этом случае, будет открыта только станица со смещением 237F, внутри которой объекты 3278,3345 и с 45678 по 45789 включительно, будут игнорированы.

Надо сказать, что необходимо внимательно следить за валидностью условий фильтра, прописываемого в файл, так как контроль синтаксиса не ведется, поэтому, взаимоисключающие условия фильтра (например (LIST) ONLY ? - (LIST) EXCEPT ?) будут отрабатывать непредсказуемым образом. Кроме того, необходимо очень аккуратно задавать фильтр по глобальным полям. К примеру, нужно иметь представление о том, что задавая фильтр по полю LIST, вы отбрасываете не только объекты, но и большую часть служебной информации, отсутствие которой, скорее всего, сделает невозможным открытие файла. Аргументы команд ONLY, EXCEPT и RANGE должны быть реальными смещениями полей, которые можно взять из файла Chunks.log, причем нижняя граница RANGE должна быть меньше верхней и не пересекаться с другими условиями фильтра, заданными в других строках. В противном случае, опять же, результат непредсказуем. Поэтому, не злоупотребляйте черезчур сложными условиями фильтра, обычно достаточно отбросить одно-два поля, чтобы файл открылся. Если файл открылся - пересохраняйте его и сразу же деинсталлируйте систему трассировки. Вообще, старайтесь использовать данную систему только в самом крайнем случае.

Резюмируя вышеописанное, приведу общий алгоритм восстановления сбойного CDR файла по шагам:

1) Попытаться открыть файл разными способами в Corel DRAW (в более старшей версии, отключить стили, проимпортировать и т. д.)

2) Если версия старше X3, распаковать файл как ZIP архив и извлечь оттуда файл RiffData.cdr, попробовать открыть его.

3) Открыть файл программой CDRfind в режиме File Info, определить характер повреждения

4) Открыть файл в режие Edit/Restore file и попробовать пересохранить через Save file

5) В этом же режиме попробовать сохранить векторную часть файла через Extract vector part

6) В зависимости от характера повреждения, попытаться найти и удалить сбойные поля с последующим пересохраниением через Save file
Пример поиска сбойного поля с использованием системы трассировки открытия файла:

- Убедится, что в структуре файла отсутствуют ошибки, но файл не открывается и проверить, является файл упакованным или нет. Если файл упакован, в его структуре после поля LIST INFO присутствуют поля LIST cmpr. - Инсталлировать систему. Для этого, необходимо из главного окна нажать кнопку Open file spy system. Если файл упакован, нажать кнопку Install cmpr spy system, в противном случае Install mmio spy system, убедиться что инсталляция прошла успешно. Если нет, укажите правильно маршрут к каталогу CorelDraw Programs или закройте открытый Corel и попробуйте еще раз. - Установите режим трассировки открытия файла с выводом результатов чтения в LOG файл. Для этого, для начала, нажмите кнопку Chunk filter и в пустом файле Scope.ini наберите команду (obj ) TRACE:

После чего сохранить файл Scope.ini.
- Запускаем CorelDraw и открываем в нем восстанавливаемый файл.
- После неудачной попытки чтения файла, смотрим LOG файл, нажимая на кнопку View spy log:

Каждая строка этого файла соответствует полю, считанному Corel из нашего файла. Число в начале - шестнадцатиричное смещение в файле, далее идет имя поля (в нашем случае "obj "), буква C означает, что поле было упаковано. На данном примере видно, что чтение из файла оборвалось на поле со смещением 19F58. То есть, в идеальном случае, если мы заблокируем этот объект, то файл должен открываться нормально. - Вносим блокируемое поле в фильтр. Для этого снова открываем Chunk filter и добавляем туда строку (obj ) EXCEPT 19F58:

После чего сохраняем файл и снова пытаемся открыть Corelом восстанавливаемый файл. - После этой операции файл (в идеальном случае) должен нормально открыться, пересохраняем его, закрываем Corel и сразу же деинсталлируем систему кнопкой Uninstall cmpr spy system - Если же файл все равно не открывается, снова ищем в LOG файле последний открытый объект и добавляем в фильтр ссылку и на него то же, после чего повторяем весь процесс до тех пор, пока файл не откроется. Если сбойных объектов слишком много, можно пробовать убрать все объекты за сбойным (команда (obj ) EXCEPT 19F58 20345, где 20345- смещение последнего obj, его можно определить через File info) Кроме того, для ускорения можно искать не только сбойный объекты (obj ) но и сбойные группы (grp ), слои (layr)или даже страницы (page). Набор условий в данном случае достаточно гибок.

7) Если в файле отсутствует таблица длин полей или присутствуют другие серьезные нарушения RIFF структуры, а так же, если описанные выше действия не произвели эффекта, попробовать проэкспортировать векторную часть в другой файл. Данный процесс описан выше в части Режим Export vector part

8) Попытаться восстановить отдельные объекты из файла. Этот этап мы рассмотрим поподробнее. Дело в том, что помимо, собственно corel объектов, завязанных в древовидную RIFF структуру, в файле содержатся и встроенные в него независимые объекты, которые можно использовать отдельно. Это - тексты, растровые картинки, шрифты, встроенные объекты и т.д. Некоторые из них можно вытащить в отдельные файлы для дальнейшего использования. Самый простой пример: в файлах версии старше X3 растровые копии preview хранятся в виде отдельных файлов, помещенных вместе с RiffData.cdr в общий ZIP архив, который и является CDR файлом. Туда же в виде XML файлов помещены и все тексты, содержащиеся в данном файле. То есть, даже при невозможности восстановить файл, можно вытащить его растровую копию (правда, низкого разрешения) и весь текст, содержащийся в файле, что серьезно упрощает задачу восстановления файла.

В случае версий X3 и ниже, весь текст, содержащийся в файле, можно вытащить из окошка info.log (вместе со списком используемых шрифтов), запустив режим File Info.

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

Некоторые поля содержат в себе объекты, которые можно использовать отдельно.

Растровые изображения.

Поля типа LIST bmp содержат в себе растровые данные. Их можно сохранять как TIFF файлы.

В этом случае программа спросит: сохранять объект как TIFF файл или в исходном виде? При сохранении в TIFF файл сохраняется исходный тип, разрешение имиджа и маска в виде альфаканала. Duotone image сохраняются как Grayscale, изображения, содержащие, более чем 8 бит на канал, сохраняются как многоканальные. Остальные изображения (Grayscale, Monochrome, RGB, CMYK, Paletted, Lab) сохраняются в исходном виде.

Инкапсулированные EPS.

Содержатся тоже в полях типа LIST bmp, но, в отличие от растровых картинок, не могут быть сохранены как TIFF. Их следует сохранить в исходном виде, которому присвоить расширение EPS. Надо сказать, что вместе с каждым инкапсулированным EPS, в другом поле LIST bmp файла, хранится дополнительно и его растрированная копия.

Шрифты.

Corel Draw может встраивать шрифты в свои файлы используя технологию TrueDoc от Bitstream. В диалоге сохранения есть специальная галочка "Embed Fonts using TrueDoc (TM)" Если при сохранении файла выбрать этот пункт, то внутрь файла будут помещены все использованные в нем шрифты в специальном упакованном формате. Этот формат изобретен компанией Bitstream и называется PFR (Portable Font Resource). Он так же используется в технологии Font Fusion для отображения шрифтов для web страниц. Встроенные шрифты хранятся в полях cmpr->doc->tdlt->tdoc и тоже могут быть извлечены в отдельный PFR файл при помощи команды Save chunk вышеописанным образом.

Внедренные объекты (Embedded)

Вставленные через clipboard объекты других программ (например, MSOffice) хранятся в полях cmpr->doc->ole2. Командой Save chunk их можно сохранить в файл формата OLE2 Structured Storage File

Остальные опции восстановления пока находятся на стадии доработки, и будут доделываться по мере поступления предложений.

Регистрация программы.

Основные функции программы работают только в зарегистрированной версии. Это:

Поиск CDR файла по критерию;

Пересохранение исправленного файла в режимах Save file, Export vector part и Extract vector part;

Система трассировки открытия файла

Остальные режимы работают нормально и в незарегистрированной версии. Для активизации всех режимов необходимо зарегистрировать программу. Это можно сделать, написав мне письмо, в котором указать имя, на кого будет зарегистрирована программа. По этому имени я сгенерирую код регистрации и вышлю его обратно. После этого имя и код необходимо вбить в регистрационную форму, которая вызывается из окна About, попасть в которое можно, щелкнув по иконке в левом верхнем углу окна программы:

нажатием кнопки Register:

При правильном вводе регистрационного кода в окне About вместо надписи "Trial unregistered version" появится надпись: "Registered by: ..." и программа станет полнофункциональной. Стоимость регистрации на текущий момент 500 рублей.

Если возникнут какие-либо идеи по поводу улучшения программы или сложности по восстановлению файлов, пишите мне на mikhail_kondakov@mail.ru

Программу можно скачать
отсюда