2023年XX月XX日 | 政务项目富文本编辑器增强方案实施报告
一、需求分析与技术选型
1.1 核心诉求
- 政企合规要求:必须通过信创适配认证(麒麟软件认证+龙芯生态认证)
- 老旧系统兼容:IE8及国产浏览器(奇安信/红莲花)全支持
- 文档保真度:需完美还原政府公文格式(GB2312字体、红头文件版式等)
- 安全架构:文件传输需使用国密SM4加密,存储隔离需符合等保2.0三级要求
1.2 技术方案对比
| 方案 | 优点 | 缺点 |
|---|---|---|
| Microsoft 365 | 功能齐全 | 不支持私有部署 |
| WPS 365 | 功能齐全 | 不支持私有部署 |
| 永中Office | 功能齐全 | 拒绝提供产品源代码 |
| 腾讯文档 | 功能齐全 | 不支持私有部署 |
| 钉钉文档 | 功能齐全 | 不支持私有部署 |
| 飞书 | 功能齐全 | 不支持私有部署 |
| 石墨文档 | 功能齐全 | 拒绝提供产品源代码 |
| UEditor插件开发 | 无缝集成现有系统 | 公式支持需二次开发 |
| 定制商业SDK | 开箱即用 | 龙芯适配不全 |
| 开源改造 | 成本低 | 安全审计风险高 |
| WordPaster | 完全开源(下载源码) | |
| 功能齐全 | 终端安装插件 |
决策:采用WordPaster 插件开发+源码买断混合模式,采购武汉某厂商的文档解析引擎(含源码)。
二、系统架构设计
2.1 技术栈拓扑
2.2 信创适配矩阵
| 环境 | 关键问题 | 解决方案 |
|---|---|---|
| 银河麒麟v10+飞腾 | 字体渲染错位 | 预装方正GB2312字体包 |
| 龙芯LoongArch+统信UOS | WASM兼容性 | 定制LLVM编译版本 |
| IE8+Windows XP | ActiveX控件拦截 | 部署本地签名证书 |
三、关键代码实现
3.1 前端插件核心(Vue2+UEditor)
// ueditor-gov-plugin.jsUE.registerUI('officeimport',function(editor){// 创建公文导入按钮varbtn=newUE.UI.Button({name:'gov-import',title:'红头文件导入',onclick:function(){// 调用国产化文件选择器constfileInput=document.createElement('input');fileInput.type='file';fileInput.accept='.docx,.xlsx,.pptx,.pdf';fileInput.onchange=(e)=>{constfile=e.target.files[0];// 国密加密传输constencrypted=SM4Encrypt(file);axios.post('/gov/upload',encrypted,{headers:{'X-Browser-Type':detectBrowser()}// 区分IE8特殊处理}).then(res=>{editor.execCommand('insertHtml',res.data.html);});};fileInput.click();}});returnbtn;});// 国产浏览器检测functiondetectBrowser(){if(window.ActiveXObject)return'ie';if(navigator.userAgent.includes('QAXSafe'))return'qax';if(navigator.userAgent.includes('Loongson'))return'loong';}3.2 后端文件处理(JSP+阿里云OSS)
<%@ pageimport="com.aliyun.oss.OSSClient"%><%@ pageimport="cn.gov.sm4.SM4Util"%><%--文件上传处理器--%><%try{// 国密解密byte[]encrypted=request.getInputStream().readAllBytes();SM4Utilsm4=newSM4Util(System.getenv("SM4_KEY"));byte[]decrypted=sm4.decrypt(encrypted);// 存储到阿里云OSSOSSClientoss=newOSSClient("https://oss-cn-hangzhou.aliyuncs.com",System.getenv("OSS_AK"),System.getenv("OSS_SK"));StringobjectName="redhead/"+UUID.randomUUID()+".docx";oss.putObject("gov-bucket",objectName,newByteArrayInputStream(decrypted));// 返回HTML片段(保留公文格式)out.print(String.format(""+""+"文件已加密存储",objectName));}catch(Exceptione){response.sendError(500,"公文处理失败:"+e.getMessage());}%>四、商务实施要点
4.1 采购条款
- 买断费用:¥95万(含源代码及龙芯专项适配补丁)
- 交付物清单:
- 中央网信办信创适配证书
- 3家部委级单位使用证明
- 等保2.0三级测评报告
- 违约条款:每项信创环境不达标扣款10万元
4.2 部署流程
- 开发阶段:厂商驻场1周完成环境适配
- 测试阶段:在XX市委内网完成压力测试(1000并发文档导入)
- 上线阶段:通过麒麟软件商店分发安装包
五、风险控制
| 风险项 | 等级 | 应对措施 |
|---|---|---|
| 龙芯性能不足 | 高 | 采购数学加速卡(预算¥20万) |
| 公文样式失真 | 中 | 开发样式强制校验工具 |
| IE8内存泄漏 | 高 | 每2小时自动重启编辑器实例 |
专项保障:建立政企项目应急响应小组(7×24小时待命)。
(注:所有代码需在信创环境中使用JDK1.8_龙芯定制版编译,敏感配置已脱敏)
附件:
- [XX部委项目验收报告.pdf]
- [麒麟软件兼容性证书.jpg]
- [SM4算法国密认证文件.zip]
(报告人:XXX 政企事业部技术总监)
复制插件目录
引入插件文件
UEditor 1.4.3.3示例注意:不要重复引入jquery,如果您的项目已经引入了jq,则不用再引入jq-1.4
在工具栏中增加插件按钮
//工具栏上的所有的功能按钮和下拉框,可以在new编辑器的实例时选择自己需要的重新定义toolbars:[["fullscreen","source","|","zycapture","|","wordpaster","importwordtoimg","netpaster","wordimport","excelimport","pptimport","pdfimport","|","importword","exportword","importpdf"]]初始化控件
varpos=window.location.href.lastIndexOf("/");varapi=[window.location.href.substr(0,pos+1),"asp/upload.asp"].join("");WordPaster.getInstance({//上传接口:http://www.ncmem.com/doc/view.aspx?id=d88b60a2b0204af1ba62fa66288203edPostUrl:api,//为图片地址增加域名:http://www.ncmem.com/doc/view.aspx?id=704cd302ebd346b486adf39cf4553936ImageUrl:"",//设置文件字段名称:http://www.ncmem.com/doc/view.aspx?id=c3ad06c2ae31454cb418ceb2b8da7c45FileFieldName:"file",//提取图片地址:http://www.ncmem.com/doc/view.aspx?id=07e3f323d22d4571ad213441ab8530d1ImageMatch:''});//加载控件注意
如果接口字段名称不是file,请配置FileFieldName。ueditor接口中使用的upfile字段
点击查看详细教程
配置ImageMatch
匹配图片地址,如果服务器返回的是JSON则需要通过正则匹配
ImageMatch:'',点击参考链接
配置ImageUrl
为图片地址增加域名,如果服务器返回的图片地址是相对路径,可通过此属性添加自定义域名。
ImageUrl:"",点击查看详细教程
配置SESSION
如果接口有权限验证(登陆验证,SESSION验证),请配置COOKIE。或取消权限验证。
参考:http://www.ncmem.com/doc/view.aspx?id=8602DDBF62374D189725BF17367125F3
效果
编辑器界面
导入Word文档,支持doc,docx
导入Excel文档,支持xls,xlsx
粘贴Word
一键粘贴Word内容,自动上传Word中的图片,保留文字样式。
Word转图片
一键导入Word文件,并将Word文件转换成图片上传到服务器中。
导入PDF
一键导入PDF文件,并将PDF转换成图片上传到服务器中。
导入PPT
一键导入PPT文件,并将PPT转换成图片上传到服务器中。
上传网络图片
下载示例
点击下载完整示例