package weaver.wps.doccenter.convert; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import weaver.file.Prop; import weaver.general.Util; import weaver.hrm.User; import weaver.wps.doccenter.utils.Config; import weaver.wps.doccenter.utils.FileInfoUtil; import weaver.wps.doccenter.utils.Tools; import weaver.wps.logging.Logger; import weaver.wps.logging.LoggerFactory; import java.util.HashMap; import java.util.Map; public class OfficeWrapheader { private Logger log = LoggerFactory.getLogger(OfficeWrapheader.class); private User user; // 书签内容类型,文本 public final static String BOOKMARK_TYPE_TEXT = "TEXT"; // 书签内容类型, 文档 public final static String BOOKMARK_TYPE_DOCUMENT = "DOCUMENT"; // 书签内容类型,图片 public final static String BOOKMARK_TYPE_IMAGE = "IMAGE"; // 书签,正文 public final static String BOOKMARK_CONTENT = "Content"; public OfficeWrapheader(){ } /** * 构造函数,用户基本上是用于获取多语言 * @param user */ public OfficeWrapheader(User user){ this.user = user; } public User getUser() { return user; } public OfficeWrapheader setUser(User user) { this.user = user; return this; } public Logger getLog() { return log; } public OfficeWrapheader setLog(Logger log) { this.log = log; return this; } public Map convert(Map params, JSONArray sampleList) throws Exception { Map result = new HashMap(); JSONObject requestParams = new JSONObject(); String ecfileid = params.get("imagefileid"); // 判断模块。目前应该只有知识管理的 String fromMould = Tools.null2String(params.get("fromMould")); fromMould = Tools.getFromMould(fromMould); String targetFileFormat = Tools.null2String(params.get("targetFileFormat")); String apiUrl = ""; // Config.getCpsV1OfficeWrapheader(); if(6 == Config.getProductVersion()) { apiUrl = Config.getV6CpsV1OfficeWrapheader(); } else if(5 == Config.getProductVersion()) { apiUrl = Config.getCpsV1OfficeWrapheader(); } FileInfoUtil fileInfoUtil = new FileInfoUtil(); Map fileInfo = fileInfoUtil.getFileInfo(ecfileid, user, fromMould); String filename = fileInfo.get("filename"); requestParams = new JSONObject(); requestParams.put("template_filename", Tools.getFileNameWithLowerCaseSuffix(filename)); requestParams.put("template_url", fileInfo.get("download")); // String flatten_source_style = Prop.getPropValue("doc_wps_custom", "flatten_source_style"); // requestParams.put("flatten_source_style", "1".equals(flatten_source_style)); requestParams.put("sample_list", sampleList); //套红页边距问题修改 requestParams.put("use_template_section_property",true); // 结果文件的文件名 String targetFilename = params.containsKey("targetFilename") ? params.get("targetFilename"): ""; targetFilename = Tools.isEmptyOrNull(targetFilename) ? filename : params.get("targetFilename"); BaseConvert baseConvert = new BaseConvert(user); if(!params.containsKey("comefrom")) params.put("comefrom", "OfficeWrapheader"); result = baseConvert.convert(apiUrl, requestParams, targetFilename, params); // 处理其他的事务 return result; } public Map replaceBookmark(Map params, Map bookmarkMap) throws Exception { int newimagefileid = -1; if(Config.isLogInfo()) { log.info("paramsMap:" + params.toString()); log.info("bookmarkMap:" + bookmarkMap.toString()); } //1,获取参数 //模板类型 String mouldType = params.get("mouldType"); //模板Id int mouldId = Util.getIntValue(params.get("mouldId")); //模板后缀名 // String doctype = (String)params.get("doctype"); //正文imageFileId String imagefileId = params.get("imagefileId"); int imagefileIdInt = Util.getIntValue(imagefileId); //正文后缀名 // String zwDocType = (String)params.get("zwDocType"); //生成的替换书签后的文档名称 String fileName = params.get("fileName"); Map convertParams = new HashMap(); convertParams.put("imagefileid", mouldId+""); convertParams.put("fromMould", params.get("mouldType")); convertParams.put("targetFilename", fileName); JSONArray sampleList = new JSONArray(); JSONObject markItem = new JSONObject(); //普通书签 for(Map.Entry entry : bookmarkMap.entrySet()){ markItem = new JSONObject(); markItem.put("bookmark",entry.getKey()); markItem.put("text",entry.getValue()); markItem.put("type", BOOKMARK_TYPE_TEXT); sampleList.add(markItem); } //如果为显示模板才替换正文书签 if("showMould".equals(mouldType)){ //正文 markItem = new JSONObject(); markItem.put("bookmark", BOOKMARK_CONTENT); markItem.put("type", BOOKMARK_TYPE_DOCUMENT); // 获取正文文件数据 FileInfoUtil fileInfoUtil = new FileInfoUtil(); Map fileInfo = fileInfoUtil.getFileInfo(imagefileId, user, "ecology"); markItem.put("sample_url", fileInfo.get("download")); markItem.put("sample_filename", getTempFileName(Tools.getFileNameWithLowerCaseSuffix(fileName))); sampleList.add(markItem); } Map result = convert(convertParams, sampleList); // 如果是显示模板,执行一次清稿 if("showMould".equals(mouldType)){ String newImagefileid = result.get("imagefileid"); Map clearDocParam = new HashMap(); clearDocParam.put("imagefileId", newImagefileid); clearDocParam.put("fileName", Tools.getFileNameWithLowerCaseSuffix(fileName)); clearDocParam.put("fromMould", "ecology"); OfficeOperate officeOperate = new OfficeOperate(user); Map clearDocResult = officeOperate.clearDoc(clearDocParam); if("0".equals(clearDocResult.get("status"))){ return clearDocResult; } } return result; } public static String getTempFileName(String filename) { if(Tools.isEmptyOrNull(filename) || !filename.contains(".")){ return filename; } int idx = filename.lastIndexOf("."); return"1" + filename.substring(idx).toLowerCase(); } }