Как получить содержимое документа с помощью DFC в C#
У меня есть версия документа 6.6 для разработчиков. Я хочу получить содержимое документа (чтение содержимого в поток) с помощью DFC в C#. Я использовал следующий код C#.net
IDfId id = collection.getId("r_object_id");
IDfDocument doc = (IDfDocument) session.getObject(id);
но он выбрасывает следующее исключение.
Исключение: невозможно преобразовать COM-объект типа "System.__ComObject" в интерфейсный тип "DFCLib.IDfDocument". Эта операция завершилась неудачно, поскольку вызов QueryInterface в компоненте COM для интерфейса с IID '{EFAC2D68-175B-11D2-9927-006097C27C31}' завершился неудачно из-за следующей ошибки: такой интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)),
Я также попробовал следующий метод (он работает успешно), но я не знаю, как читать содержимое в поток или поток памяти.
IDfId id = collection.getId("r_object_id");
IDfSysObject sysObject = (IDfSysObject) session.getObject(id);
2 ответа
Исключение говорит, что не может преобразовать COM-объект в IDfDocument.
Я предполагаю, что ваша цель не является документом тогда.
Для бездокументного sysobject странно иметь контент, но это все же разрешено. Затем содержимое можно прочитать с помощью getFile, как предлагается в другом ответе.
Это выведет файл в путь к локальной файловой системе:
IDfId id = collection.getId("r_object_id");
IDfSysObject sysObject = (IDfSysObject) session.getObject(id);
sysObject.getFile(<path>)
Затем вы можете открыть файл в виде потока, используя стандартные библиотеки.Net IO, например:
var stream = new System.IO.StreamReader(<path>)
Я считаю, что в DFC есть несколько открытых методов, основанных на потоке (getContent?), Но я не видел, чтобы они успешно использовались в.Net. Однако я предлагаю вам взглянуть на API DFS (Documentum Foundation Services) вместо DFC. Это поддерживаемый API сейчас, и DFC устарел как публичный API. DFS имеет параметры потока при работе с содержимым репозитория.
Вы также можете проверить http://developer.emc.com/ если этот ответ не подходит для ваших нужд.