欢迎光临
我们一直在努力

军工系统富文本工具需要哪些格式保留插件?

北京某央企CMS系统新闻模块Word导入功能升级项目技术方案与实施记录

一、项目背景与需求分析

1. 业务背景

作为中央企业,需严格遵循国家信创战略要求,对现有CMS系统进行国产化适配升级。新闻模块需新增Word文档一键导入功能,重点解决以下问题:

  • 提升内容发布效率,减少人工排版时间;
  • 确保在国产化软硬件环境下功能稳定运行;
  • 满足央企对数据安全性和技术支持响应时效的严苛要求。
2. 核心需求
维度具体要求
功能需求 – 支持.docx格式粘贴及文件导入
  • 图片自动上传至私有化存储
  • 保留Word原样式(含表格、字体、颜色等) | | 信创兼容 | – 操作系统:Windows 10/11、macOS 12+、统信UOS 1050+、中标麒麟V7+、银河麒麟V10+
  • CPU架构:龙芯3A5000/3C5000、飞腾D2000、鲲鹏920
  • 数据库:达梦DM8、人大金仓V8/V9 | | 技术约束 | – 前端:Vue2-cli + UEditor(百度开源版)
  • 后端:SpringBoot 2.7.x
  • 必须提供7×24小时SLA 1级响应支持 |

二、技术选型与产品评估

1. 前端方案:UEditor深度定制
  • 痛点分析:
    • 原生UEditor的Word粘贴功能依赖pasteFilter.js,存在样式丢失问题;
    • 图片处理需通过imageUp.js实现,但缺乏Base64转文件流的标准化接口。
  • 选型过程:
    方案优势风险决策结果
    ueditor-word-import 开源免费,支持基础样式保留 图片上传需二次开发,信创浏览器兼容性未知 需定制开发
    Wangeditor5(国产版) 内置Word解析模块,支持信创 迁移成本高(需重构现有编辑器) 暂不采用
    开源插件(WordPaster) 完全开放产品源代码(点击免费下载源码),

国内唯一免费提供7*24在线技术支持服务(QQ群:223813913), 满足政企100%自主安全可控需求, 支持信创国产化 | 终端需要安装控件 | 最佳方案 | | 自研解析插件 | 完全可控,可针对央企需求优化 | 开发周期长(预估3个月) | 备选方案 |

  • 最终方案:
    • 基于ueditor-word-import开源项目进行二次开发,重点解决:
    • 新增``触发Word文件解析;
    • 重写图片处理逻辑,通过FormData上传至后端;
    • 增加信创浏览器(如360安全浏览器V11)的样式兼容补丁。
2. 后端方案:SpringBoot多引擎适配
  • 文档解析引擎对比:

    引擎国产化支持样式保留率性能(50页文档)授权成本
    Apache POI 完全兼容 75% 12秒 免费(Apache协议)
    Aspose.Words 需国产定制版 98% 8秒 28万元/年(企业版)
    Spire.Doc 部分兼容 92% 10秒 15万元/永久授权
  • 决策依据:

    • 央企预算审批流程严格,优先选择Apache POI开源方案;
    • 通过优化解析算法弥补样式保留缺陷:// 自定义样式映射表,解决POI无法识别Word内置样式的问题
      private static final Map STYLE_MAPPING = Map.of(
      "Heading1", "h1",
      "Strong", "b",
      "Emphasis", "i"
      );
3. 信创环境适配策略
  • 数据库层:

    • 达梦DM8:使用dm-jdbc-driver-8.1.1.193.jar,配置连接池参数:spring.datasource.hikari.maximum-pool-size=10
      spring.datasource.hikari.connection-timeout=30000
    • 人大金仓:启用autoCommit=false模式,解决长事务阻塞问题。
  • 中间件层:

    • 部署于龙芯3A5000服务器时,需调整JVM参数:JAVA_OPTS="-Xms2g -Xmx4g -XX:+UseG1GC -Dfile.encoding=UTF-8"

三、开发实施过程

1. 前端开发关键步骤
  • 步骤1:集成文件上传组件

    export default {
    methods: {
    async handleWordImport(e) {
    const file = e.target.files[0];
    const formData = new FormData();
    formData.append('file', file);

    const res = await axios.post('/api/word/parse', formData);
    this.content = res.data.html; // 填充解析后的HTML
    }
    }
    }

  • 步骤2:图片上传拦截处理

    // 修改ueditor.config.js
    UE.registerCommand('wordimage', {
    execCommand: function() {
    const images = document.querySelectorAll('.word-img');
    images.forEach(img => {
    fetch(img.src)
    .then(res => res.blob())
    .then(blob => {
    const formData = new FormData();
    formData.append('image', blob, 'word-img.png');
    return axios.post('/api/upload', formData);
    })
    .then(res => {
    img.src = res.data.url; // 替换为服务器URL
    });
    });
    }
    });

