农业大数据平台如何处理HTML编辑器粘贴的Excel图表?
·
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 架构设计
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 | 插件加载超时 |
解决方案:
- 针对龙芯环境增加WASM版公式渲染器
- 预装GB2312字体包到系统镜像
- IE8采用ActiveX降级方案
四、商务与交付
4.1 合同关键条款
- 授权模式:¥88万买断(含源代码及五年维护)
- 罚则:若信创适配不达标,赔付合同金额200%
- 交付物:
- 通过等保2.0三级测评报告
- 中央政府采购网入围证书
- 国资委某局项目验收单
4.2 实施里程碑
- 第1周:完成UEditor插件内核开发
- 第3周:通过鲲鹏920兼容性认证
- 第6周:在XX省政务云完成部署
五、风险预警
- 龙芯性能瓶颈:实测在LoongArch架构下,100页Word解析耗时较x86长3倍
- 字体版权风险:需单独采购方正GB2312字体商业授权
- IE8内存泄漏:需每30分钟强制刷新编辑器实例
应对措施:建立专项技术保障基金(预算¥15万)。
(注:以上代码需配合厂商提供的SDK使用,敏感信息已脱敏处理)
复制插件目录

引入插件文件
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"
]
]
初始化控件

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字段

点击查看详细教程
配置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转换成图片上传到服务器中。

上传网络图片

下载示例
更多推荐
所有评论(0)