2023年XX月XX日 | 企业级编辑器插件选型与开发日志


一、需求背景与市场调研

1.1 核心需求痛点
  • 政务项目特殊性:需100%兼容信创环境(麒麟/UOS+龙芯/鲲鹏)
  • IE8兼容:部分政务系统仍运行在Windows XP+IE8环境
  • 富文本保真:需支持政府公文要求的GB2312字体、MathType公式等复杂样式
  • 安全合规:所有文件需通过国产化加密算法传输(SM4)
1.2 厂商评估结果
厂商信创认证IE8支持买断报价央企案例
Microsoft 365齐全不支持¥398~498/人/年国务院某部委
WPS 365齐全不支持¥199~599/人/年国务院某部委
永中Office齐全不支持¥199~599/人/年国务院某部委
腾讯文档齐全不支持¥200~600/人/年国务院某部委
钉钉文档齐全不支持¥200~600/人/年国务院某部委
飞书齐全不支持¥200~600/人/年国务院某部委
石墨齐全不支持¥200~600/人/年国务院某部委
厂商A齐全支持¥85万国务院某部委
厂商B缺龙芯不支持¥45万某省政务云
厂商C齐全支持¥58万3家副省级政府

决策:选择厂商C,满足预算与技术红线,附赠源代码托管服务。


二、技术实施方案

2.1 架构设计
HTTP
SM4加密
JDBC
UEditor插件
SpringBoot代理层
华为云OBS
MySQL集群
信创存储服务器
2.2 关键代码实现

前端插件核心逻辑(Vue2适配版)

// ueditor-word-plugin.js
UE.registerUI('wordpaste', function(editor) {
  // 创建按钮
  var btn = new UE.UI.Button({
    name: 'wordpaste',
    title: '公文粘贴',
    onclick: function() {
      // 监听粘贴事件
      editor.addListener('paste', function(type, clipboardData) {
        if (clipboardData.files.length > 0) {
          // 调用华为云OBS上传接口
          uploadToHuaweiOBS(clipboardData.files[0]).then(url => {
            editor.execCommand('insertHtml', ``);
          });
        }
      });
    }
  });
  return btn;
});

// 信创环境检测
function checkOS() {
  const ua = navigator.userAgent;
  if (ua.indexOf('Kylin') !== -1) return 'kylin';
  if (ua.indexOf('Loongson') !== -1) return 'loongarch'; 
}

后端文件处理(SpringBoot + 华为云OBS SDK)

@RestController
@RequestMapping("/api/upload")
public class GovFileController {
  
  @PostMapping("/word")
  public ResponseEntity handleWordUpload(
      @RequestParam("file") MultipartFile file,
      @RequestHeader("X-SM4-Key") String sm4Key) {
    
    // 国密算法解密
    SM4Util sm4 = new SM4Util(sm4Key);
    byte[] decrypted = sm4.decrypt(file.getBytes());
    
    // 存储到华为云OBS
    ObsClient obs = new ObsClient("AK", "SK", "https://obs.cn-east-3.myhuaweicloud.com");
    String objectKey = "gov/" + UUID.randomUUID() + ".docx";
    obs.putObject("bucket-name", objectKey, new ByteArrayInputStream(decrypted));
    
    return ResponseEntity.ok(Map.of(
      "url", "https://obs.example.com/" + objectKey,
      "signature", SM3Util.hash(file.getOriginalFilename())
    ));
  }
}

三、信创适配专项

3.1 国产化测试矩阵
环境测试结果
银河麒麟v10 + 龙芯公式渲染异常
统信UOS + 飞腾字体缺失
IE8 + Windows XP插件加载超时

解决方案

  1. 针对龙芯环境增加WASM版公式渲染器
  2. 预装GB2312字体包到系统镜像
  3. IE8采用ActiveX降级方案

四、商务与交付

4.1 合同关键条款
  • 授权模式:¥88万买断(含源代码及五年维护)
  • 罚则:若信创适配不达标,赔付合同金额200%
  • 交付物
    • 通过等保2.0三级测评报告
    • 中央政府采购网入围证书
    • 国资委某局项目验收单
4.2 实施里程碑
  • 第1周:完成UEditor插件内核开发
  • 第3周:通过鲲鹏920兼容性认证
  • 第6周:在XX省政务云完成部署

五、风险预警

  1. 龙芯性能瓶颈:实测在LoongArch架构下,100页Word解析耗时较x86长3倍
  2. 字体版权风险:需单独采购方正GB2312字体商业授权
  3. IE8内存泄漏:需每30分钟强制刷新编辑器实例

应对措施:建立专项技术保障基金(预算¥15万)。

(注:以上代码需配合厂商提供的SDK使用,敏感信息已脱敏处理)

复制插件目录

WordPaster插件目录

引入插件文件


	
	UEditor 1.4.3.3示例
	
    
	
	
    
    
    
    
    
    
	
    

注意:不要重复引入jquery,如果您的项目已经引入了jq,则不用再引入jq-1.4
image

在工具栏中增加插件按钮

//工具栏上的所有的功能按钮和下拉框,可以在new编辑器的实例时选择自己需要的重新定义
    toolbars: [
      [
        "fullscreen",
        "source",
        "|",
        "zycapture",
        "|",
        "wordpaster","importwordtoimg","netpaster","wordimport","excelimport","pptimport","pdfimport",
        "|",
        "importword","exportword","importpdf"
      ]
    ]

初始化控件

image

        var pos = window.location.href.lastIndexOf("/");
        var api = [
            window.location.href.substr(0, pos + 1),
            "asp/upload.asp"
        ].join("");
        WordPaster.getInstance({
			//上传接口:http://www.ncmem.com/doc/view.aspx?id=d88b60a2b0204af1ba62fa66288203ed
            PostUrl: api,
			//为图片地址增加域名:http://www.ncmem.com/doc/view.aspx?id=704cd302ebd346b486adf39cf4553936
            ImageUrl: "",
            //设置文件字段名称:http://www.ncmem.com/doc/view.aspx?id=c3ad06c2ae31454cb418ceb2b8da7c45
            FileFieldName: "file",
            //提取图片地址:http://www.ncmem.com/doc/view.aspx?id=07e3f323d22d4571ad213441ab8530d1
            ImageMatch: ''			
        });//加载控件

注意

如果接口字段名称不是file,请配置FileFieldName。ueditor接口中使用的upfile字段
image
点击查看详细教程

配置ImageMatch

匹配图片地址,如果服务器返回的是JSON则需要通过正则匹配

ImageMatch: '',

点击参考链接

配置ImageUrl

为图片地址增加域名,如果服务器返回的图片地址是相对路径,可通过此属性添加自定义域名。

ImageUrl: "",

点击查看详细教程

配置SESSION

如果接口有权限验证(登陆验证,SESSION验证),请配置COOKIE。或取消权限验证。
参考:http://www.ncmem.com/doc/view.aspx?id=8602DDBF62374D189725BF17367125F3

效果

编辑器界面

image

导入Word文档,支持doc,docx

粘贴Word和图片

导入Excel文档,支持xls,xlsx

粘贴Word和图片

粘贴Word

一键粘贴Word内容,自动上传Word中的图片,保留文字样式。
粘贴Word和图片

Word转图片

一键导入Word文件,并将Word文件转换成图片上传到服务器中。
导入Word转图片

导入PDF

一键导入PDF文件,并将PDF转换成图片上传到服务器中。
导入PDF转图片

导入PPT

一键导入PPT文件,并将PPT转换成图片上传到服务器中。
导入PPT转图片

上传网络图片

自动上传网络图片

下载示例

点击下载完整示例

更多推荐