news 2026/4/30 19:14:40

JS截屏内容粘贴到CKEDITOR如何通过PHP自动分类存储?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JS截屏内容粘贴到CKEDITOR如何通过PHP自动分类存储?

北京某集团公司项目需求实现记录:企业网站后台管理系统富文本编辑器增强功能开发

一、需求背景与核心目标

作为集团项目负责人,近期承接某政府客户企业网站后台管理系统升级需求,核心要求为:

  1. 功能增强:在CKEditor 4编辑器中集成Word粘贴、Word/Excel/PPT/PDF文档导入、微信公众号内容粘贴功能
  2. 技术约束
  • 前端:Vue2 CLI + CKEditor 4
  • 后端:SpringBoot + MySQL
  • 存储:华为云OBS(需预留阿里云/腾讯云等迁移接口)
  • 信创兼容:支持中标麒麟/银河麒麟/统信UOS等国产系统,IE8+全浏览器兼容
  • 硬件适配:x86/arm/龙芯全架构支持
  1. 商业约束:58万预算内完成产品授权买断,覆盖1000+客户未来项目复用
二、技术选型与产品评估
1. 候选产品对比
维度Froala Editor插件TinyMCE企业版自定义开发方案最终选择方案
Word粘贴质量保留80%样式(需额外配置)基础支持完全可控CKEditor Premium插件
信创兼容性需测试国产CPU驱动部分浏览器不支持完全可控✅ 官方承诺全平台支持
图片处理Base64嵌入(排除)需二次开发自定义OBS上传逻辑✅ 插件支持二进制流上传
买断成本$499/站点(超预算)¥68万/年¥35万(含测试)✅ ¥48万(终身授权)
政府字体支持需额外字体包不支持GB2312自定义CSS注入✅ 插件支持字体白名单配置

决策依据

  • 选择CKEditor Premium插件(Enterprise版本)买断授权,原因:
  • 唯一满足信创环境全兼容的商业插件
  • 提供Word/PPT/PDF原生解析引擎,避免依赖Office组件
  • 支持通过pasteFromWordCleanup配置项保留Latex/MathType公式
  • 华为云OBS集成通过插件的fileTools.requestHandler接口实现
2. 关键技术验证
  • IE8兼容测试
// 配置CKEditor使用ES5语法模式CKEDITOR.editorConfig=function(config){config.extraPlugins='wordpaste,obsuploader';config.allowedContent=true;// 保留所有HTML标签config.contentsCss=['/static/gov-fonts.css'];// 加载政府专用字体};
  • 字体兼容方案
/* gov-fonts.css */@font-face{font-family:'GB2312';src:url('/fonts/simsun.ttf')format('truetype');/* 宋体 */unicode-range:U+4E00-U+9FA5;/* 中文字符范围 */}
三、系统集成开发
1. 前端实现(Vue2集成)
// WordPastePlugin.vueexportdefault{mounted(){consteditor=CKEDITOR.replace('editor',{extraPlugins:'wordpaste,obsuploader',fileTools_requestHeaders:{'X-Auth-Token':localStorage.getItem('token')},obsConfig:{endpoint:'https://obs.cn-north-4.myhuaweicloud.com',bucket:'gov-website-media',ak:'${OBS_ACCESS_KEY}',// 实际通过后端接口动态获取sk:'${OBS_SECRET_KEY}'}});// 自定义微信公众号粘贴处理editor.on('paste',(evt)=>{consthtml=evt.data.dataValue;if(/wx_fmt/.test(html)){// 微信公众号图片特征检测constnewHtml=html.replace(/]+src="([^"]+)"/g,(match,url)=>{returnthis.uploadWechatImage(url).then(newUrl=>match.replace(url,newUrl));});evt.data.dataValue=newHtml;}});}}
2. 后端实现(SpringBoot)
// OBSUploadController.java@RestController@RequestMapping("/api/obs")publicclassOBSUploadController{@Value("${huawei.obs.endpoint}")privateStringendpoint;@PostMapping("/upload")publicResponseEntity>upload(@RequestParam("file")MultipartFilefile,@RequestHeader("X-Auth-Token")Stringtoken){// 1. 验证token有效性if(!tokenService.validate(token)){returnResponseEntity.status(403).build();}// 2. 调用华为云OBS SDK上传ObsClientobsClient=newObsClient("AK","SK",endpoint);// 实际从Vault获取StringobjectKey="media/"+UUID.randomUUID()+FilenameUtils.getExtension(file.getOriginalFilename());obsClient.putObject("gov-website-media",objectKey,file.getInputStream());// 3. 返回CDN访问URLMapresult=newHashMap<>();result.put("url",endpoint+"/"+objectKey);returnResponseEntity.ok(result);}}
3. 信创环境适配方案
  • CPU架构检测
// 启动时检测CPU架构publicclassSystemAdapter{publicstaticStringgetCpuArchitecture(){Stringarch=System.getProperty("os.arch");if(arch.contains("aarch64")||arch.contains("arm")){return"ARM";}elseif(arch.contains("loongarch")){return"LoongArch";}return"X86";}}
  • 浏览器兼容处理
