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.js
UE.registerUI('officeimport', function(editor) {
// 创建公文导入按钮
var btn = new UE.UI.Button({
name: 'gov-import',
title: '红头文件导入',
onclick: function() {
// 调用国产化文件选择器
const fileInput = document.createElement('input');
fileInput.type = 'file';
fileInput.accept = '.docx,.xlsx,.pptx,.pdf';
fileInput.onchange = (e) => {
const file = e.target.files[0];
// 国密加密传输
const encrypted = SM4Encrypt(file);
axios.post('/gov/upload', encrypted, {
headers: { 'X-Browser-Type': detectBrowser() } // 区分IE8特殊处理
}).then(res => {
editor.execCommand('insertHtml', res.data.html);
});
};
fileInput.click();
}
});
return btn;
});
// 国产浏览器检测
function detectBrowser() {
if (window.ActiveXObject) return 'ie';
if (navigator.userAgent.includes('QAXSafe')) return 'qax';
if (navigator.userAgent.includes('Loongson')) return 'loong';
}
3.2 后端文件处理(JSP+阿里云OSS)
<%@ page import="com.aliyun.oss.OSSClient" %>
<%@ page import="cn.gov.sm4.SM4Util" %>
<%-- 文件上传处理器 --%>
<%
try {
// 国密解密
byte[] encrypted = request.getInputStream().readAllBytes();
SM4Util sm4 = new SM4Util(System.getenv("SM4_KEY"));
byte[] decrypted = sm4.decrypt(encrypted);
// 存储到阿里云OSS
OSSClient oss = new OSSClient(
"https://oss-cn-hangzhou.aliyuncs.com",
System.getenv("OSS_AK"),
System.getenv("OSS_SK")
);
String objectName = "redhead/" + UUID.randomUUID() + ".docx";
oss.putObject("gov-bucket", objectName, new ByteArrayInputStream(decrypted));
// 返回HTML片段(保留公文格式)
out.print(String.format(
"" +
"" +
"文件已加密存储",
objectName
));
} catch (Exception e) {
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"
]
]
初始化控件

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转换成图片上传到服务器中。

上传网络图片


被折叠的 条评论
为什么被折叠?