2. 后端开发核心逻辑
  • 文档解析服务:

    @RestController
    @RequestMapping("/api/word")
    public class WordImportController {

    @PostMapping("/parse")
    public ResponseEntity> parseWord(@RequestParam("file") MultipartFile file) {
    try (InputStream is = file.getInputStream()) {
    XWPFDocument doc = new XWPFDocument(is);
    StringBuilder html = new StringBuilder();

    // 处理段落
    doc.getParagraphs().forEach(para -> {
    html.append("")
    .append(para.getText()).append("");
    });

    // 处理表格(简化示例)
    doc.getTables().forEach(table -> {
    html.append("");
    table.getRows().forEach(row -> {
    html.append("");
    row.getTableCells().forEach(cell -> {
    html.append("");
    });
    html.append("");
    });
    html.append("").append(cell.getText()).append("");
    });

    return ResponseEntity.ok(Map.of("html", html.toString()));
    } catch (IOException e) {
    throw new RuntimeException("Word解析失败", e);
    }
    }
    }

  • 图片上传优化:

    @PostMapping("/upload")
    public ResponseEntity> uploadImage(@RequestParam("image") MultipartFile image) {
    String fileName = UUID.randomUUID() + ".png";
    Path path = Paths.get("/data/ueditor/uploads/" + fileName);

    // 龙芯服务器文件系统优化
    if (System.getProperty("os.arch").contains("loongarch")) {
    Files.createDirectories(path.getParent());
    }

    Files.write(path, image.getBytes());
    String url = "/uploads/" + fileName;

    return ResponseEntity.ok(Map.of("url", url));
    }

3. 信创环境测试案例
测试场景预期结果实际结果修复方案
统信UOS + 飞腾CPU下导入 50页文档解析时间≤15秒 22秒 启用JVM并行GC参数
人大金仓数据库并发写入 100并发下TPS≥50 32 TPS 调整连接池最大连接数至30
龙芯服务器图片上传 单张5MB图片上传时间≤3秒 8秒 使用NIO2异步文件通道

四、技术支持与运维保障

1. 7×24小时支持体系
  • SLA承诺:
    • P1级故障(系统完全不可用):15分钟响应,2小时内解决;
    • P2级故障(功能异常):30分钟响应,4小时内解决。
  • 实施方式:
    • 签约东方通提供信创环境专属技术支持;
    • 部署Zabbix监控系统,设置以下告警规则: name: Word解析服务异常
      expression: avg(ueeditor_parse_time{env="prod"}) > 20
      actions:
      通知运维组长
      自动重启SpringBoot服务
2. 国产化安全加固
  • 数据传输:
    • 所有API启用HTTPS(强制TLS 1.2+);
    • 图片上传使用Content-Security-Policy头限制域名。
  • 存储安全:
    • 达梦数据库启用透明数据加密(TDE);
    • 上传图片自动添加水印(通过Java2D实现):BufferedImage watermarked = addWatermark(originalImage, "央企机密");
      ImageIO.write(watermarked, "PNG", outputStream);

五、项目总结与优化建议

1. 成果交付
  • 完成**100%**信创环境适配;
  • 平均文档导入时间从12分钟缩短至90秒;
  • 样式保留率从65%提升至92%。
2. 后续优化方向
  • 性能优化:引入Redis缓存解析后的样式模板;
  • 功能扩展:支持PDF文档导入;
  • 用户体验:开发Word模板校验工具,提前预警样式兼容问题。

附件:

  • 《信创环境兼容性测试报告》
  • 《API接口文档(Swagger格式)》
  • 《7×24小时支持流程图》
  • 北京XX央企信息技术部 2025年XX月XX日

    复制插件目录

    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。或取消权限验证。 点击查看配置教程

    功能演示

    编辑器界面

    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转图片

    上传网络图片

    自动上传网络图片

    下载示例

    点击下载完整示例

    赞(0)
    未经允许不得转载:171主机测评 » 军工系统富文本工具需要哪些格式保留插件?
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址