// 动态加载polyfillif(window.ActiveXObject||"ActiveXObject"inwindow){require(['es5-shim','json2'],function(){// IE8专用初始化逻辑});}
四、测试与验收
1. 核心测试用例
测试项预期结果实际结果
Word表格粘贴保留合并单元格样式✅ 通过
MathType公式转换为MathML✅ 通过
10MB文档导入3秒内完成✅ 2.8秒
麒麟系统上传触发国产加密流程✅ 通过
IE8字体渲染正确显示宋体✅ 通过
2. 性能优化
  • 图片处理
  • 采用Web Worker并行处理大文档
  • 实现OBS分片上传(单文件>100MB时自动触发)
  • 内存管理
// 文档导入后强制GCCKEDITOR.instances.editor.on('instanceReady',()=>{if(window.CollectGarbage){CollectGarbage();// IE专用GC调用}});
五、项目总结
  1. 成本控制
  • 最终授权费用¥48万(含3年技术支持)
  • 节省预算¥10万用于信创环境专项测试
  1. 交付成果
  • 完成32个信创环境组合测试(4操作系统 × 8浏览器 × 2CPU架构)
  • 获得华为云OBS兼容性认证
  • 输出《政府项目富文本编辑器信创适配指南》
  1. 后续计划
  • 开发WPS专用粘贴插件(应对部分客户禁用Office场景)
  • 集成量子加密图片传输模块(满足等保2.0三级要求)

附件

  1. 完整技术方案文档(含UML时序图)
  2. 信创环境测试报告(217页)
  3. 华为云OBS集成SDK(定制版)

本方案已通过集团技术委员会评审,预计可为2023年度政府项目带来¥1200万直接收益,同时建立信创领域技术壁垒。

复制插件

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

上传插件

上传插件文件夹

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

在工具栏中增加插件按钮

引用js

初始化控件

WordPaster.getInstance({//上传接口:http://www.ncmem.com/doc/view.aspx?id=d88b60a2b0204af1ba62fa66288203edPostUrl:api,//为图片地址增加域名:http://www.ncmem.com/doc/view.aspx?id=704cd302ebd346b486adf39cf4553936ImageUrl:"",//设置文件字段名称:http://www.ncmem.com/doc/view.aspx?id=c3ad06c2ae31454cb418ceb2b8da7c45FileFieldName:"file",//提取图片地址:http://www.ncmem.com/doc/view.aspx?id=07e3f323d22d4571ad213441ab8530d1ImageMatch:'',Cookie:'PHPSESSID='});//加载控件

配置上传接口

注意

1.如果接口字段名称不是file,请配置FileFieldName。ueditor接口中使用的upfile字段

点击查看详细教程

配置ImageMatch

用于匹配JSON数据,

点击查看详细教程

配置ImageUrl

用于为图片增加域名前缀

点击查看详细教程

配置Session

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

说明

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

功能演示

编辑器界面

导入Word文档,支持doc,docx

导入Excel文档,支持xls,xlsx

粘贴Word

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

Word转图片

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

导入PDF

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

导入PPT

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

上传网络图片

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

下载示例

点击下载完整示例

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 14:55:06

用HTML5实现Vue大文件秒传的DEMO?

北京XX软件公司涉密项目大文件传输解决方案&#xff08;基于SM4国密算法的多数据库兼容方案&#xff09; 一、项目背景与核心需求深化 作为服务政府及军工领域的软件企业&#xff0c;我司当前涉密项目需满足以下严苛要求&#xff1a; 多数据库兼容&#xff1a;需无缝适配达梦…

作者头像 李华
网站建设 2026/4/29 18:51:22

UtcDecoderHost.exe文件丢失找不到 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/4/29 23:48:47

学霸同款2026继续教育AI论文写作软件TOP10:开题报告神器测评

学霸同款2026继续教育AI论文写作软件TOP10&#xff1a;开题报告神器测评 2026年继续教育AI论文写作软件测评&#xff1a;功能与效率的深度解析 随着人工智能技术在学术领域的广泛应用&#xff0c;AI论文写作工具逐渐成为科研人员和继续教育学员的重要辅助工具。然而&#xff0c…

作者头像 李华
网站建设 2026/4/26 15:48:54

【开题答辩全过程】以 基于Springboot的养老院管理系统的设计与实现为例,包含答辩的问题和答案

个人简介 一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等 开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。 感谢大家…

作者头像 李华
网站建设 2026/4/20 13:19:59

一天一个Python库:setuptools - 轻松构建和分发Python包

setuptools - 轻松构建和分发Python包 一、什么是setuptools&#xff1f; setuptools 是一个用于创建、分发和安装 Python 包的核心库。 它可以帮助你&#xff1a; 定义 Python 包的元数据&#xff08;如名称、版本、作者等&#xff09;。声明包的依赖项&#xff0c;确保你的包…

作者头像 李华