EMC Developer Network

Export a Document's Rendition

December 2005

Software Environment

FeatureTested on
Operating SystemWindows 2000 Server SP4
CompilerSun JDK 1.4.2_08
RuntimeSun JRE 1.4.2_08
DFC5.3 SP1
Content Server5.3 SP1

Snippet


/*
 * Created on Dec 6, 2005
 *
 * EMC Documentum Developer Program 2005
 */
package com.documentum.devprog.snippets.operations;

import com.documentum.fc.common.DfException;
import com.documentum.fc.common.DfId;
import com.documentum.fc.common.IDfId;
import com.documentum.fc.common.IDfList;
import com.documentum.fc.common.IDfLoginInfo;

import com.documentum.fc.client.IDfClient;
import com.documentum.fc.client.IDfDocument;
import com.documentum.fc.client.IDfSession;
import com.documentum.fc.client.IDfSessionManager;

import com.documentum.com.DfClientX;
import com.documentum.com.IDfClientX;
import com.documentum.operations.IDfExportNode;
import com.documentum.operations.IDfExportOperation;

public class ExportRendition
{

    public static void main(String[] args)
    {
        String username = "dmadmin";
        String password = "dmadmin";
        String repoName = "devprog";
        String exportFolder = "c:\\devprog\\test";
        String documentId = "";
        String renditionFormat = "pdf";
        
        try
        {
            IDfSessionManager sessMgr = createSessionManager();
            addIdentity(sessMgr,username,password,repoName);
           exportRendition(sessMgr,repoName,exportFolder,documentId);
        }
        catch(DfException ex)
        {
            ex.printStackTrace();
        }        
    }
    
    
    public static void exportRendition(IDfSessionManager sessMgr,
		String destFldr,String docId,String rendFormat) throws DfException
    {
        IDfClientX clientX = new DfClientX();
        IDfClient localClient = clientX.getLocalClient();
        
        IDfExportOperation exportOper = clientX.getExportOperation();
        exportOper.setDestinationDirectory(destFldr);
        
        IDfId objId = new DfId(docId);
        String repoName = localClient.getDocbaseNameFromId(objId);
        IDfSession sess = sessMgr.getSession(repoName);
        IDfDocument doc = (IDfDocument) sess.getObject(objId);
        
        IDfExportNode expNode = (IDfExportNode) exportOper.add(doc);
        //setFormat specifies the rendition format to export
        //If this method is not called then the default format is
        //exported.
        expNode.setFormat(rendFormat);
        
        if(exportOper.execute())
        {
            String filepath = expNode.getFilePath();
            System.out.println("Export Operation Successful: " + filepath);                        
        }
        else
        {
            System.out.println("Export Operation Failed");
            IDfList errList = exportOper.getErrors();
            for(int i=0;i<errList.getCount();i++)
            {
                System.out.println(errList.getString(i));
            }
        }
        
        
    }
    
    /**
     * Creates a new session manager instance. The session manager does not have
     * any identities associated with it.
     * 
     * @return a new session manager object.
     * @throws DfException
     */
    private static IDfSessionManager createSessionManager() throws DfException
    {
        IDfClientX clientX = new DfClientX();
        IDfClient localClient = clientX.getLocalClient();
        IDfSessionManager sessMgr = localClient.newSessionManager();
        return sessMgr;
    }

    /**
     * Adds a new identity to the session manager.
     * 
     */
    private static void addIdentity(IDfSessionManager sm, String username,
            String password, String repoName) throws DfException
    {
        IDfClientX clientX = new DfClientX();

        IDfLoginInfo li = clientX.getLoginInfo();
        li.setUser(username);
        li.setPassword(password);

        // check if session manager already has an identity.
        // if yes, remove it.
        if (sm.hasIdentity(repoName))
        {
            sm.clearIdentity(repoName);
        }

        sm.setIdentity(repoName, li);
    }

}