news 2026/6/12 19:19:44

医院电子病历怎样实现CKEDITOR截图自动归档到C#.NET?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
医院电子病历怎样实现CKEDITOR截图自动归档到C#.NET?

震惊!.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/5/1 6:11:55

信息安全——Secure Hardware Extensions (SHE) 之 < SHE是谁? >

安全硬件扩展 (SHE) : Secure Hardware Extensions1. SHE介绍安全硬件扩展(SHE)是针对任何给定微控制器的片上扩展,是一种硬件安全模块。其目的是将对加密密钥的控制从软件领域转移到硬件领域,从而保护这些密钥免受软件…

作者头像 李华
网站建设 2026/6/11 13:46:28

关于MIO设置JTAG模式,还可以从Flash启动说明

一、说明 硬件设计为JTAG模式”,实际上是指通过MIO引脚将 BOOT_MODE[3:0] 配置为了 0011 或 1011,这个模式更准确地称为“JTAG 优先”模式,而不是“JTAG 唯一”模式。在这个模式下,ZYNQ的启动过程会首先尝试从JTAG启动&#xff0c…

作者头像 李华
网站建设 2026/6/8 17:15:32

颠覆测试认知:AI如何透视软件测试的黑暗角落

第一章 测试盲区:隐匿的质量黑洞 1.1 盲区的致命伪装 认知陷阱案例:某金融APP在压力测试中通过率100%,上线后却因除夕红包雨导致数据库死锁 传统覆盖率的欺骗性:某医疗系统代码覆盖率达95%,仍遗漏了罕见病编码组合的…

作者头像 李华
网站建设 2026/6/10 11:08:38

云服务器2G内存运行MySQL 9.0有哪些性能瓶颈?如何调优?

我手上有台2G内存云服务器。 装了宝塔面板,顺手跑了 MySQL 9.0.1。 之前还有人说2G内存的服务器不能安装MySQL 8.0。 能跑,没错。 一般小项目还是完全够用的,但如果网站访问量升高,数据量增加,MySQL 就可能“喘粗气…

作者头像 李华
网站建设 2026/5/22 16:29:08

腾讯后端日常实习一面45分钟深度复盘:Agent安全、协议栈、SQL优化与滑动窗口实战

腾讯后端日常实习一面45分钟深度复盘:Agent安全、协议栈、SQL优化与滑动窗口实战在腾讯后端日常实习的一面中,面试官并未止步于基础语法或简单算法,而是围绕真实项目中的安全风险、系统架构、协议理解与工程实践展开深度追问。尤其聚焦于当前…

作者头像 李华
网站建设 2026/5/30 7:48:33

基于SpringBoot的研究生调研管理系统毕设源码

博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在开发一套基于SpringBoot框架的研究生调研管理系统,以实现研究生调研活动的信息化、智能化和高效化管理。具体研究目的如下:提高…

作者头像 李华