how to get document content using DFC in c#

khalid khan picture khalid khan · Sep 8, 2012 · Viewed 7.1k times · Source

I have documentum developer edition 6.6. I want to get document content (read content into stream) using DFC in c#. I have used following C#.net code

IDfId id = collection.getId("r_object_id");
IDfDocument doc = (IDfDocument) session.getObject(id);

but it throws following exception.

Exception: Unable to cast COM object of type 'System.__ComObject' to interface type 'DFCLib.IDfDocument'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{EFAC2D68-175B-11D2-9927-006097C27C31}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

I also tried following method(it runs successfully) but i don't know how to read content into stream or memory stream.

IDfId id = collection.getId("r_object_id"); 
IDfSysObject sysObject = (IDfSysObject) session.getObject(id);

Answer

Brendan Hannemann picture Brendan Hannemann · Sep 18, 2012

This will dump the file to a local filesystem path:

IDfId id = collection.getId("r_object_id"); 
IDfSysObject sysObject = (IDfSysObject) session.getObject(id);

sysObject.getFile(<path>)

Then you can open the file as a stream using standard .Net IO libraries, for example:

var stream = new System.IO.StreamReader(<path>)

I believe the DFC has some stream-based public methods (getContent?) but I have not seen them used successfully from .Net. However, I will suggest that you take a look at the DFS (Documentum Foundation Services) API instead of DFC. This is the supported API now and DFC is deprecated as a public API. DFS does have stream options when dealing with repository content.

You may also want to check http://developer.emc.com if this answer is not sufficient for your needs.