农业大数据CKEDITOR如何兼容微信公众号图文的图片上传?

企业网站后台Word/公众号内容导入功能集成项目报告

一、需求分析与技术调研

我作为项目负责人,近期针对企业网站后台管理系统新增的Word粘贴、Word文档导入及微信公众号内容粘贴功能需求展开了全面调研。经过详细分析,总结了以下关键需求点:

  1. 核心功能需求

    • Web编辑器插件形式集成(基于CKEditor + Vue2)
    • Word内容粘贴保留完整样式(含表格、公式、特殊字体等)
    • 公众号内容抓取及图片自动上传
    • 多格式文档导入(Word/Excel/PPT/PDF)
    • 图片二进制存储(华为云OBS)
  2. 特殊要求

    • 全信创环境兼容(OS/CPU/浏览器)
    • IE8兼容支持
    • 58万预算内买断授权
    • 需验证厂商资质(5+央企案例)

二、市场产品调研记录

1. 候选产品筛选

经过一周市场调研,筛选出5个符合基础要求的产品:

产品名称厂商技术架构信创认证买断价格IE8支持
网际Word助手北京网际Java+JS全系列45万/年
金格iWebOffice江西金格ActiveX+JS部分38万/年需插件
金山WPS金山软件Java+JS全系列62万/年
永中WebOffice无锡永中Java+JS全系列59万/年
腾讯文档腾讯Java+JS全系列68万/年
钉钉文档钉钉Java+JS全系列67万/年
飞书字节跳动Java+JS全系列66万/年
石墨文档石墨Java+JS全系列59万/年
点聚WebOffice北京点聚.NET+JS部分48万/年
超时代Office控件深圳超时代纯JS全系列55万/年
泽优WordPaster控件荆门泽优多平台构架全系列55万

2. 深度技术验证

测试环境

  • 麒麟V10 + 飞腾2000
  • Windows 7 + IE8
  • 统信UOS + 龙芯3A5000

验证重点

  1. 样式保留能力

    • 测试包含GB2312字体的政府公文
    • 复杂表格(合并单元格、边框样式)
    • MathType公式和LaTeX公式
    • 形状组合图形
  2. 图片处理

    // 示例:检查图片处理方式
    editor.on('paste', function(evt) {
        var html = evt.data.dataValue;
        // 验证图片是否转为二进制上传
        console.log(html.match(/]+src=["']([^"']+)["']/g)); 
    });
    
  3. 信创环境兼容性

    • 检查各产品在MIPS/LoongArch架构下的运行情况
    • 验证与华为云OBS的对接能力

3. 厂商资质审查

要求各厂商提供的资质文件:

  • 软件著作权证书
  • 信创环境兼容性测试报告
  • 5个以上央企/政府项目合同(脱敏)
  • 银行转账凭证

特别关注:荆门泽优软件提供的某部委项目案例中,包含完整的IE8兼容解决方案。

三、技术方案选型

最终选择:泽优WordPaster控件

决策依据

  1. 唯一通过全信创环境认证(含LoongArch)
  2. 提供ActiveX控件方案,适合IE8+
  3. 提供完整的SDK和API文档
  4. 55万买断价在预算内
  5. 图片直传OBS功能成熟

合同关键条款

  • 永久授权(不限项目数)
  • 免费升级维护3年
  • 提供产品源代码(单独付费,防厂商倒闭)
  • 性能保证(支持100并发)

四、系统集成方案

前端集成(Vue2 + CKEditor)

  1. 安装插件包:
npm install @supertime/office-embed --save
  1. 配置CKEditor:
// ckeditor.config.js
import SuperOffice from '@supertime/office-embed';

ClassicEditor.create(document.querySelector('#editor'), {
    plugins: [SuperOffice, /* 其他插件 */],
    toolbar: {
        items: [
            'superOfficeImport', 
            'superOfficePaste',
            'wechatImport',
            // ...原有工具项
        ]
    },
    superOffice: {
        obsConfig: {
            bucket: 'your-bucket',
            endpoint: 'obs.cn-south-1.myhuaweicloud.com',
            getTokenUrl: '/api/obs-token' // 后端签发临时token
        },
        wechatProxy: '/api/wechat-proxy' // 公众号图片代理
    }
});

后端对接(SpringBoot)

  1. OBS临时token接口:
@RestController
@RequestMapping("/api")
public class ObsController {
    
    @GetMapping("/obs-token")
    public ObsToken getObsToken() {
        // 使用华为云SDK生成临时上传凭证
        TemporarySignatureRequest request = new TemporarySignatureRequest(
            HttpMethodEnum.PUT, 1800);
        TemporarySignatureResponse response = 
            ObsClient.createTemporarySignature(request);
        
        return new ObsToken(
            response.getSignedUrl(),
            response.getActualSignedRequestHeaders()
        );
    }
    
    @Data
    public static class ObsToken {
        private String uploadUrl;
        private Map headers;
        // 构造器省略...
    }
}
  1. 微信公众号图片代理:
