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 是 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;
    }
}


另外附上代码下载:
点击下载此文件

上一篇: FileNet 安装 列表(Filenet install list)
下一篇: IBM bluepage API 查询
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号