Filenet Eform 转成 PDF 方法

eform 是 Filenet 自带的一个表单设计器。就其本身来说,功能远远不及 lotus form , 而且 lotus form 可以和 Filenet 很好的集成在一起。
不过很多企业,不会另外花钱买 LOTUS FORM ,所以还是一直沿用了 Eform。在做Eform输出表单的时候,其实在 FILENET workplace  中是可以看到导出为PDF 文档的。

但真实的情况是,客户根本不愿意用WORKPLACE 来工作,workplace 给用户直接使用,实在是很不友好。而且 workplace (xt),一般来说是给管理员用的。终端用户使用的,都需要定制开发,调用API,或者REST API方式自己做应用。

在做应用的过程中,就有需要把EFORM 直接导出为PDF 的需求。其实是可行的。自己编码实现。

程序代码 程序代码

package com.filenet.wcm.toolkit.server.operations.contentmanager;

import com.filenet.wcm.api.*;
import com.filenet.wcm.toolkit.server.operations.util.CIConfigProperties;
import com.filenet.wcm.toolkit.server.operations.contentmanager.CEDocument;
import com.filenet.wcm.toolkit.server.operations.util.opsUtil;

import filenet.vw.api.*;

import java.io.*;
import java.util.Date;

import java.net.*;

public class CEeForms
{
    private static CIConfigProperties conf = null;
    private static String userId   = "Administrator";
    private static String password = "password";
    private static String appId    = "eForm2PDF";

    private static ObjectStore docObjectStore = null;
    private static Folder docFolder = null;
    private static Session sess = null;
    private static Session sess2 = null;
    private static boolean error = false;
    private static VWAttachment vwa = null;
    private static String guidObjStore;
    private static String guideFormTemplate;
    private static String guideFormDocument;
    private static String tmpFile = "C:\\pe";
    private static GettableObject myAttachment = null;
    private static opsUtil opUtils = null;
    private static Document d = null;

    private static void log(String message)
    {
        String logfilename = "C:\\Integrator.log";

        try
        {
            if (conf==null)    conf = new CIConfigProperties();
            logfilename = conf.getValue("logfilename",logfilename);
            FileWriter file = new FileWriter(logfilename, true);
            BufferedWriter w = new BufferedWriter(file);
            w.write(new Date() + ": ");
            w.write(message);
            w.newLine();
            w.close();
        }
        catch (Exception e)
        {
        }
    }

    public static VWAttachment eForm2PDF
        (
            String hostName,
            String appId,
            String objStore,
            VWAttachment eFormTemplate,
            String eFormDocumentID,
            String params,
            String filename,
            String docClassName,
            String destFolder
        )
    {
        log("eForm2PDF");

        String myURL = "";

        opUtils = new opsUtil();

        VWAttachment returnAttachment = new VWAttachment();

        try
        {
            initialize(objStore);
            if (error) return null;

            guidObjStore = getObjStoreGUID(objStore);
            if (error) return null;

            log ("GUID Object Store = "+ guidObjStore);

            sess2 = opUtils.getSession();
            log("ok getsession");

            guideFormTemplate = eFormTemplate.getVersion();
            log ("ID Form template (getVersion) = "+ guideFormTemplate);

            myAttachment = opUtils.getAttachment(eFormTemplate, sess2);
            Document doc = (Document)myAttachment;

            guideFormTemplate = doc.getId();
            log ("ID Form template (doc) = "+guideFormTemplate);

            guideFormDocument = eFormDocumentID;
            log ("ID Form document (doc) = "+ guideFormDocument);

            myURL = "http://"+hostName+"/" + appId + "/FormServlet?" +
                "cmd=image&" +
                "user="  + userId  + "&" +
                "pwd="   +password + "&" +
                "appID=" + appId   + "&" +
                "template=local," + guidObjStore + "." + guideFormTemplate + "&" +
                "data=local," + guidObjStore + "." + guideFormDocument + "&" +
                params;

            URL url = new URL(myURL);

            log("Opening connection to "+myURL);
            URLConnection urlC = url.openConnection();

            InputStream is = url.openStream();
            log("Copying resource (type: "+urlC.getContentType());

            Date date = new Date(urlC.getLastModified());
            log(", modified on; " + date.toLocaleString() + ")...");
            System.out.flush();

            String fileExt = "." + params.substring( 2, 5 );

            log ("writing stream to "+ tmpFile + fileExt );
            FileOutputStream fos = null;
            fos= new FileOutputStream(tmpFile + fileExt );
            int oneChar, count=0;
            while ((oneChar=is.read()) != -1)
            {
                fos.write(oneChar);
                count++;
            }
            is.close();
            fos.close();
            log(count+" byte(s) saved to "+tmpFile + fileExt );

            log("creating document (objstore = "+objStore+", class = "+docClassName+", folder= "+destFolder);

            String docType = ( fileExt.compareTo(     ".pdf" ) == 0 ) ? "application/pdf" : "image/tiff";

            d = CEDocument.newDoc(objStore, docClassName, destFolder, tmpFile + fileExt, docType, filename );

            if (d!= null)
            {
                log ("document successfully created");
                returnAttachment.setLibraryName(objStore);
                returnAttachment.setLibraryType(VWLibraryType.LIBRARY_TYPE_CONTENT_ENGINE);
                returnAttachment.setType(VWAttachmentType.ATTACHMENT_TYPE_DOCUMENT);
                returnAttachment.setId(d.getId());
                returnAttachment.setVersion(d.getId());
                log ("return attachment set");
            }
        }
        catch (Exception e)
        {
            log("Error: "+e);
            return null;
        }
        return returnAttachment;
    }

    private static void initialize(String objStore)
    {
        userId = conf.getValue("ce_user", userId);
        password = conf.getValue("ce_password", password);
        tmpFile = conf.getValue("ce_tmpfile", tmpFile);
        sess = ObjectFactory.getSession(appId, null, userId, password);
    if (sess == null)
    {
        error=true;
        log("No session object got!");
        return;
    }
    log("Session object okay");
    if (sess.verify() == null)
    {
        error=true;
        log("No user object got or wrong credentials!");
        return;
    }
    log("User object okay");
          objStore = conf.getValue("ce_objStore", objStore);
    docObjectStore = ObjectFactory.getObjectStore(objStore, sess);
    if (docObjectStore == null)
    {
        error=true;
            log("No object store object got!");
            return;
    }
    log("Object store object okay");
    log("Initialze okay");
    }

    private static String getObjStoreGUID(String objStore)
    {
        String guid = "";

    sess = ObjectFactory.getSession(appId, null, userId, password);
    if (sess == null)
    {
        error=true;
        log("No session object got!");
            return null;
    }
    log("Session object okay");
    if (sess.verify() == null)
    {
        error=true;
        log("No user object got or wrong credentials!");
        return null;
    }
    log("User object okay");
          docObjectStore = ObjectFactory.getObjectStore(objStore, sess);
    if (docObjectStore == null)
    {
        error=true;
        log("No object store object got!");
        return null;
    }
    log("Object store object okay");
    guid = docObjectStore.getId();

    return guid;
    }
}


另外附上代码下载:




除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: filenet eform ibm
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.