news 2026/10/13 15:51:13

ckeditor OA系统IE下粘贴word图片转存优化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ckeditor OA系统IE下粘贴word图片转存优化

震惊!.NET程序员接了个CMS项目,结果客户要求比登天还难!

兄弟们好!我是一名在西安搬砖的.NET程序员,最近接了个企业官网CMS的外包项目,本来以为就是改改新闻发布模块的小活儿,结果客户给我来了个"大礼包"需求!

客户需求:从Word一键粘贴到编辑器

客户说:“小编们年纪都大了,能不能让他们直接从Word复制粘贴?还要保留所有格式!什么字体颜色啊、数学公式啊、图片表格啊,一个都不能少!”

我当时就想:“大哥,您这是要我把Word直接搬进CMS里啊?”

技术支持评估:愁死我了

我评估了一堆开源编辑器插件:

  • CKEditor官方插件?不行!公式支持太弱鸡
  • 各种开源富文本编辑器?emz/wmz格式公式根本撑不住
  • 自己开发?680块预算怕是不够我买咖啡提神的!

解决方案:定制CKEditor插件

既然现成的都不行,那就只能自己动手丰衣足食了。下面是我的一些思路:

前端部分(Vue3 + CKEditor)

// 在CKEditor配置中添加自定义插件importClassicEditorfrom'@ckeditor/ckeditor5-build-classic';importMyCustomPluginfrom'./my-custom-plugin';ClassicEditor.create(document.querySelector('#editor'),{plugins:[MyCustomPlugin],toolbar:['wordPaste','importDocument',...],}).then(editor=>{console.log('Editor was initialized',editor);}).catch(error=>{console.error(error);});// 自定义插件代码exportdefaultclassWordPastePlugin{init(){// 处理Word粘贴逻辑this.editor.plugins.get('Clipboard').on('inputTransformation',(evt,data)=>{// 这里处理Word内容转换consthtml=this._convertWordHtml(data.dataTransfer.getData('text/html'));data.content=this.editor.data.htmlToModel(html);});}_convertWordHtml(rawHtml){// 这里实现Word HTML到编辑器HTML的转换// 包括处理公式、图片等特殊内容returnprocessedHtml;}}

后端部分(C# WebForm)

// 处理文件上传的API[WebMethod]publicstaticstringUploadDocument(HttpPostedFilefile){try{// 1. 验证文件类型varextension=Path.GetExtension(file.FileName).ToLower();if(!new[]{".docx",".xlsx",".pptx",".pdf"}.Contains(extension))thrownewException("不支持的文件类型");// 2. 临时保存文件vartempPath=Path.Combine(Server.MapPath("~/Temp"),Guid.NewGuid()+extension);file.SaveAs(tempPath);// 3. 根据文件类型调用不同解析器stringhtmlContent;switch(extension){case".docx":htmlContent=WordParser.ConvertToHtml(tempPath);break;case".xlsx":htmlContent=ExcelParser.ConvertToHtml(tempPath);break;// 其他类型处理...}// 4. 上传图片到OSShtmlContent=ImageHandler.UploadImagesToOSS(htmlContent);// 5. 转换公式htmlContent=FormulaConverter.ConvertLatexToMathML(htmlContent);returnhtmlContent;}catch(Exceptionex){// 错误处理return$"转换失败:{ex.Message}";}}

技术难点解析

  1. Word公式处理:

    • 使用mammoth.js解析Word文档
    • 对MathType公式进行特殊处理
    • 使用MathJax或KaTeX将LaTeX转换为MathML
  2. 图片处理:

    // 图片上传到阿里云OSSpublicstaticstringUploadToOSS(Streamstream,stringfileName){varclient=newOssClient(endpoint,accessKeyId,accessKeySecret);varresult=client.PutObject(bucketName,"uploads/"+fileName,stream);return$"https://{bucketName}.{endpoint}/uploads/{fileName}";}
  3. 样式保留:

    • 使用CSS in JS技术保留原始样式
    • 对表格进行特殊处理,保证响应式布局

成本控制:680块真的够吗?

兄弟们,680块预算真的紧巴巴啊!我是这么规划的:

  1. 前期准备:3罐红牛(15元)
  2. 开发时间:3个通宵(电费30元)
  3. 插件授权:买了个基础版(500元)
  4. 测试:让女朋友帮忙测试(代价是请她吃火锅135元)

总计:680元整!完美!(女朋友的火锅钱只能先欠着了…)

加群福利:来啊,快活啊!

兄弟们,独乐乐不如众乐乐!我建了个QQ群:223813913,加群福利大大的:

  1. 新人红包1-99元(能不能抢到99看手速)
  2. 最新产品体验(尝鲜版,bug多多)
  3. 代理提成最高50%(2万订单提1万,想想都刺激)
  4. 技术交流(装X、吹水、划水三不误)

群内现状:已经有几位大佬升级到黄金会员了,月入10万不是梦!而我…还在为680块钱的项目熬夜…

最后吐槽

客户要的功能比登天还难,预算却比纸还薄。但谁让我是程序员呢?不就是把Word搬进网页吗?干就完了!奥利给!

PS:女朋友说如果这周末再不陪她,就要把我的机械键盘扔了…救救孩子吧!

复制插件

说明:此教程以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/10/9 19:35:20

python网上求职招聘系统_7681v

目录已开发项目效果实现截图开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!已开发项目效果实现截图 同行可拿货,招校园代理 python网上求职招聘系统_7681v 开发技术路线 开发语…

作者头像 李华
网站建设 2026/10/10 1:33:36

python网上税务办税预约系统

目录已开发项目效果实现截图开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!已开发项目效果实现截图 同行可拿货,招校园代理 python网上税务办税预约系统 开发技术路线 开发语言&…

作者头像 李华
网站建设 2026/10/10 1:33:42

PaddlePaddle平台如何支持弱监督与半监督学习?

PaddlePaddle如何赋能弱监督与半监督学习:从框架能力到产业落地 在AI工业化进程不断加速的今天,一个现实问题始终制约着深度学习模型的大规模落地——高质量标注数据的成本太高了。尤其是在医疗影像分析、工业缺陷检测、金融风控等专业领域,每…

作者头像 李华
网站建设 2026/10/10 1:33:48

基于非对称纳什谈判的多微网电能共享运行优化策略 关键词:纳什谈判 合作博弈 微网 电转气-碳捕...

基于非对称纳什谈判的多微网电能共享运行优化策略 关键词:纳什谈判 合作博弈 微网 电转气-碳捕集 P2P电能交易交易 参考文档:《基于非对称纳什谈判的多微网电能共享运行优化策略》完美复现 仿真平台:MATLAB CPLEX 主要内容:…

作者头像 李华
网站建设 2026/10/7 2:35:23

JS正则判断汉字:匹配与验证方法详解

在处理前端表单验证或文本分析时,判断字符串中是否包含汉字是一个常见需求。JavaScript的正则表达式为我们提供了一种高效、直接的解决方案。掌握这个方法,能有效提升数据处理的准确性和用户体验。 如何使用正则表达式匹配单个汉字 在JavaScript中&#…

作者头像 李华
网站建设 2026/10/9 20:15:59

【Open-AutoGLM开发实战指南】:掌握高效AI自动化开发的5大核心技巧

第一章:Open-AutoGLM开发入门与环境搭建Open-AutoGLM 是一个面向自动化代码生成与自然语言理解的开源框架,基于 GLM 架构构建,支持多种编程语言的智能补全与语义分析。为顺利开展开发工作,需首先完成基础环境的配置与核心依赖的安…

作者头像 李华