@PostMapping("/wechat-proxy")
public ResponseEntity proxyWechatImage(@RequestParam String url) {
    // 使用HttpClient下载图片
    CloseableHttpClient httpClient = HttpClients.createDefault();
    HttpGet httpGet = new HttpGet(url);
    
    try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
        HttpEntity entity = response.getEntity();
        byte[] bytes = EntityUtils.toByteArray(entity);
        
        // 直接转发二进制数据
        return ResponseEntity.ok()
            .contentType(MediaType.parseMediaType(
                entity.getContentType().getValue()))
            .body(bytes);
    }
}

五、信创环境适配方案

针对特殊环境的兼容处理:

  1. 字体兼容层
/* 前端字体回退策略 */
.editor-content {
    font-family: "仿宋_GB2312", "方正仿宋_GBK", "FangSong", serif;
}
  1. 龙芯架构适配
// 检测CPU架构
const isLoongArch = navigator.userAgent.includes('LoongArch');

if (isLoongArch) {
    // 加载专门优化的wasm模块
    import('./office-decoder-loongarch.wasm').then(module => {
        window.decoder = module;
    });
}
  1. IE8 Polyfill方案

六、项目实施计划

  1. 阶段一:集成测试(2周)

    • 开发环境集成验证
    • 信创实验室环境测试
  2. 阶段二:试点运行(1周)

    • 选择3个客户站点试运行
    • 收集性能数据(平均导入时间<2s)
  3. 阶段三:全面部署(1周)

    • 编写操作手册
    • 培训客服团队

风险控制

  • 保留原有编辑器作为fallback
  • 每日凌晨自动备份样式映射表

七、效果验证

测试用例示例:

测试项输入样本验证点结果
公文导入红头文件.docx仿宋GB2312保留
复杂表格统计月报.docx合并单元格样式
数学公式数学试卷.docxMathType渲染
公众号文章某政府公众号链接图片自动上传

八、项目总结

本项目成功在预算范围内(实际支出55万元)实现了:

  1. 全信创环境兼容的Office内容导入
  2. 无缝对接华为云OBS存储
  3. 零改造支持IE8等老旧浏览器
  4. 获得客户信息化部门好评

后续优化方向

  • 增加WPS格式支持
  • 集成电子签章功能
  • 对接政府公文交换系统

附:核心代码片段已通过公司内部GitLab归档,路径为:
gitlab.xxx-group.com/backend/word-import-v2

复制插件

说明:此教程以CKEditor4.x为例,使用其他编辑器的查看对应教程。
将下列文件夹复制到项目中
/WordPaster
/ckeditor/plugins/imagepaster
/ckeditor/plugins/netpaster
/ckeditor/plugins/pptpaster
/ckeditor/plugins/pdfimport

上传插件

wordpaster文件夹

上传插件文件夹

将imagepaster,netpaster文件夹上传到现有项目ckeditor/plugins目录中
插件文件夹

在工具栏中增加插件按钮

插件按钮

引用js

引用JS






初始化控件

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: '',
	Cookie: 'PHPSESSID='			
});//加载控件

配置上传接口

初始化控件

注意

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

配置ImageMatch

用于匹配JSON数据,
匹配地址
点击查看详细教程

配置ImageUrl

用于为图片增加域名前缀
自定义域名
点击查看详细教程

配置Session

如果接口有权限验证(登陆验证,SESSION验证),请配置COOKIE。或取消权限验证。
参考:点击查看详细教程

说明

1.请先测试您的接口:点击查看详细教程

功能演示

编辑器界面

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

上传网络图片

一键自动上传网络图片,自动下载远程服务器图片,自动上传远程服务器图片
自动上传网络图片

下载示例

点击下载完整示例

下载前可以先看下教程 https://pan.quark.cn/s/16a53f4bd595 小天才电话手表刷机教程 — 基础篇 我们将为您简单的介绍小天才电话手表新机型的简单刷机以及玩法,如adb工具的使用,magisk的刷入等等。 我们会确保您看完此教程后能够对Android系统有一个最基本的认识,以及能够成功通过magisk root您的手表,并安装您需要的第三方软件。 ADB Android Debug Bridge,简称,在android developer的adb文档中是这么描述它的: 是一种多功能命令行工具,可让您与设备进行通信。 该命令有助于各种设备操作,例如安装和调试应用程序。 提供对 Unix shell 的访问,您可以使用它在设备上运行各种命令。 它是一个客户端-服务器程序。 这听起来有些难以理解,因为您也没有必要去理解它,如果您对本文中的任何关键名词产生疑惑或兴趣,您都可以在搜索引擎中去搜索它,当然,我们会对其进行简单的解释:是一款在命令行中运行的,用于对Android设备进行调试的工具,并拥有比一般用户以及程序更高的权限,所以,我们可以使用它对Android设备进行最基本的调试操作。 而在小天才电话手表上启用它,您只需要这么做: - 打开拨号盘; - 输入; - 点按打开adb调试选项。 其次是电脑上的Android SDK Platform-Tools的安装,此工具是 Android SDK 的组件。 它包括与 Android 平台交互的工具,主要由和构成,如果您接触过Android开发,必然会使用到它,因为它包含在Android Studio等IDE中,当然,您可以独立下载,在下方选择对应的版本即可: - Download SDK Platform...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值