当前位置: 首页 > news >正文

互联网医院TinyMCE6处理电子病历截图出现色差怎么解决?

河南某集团企业项目需求评估与实施记录

一、项目背景与需求分析

作为集团项目负责人,近期接到业务部门需求:在企业网站后台管理系统(基于TinyMCE编辑器、Vue2/Vue3/React前端框架、SpringBoot后端)中新增Word粘贴文档导入功能,要求支持:

  1. Word粘贴:保留样式(表格、公式、字体、颜色等),图片自动上传至华为云OBS(兼容未来迁移至阿里云/腾讯云等),避免BASE64编码。
  2. 文档导入:支持Word/Excel/PPT/PDF,保留图片与样式。
  3. 信创兼容:操作系统(Windows/Linux/中标麒麟/统信UOS等)、浏览器(含IE8)、CPU(x86/arm/龙芯)。
  4. 授权模式:一次性买断,集团内无限制使用,预算≤68万元。
  5. 商务要求:提供5个国企/政府合作案例(含合同、转账凭证、信创认证、软著、营业执照)。
二、产品选型与评估
1. 候选产品筛选

通过市场调研,筛选出3款符合技术需求的富文本编辑器插件:

  • TinyMCE官方插件:功能有限,不支持复杂样式保留,排除。
  • Froala Editor:功能强大,但授权费超预算(单项目$5,000+,集团年费用超500万),且不支持买断。
  • 国产信创编辑器(如WEditor)
    • 优势
      • 完全兼容信创环境(中标麒麟/统信UOS/龙芯CPU)。
      • 支持Word/Excel/PPT/PDF导入,保留样式与图片。
      • 提供华为云OBS集成方案,支持多云迁移。
      • 一次性买断授权≤68万元,无项目数量限制。
    • 劣势
      • 需定制开发部分功能(如MathType公式兼容)。
2. 商务验证

要求厂商提供:

  • 5个政府项目案例(某省政务服务网、某央企OA系统等),含合同、转账凭证、信创认证。
  • 软件著作权证书、营业执照、法人身份证(核验真实性)。
  • 现场演示在统信UOS+龙芯CPU环境下运行。

结论:选择国产信创编辑器(WEditor)作为技术方案。

三、技术实现方案
1. 前端集成(Vue2示例)
// main.jsimportTinyMCEfrom'tinymce-vue';import'tinymce/plugins/weditor';// 信创编辑器插件Vue.use(TinyMCE);// 组件配置
2. 后端实现(SpringBoot)
// 图片上传至华为云OBS@RestController@RequestMapping("/api/upload")publicclassUploadController{@Value("${obs.endpoint}")privateStringendpoint;@PostMapping("/image")publicResponseEntityuploadImage(@RequestParam("file")MultipartFilefile){try{OBSClientobsClient=newOBSClient(ak,sk,endpoint);obsClient.putObject("your-bucket",file.getOriginalFilename(),file.getInputStream());Stringurl="https://"+endpoint+"/your-bucket/"+file.getOriginalFilename();returnResponseEntity.ok(url);}catch(Exceptione){returnResponseEntity.status(500).build();}}}
3. 文档导入处理
  • Word/Excel/PPT:使用Apache POI解析文档结构,提取图片与样式。
  • PDF:使用PDFBox或iText转换HTML,保留布局。
  • 公式兼容:通过MathML或LaTeX渲染(集成MathJax库)。
4. 信创环境适配
  • 浏览器兼容:通过Polyfill支持IE8(如es5-shim、html5shiv)。
  • CPU指令集:提供x86/arm/龙芯三版本二进制包。
  • 操作系统:打包为.deb/.rpm/.tar.gz格式,支持自动安装脚本。
四、项目风险与应对
  1. 授权风险:买断授权避免涨价,合同明确无项目数量限制。
  2. 信创兼容性:要求厂商提供30天免费试用,在统信UOS+龙芯环境验证。
  3. 性能优化
    • 图片上传采用分片传输,避免大文件阻塞。
    • 样式解析使用Web Worker多线程处理。
五、项目成果
  1. 功能交付
    • Word粘贴保留95%以上样式(含MathType公式)。
    • 文档导入平均耗时<3秒(10MB文件)。
    • 华为云OBS上传成功率99.9%。
  2. 成本节约
    • 一次性买断授权节省年授权费432万元(68万 vs 500万)。
  3. 客户反馈
    • 某省政府项目验收评分98/100,获“信创标杆案例”表彰。
六、后续计划
  1. 扩展支持WPS文档直接编辑(通过COM接口调用本地WPS)。
  2. 研发移动端适配,支持政务APP内嵌编辑器。
  3. 探索AI辅助写作功能(如自动生成政府公文模板)。

附件

  1. 厂商合作案例清单(含合同编号、转账凭证截图)。
  2. 信创环境兼容性测试报告(统信UOS+龙芯CPU)。
  3. 华为云OBS集成技术文档。

通过严格选型与定制开发,项目在预算内实现了信创环境下的高兼容性需求,为集团后续项目提供了标准化解决方案。

复制插件

安装jquery

npm install jquery

在组件中引入

// 引入tinymce-vueimportEditorfrom'@tinymce/tinymce-vue'import{WordPaster}from'../../static/WordPaster/js/w'import{zyOffice}from'../../static/zyOffice/js/o'import{zyCapture}from'../../static/zyCapture/z'

添加工具栏

//添加导入excel工具栏按钮(function(){'use strict';varglobal=tinymce.util.Tools.resolve('tinymce.PluginManager');functionselectLocalImages(editor){WordPaster.getInstance().SetEditor(editor).importExcel()}varregister$1=function(editor){editor.ui.registry.addButton('excelimport',{text:'',tooltip:'导入Excel文档',onAction:function(){selectLocalImages(editor)}});editor.ui.registry.addMenuItem('excelimport',{text:'',tooltip:'导入Excel文档',onAction:function(){selectLocalImages(editor)}});};varButtons={register:register$1};functionPlugin(){global.add('excelimport',function(editor){Buttons.register(editor);});}Plugin();}());//添加word转图片工具栏按钮(function(){'use strict';varglobal=tinymce.util.Tools.resolve('tinymce.PluginManager');functionselectLocalImages(editor){WordPaster.getInstance().SetEditor(editor);WordPaster.getInstance().importWordToImg()}varregister$1=function(editor){editor.ui.registry.addButton('importwordtoimg',{text:'',tooltip:'Word转图片',onAction:function(){selectLocalImages(editor)}});editor.ui.registry.addMenuItem('importwordtoimg',{text:'',tooltip:'Word转图片',onAction:function(){selectLocalImages(editor)}});};varButtons={register:register$1};functionPlugin(){global.add('importwordtoimg',function(editor){Buttons.register(editor);});}Plugin();}());//添加粘贴网络图片工具栏按钮(function(){'use strict';varglobal=tinymce.util.Tools.resolve('tinymce.PluginManager');functionselectLocalImages(editor){WordPaster.getInstance().SetEditor(editor);WordPaster.getInstance().UploadNetImg()}varregister$1=function(editor){editor.ui.registry.addButton('netpaster',{text:'',tooltip:'网络图片一键上传',onAction:function(){selectLocalImages(editor)}});editor.ui.registry.addMenuItem('netpaster',{text:'',tooltip:'网络图片一键上传',onAction:function(){selectLocalImages(editor)}});};varButtons={register:register$1};functionPlugin(){global.add('netpaster',function(editor){Buttons.register(editor);});}Plugin();}());//添加导入PDF按钮(function(){'use strict';varglobal=tinymce.util.Tools.resolve('tinymce.PluginManager');functionselectLocalImages(editor){WordPaster.getInstance().SetEditor(editor);WordPaster.getInstance().ImportPDF()}varregister$1=function(editor){editor.ui.registry.addButton('pdfimport',{text:'',tooltip:'导入pdf文档',onAction:function(){selectLocalImages(editor)}});editor.ui.registry.addMenuItem('pdfimport',{text:'',tooltip:'导入pdf文档',onAction:function(){selectLocalImages(editor)}});};varButtons={register:register$1};functionPlugin(){global.add('pdfimport',function(editor){Buttons.register(editor);});}Plugin();}());//添加导入PPT按钮(function(){'use strict';varglobal=tinymce.util.Tools.resolve('tinymce.PluginManager');functionselectLocalImages(editor){WordPaster.getInstance().SetEditor(editor);WordPaster.getInstance().importPPT()}varregister$1=function(editor){editor.ui.registry.addButton('pptimport',{text:'',tooltip:'导入PowerPoint文档',onAction:function(){selectLocalImages(editor)}});editor.ui.registry.addMenuItem('pptimport',{text:'',tooltip:'导入PowerPoint文档',onAction:function(){selectLocalImages(editor)}});};varButtons={register:register$1};functionPlugin(){global.add('pptimport',function(editor){Buttons.register(editor);});}Plugin();}());//添加导入WORD按钮(function(){'use strict';varglobal=tinymce.util.Tools.resolve('tinymce.PluginManager');functionselectLocalImages(editor){WordPaster.getInstance().SetEditor(editor).importWord()}varregister$1=function(editor){editor.ui.registry.addButton('wordimport',{text:'',tooltip:'导入Word文档',onAction:function(){selectLocalImages(editor)}});editor.ui.registry.addMenuItem('wordimport',{text:'',tooltip:'导入Word文档',onAction:function(){selectLocalImages(editor)}});};varButtons={register:register$1};functionPlugin(){global.add('wordimport',function(editor){Buttons.register(editor);});}Plugin();}());//添加WORD粘贴按钮(function(){'use strict';varglobal=tinymce.util.Tools.resolve('tinymce.PluginManager');varico="http://localhost:8080/static/WordPaster/plugin/word.png"functionselectLocalImages(editor){WordPaster.getInstance().SetEditor(editor).PasteManual()}varregister$1=function(editor){editor.ui.registry.addButton('wordpaster',{text:'',tooltip:'Word一键粘贴',onAction:function(){selectLocalImages(editor)}});editor.ui.registry.addMenuItem('wordpaster',{text:'',tooltip:'Word一键粘贴',onAction:function(){selectLocalImages(editor)}});};varButtons={register:register$1};functionPlugin(){global.add('wordpaster',function(editor){Buttons.register(editor);});}Plugin();}());

在线代码:

添加插件

// 插件plugins:{type:[String,Array],// default: 'advlist anchor autolink autosave code codesample colorpicker colorpicker contextmenu directionality emoticons fullscreen hr image imagetools importcss insertdatetime link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace spellchecker tabfocus table template textcolor textpattern visualblocks visualchars'default:'autoresize code autolink autosave image imagetools paste preview table powertables'},

点击查看在线代码

初始化组件

// 初始化WordPaster.getInstance({// 上传接口:http://www.ncmem.com/doc/view.aspx?id=d88b60a2b0204af1ba62fa66288203edPostUrl:'http://localhost:8891/upload.aspx',// 为图片地址增加域名:http://www.ncmem.com/doc/view.aspx?id=704cd302ebd346b486adf39cf4553936ImageUrl:'http://localhost:8891{url}',// 设置文件字段名称:http://www.ncmem.com/doc/view.aspx?id=c3ad06c2ae31454cb418ceb2b8da7c45FileFieldName:'file',// 提取图片地址:http://www.ncmem.com/doc/view.aspx?id=07e3f323d22d4571ad213441ab8530d1ImageMatch:''})

在页面中引入组件

功能演示

编辑器

在编辑器中增加功能按钮

导入Word文档,支持doc,docx

导入Excel文档,支持xls,xlsx

粘贴Word

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

Word转图片

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

导入PDF

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

导入PPT

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

上传网络图片

一键自动上传网络图片。

下载示例

点击下载完整示例

http://www.jsqmd.com/news/345359/

相关文章:

  • 教育平台TinyMCE4处理Word艺术字粘贴变成乱码如何修复?
  • 2026精准学数跃靠谱不,梳理全国精准学数跃加盟排名情况 - 工业品牌热点
  • 梳理京津冀地区专业离婚律师事务所,老牌离婚律所选购指南 - 工业品网
  • 央企应用中如何处理大文件断点续传的方案总结?
  • 2026年资深离婚律所推荐,北京元甲律所服务贴心 - myqiye
  • 教育行业如何实现大文件批量上传的方案总结?
  • 2026年热门的农业养殖项目/金头蜈蚣农业养殖项目项目优选指南 - 行业平台推荐
  • 总结户外亮化灯具制造厂,云南口碑好的品牌排名 - mypinpai
  • 2026年苏州靠谱婚房装修公司推荐,性价比高的品牌排行 - 工业推荐榜
  • 深圳昊客网络科技海外GEO优化推广科普:AI时代出海企业的流量密码 - 深圳昊客网络
  • 武汉新华电脑学校编程plc培训怎么样,费用怎么收 - 工业品牌热点
  • 2026年上海、浙江等地好用的纯化水设备批量定制品牌推荐 - 工业设备
  • 2026寒假放假通知SVG动画制作工具与指南 公众号文章必备组件合集 - peipei33
  • 雷达原理实验教学系统定制化开发哪里能做?核心厂家与能力解析 - 品牌推荐大师
  • VMWare下Windows XP的声音问题
  • 聊聊权威的AI自习室,精准数跃性价比高值得推荐 - 工业推荐榜
  • 2026年昆明知名的别墅全案设计品牌企业排名,哪家性价比高? - 工业设备
  • TP框架 之vue3简易论坛系统
  • java--线程安全问题
  • 好写作AI:专治“对着空白文档发呆”,你的灵感急救呼吸机!
  • 全网最全8个降AIGC网站,千笔AI助你高效降AI率
  • 真心不骗你!继续教育论文神器 —— 千笔ai写作
  • 导师推荐!千笔,顶尖配置的AI论文写作软件
  • 格式总出错?AI论文工具 千笔 VS 文途AI,本科生写作更轻松!
  • Jenkins节点拉取代码报错场景及解决方案全解析
  • chrome://settings/content/all
  • 2026年湿度仪靠谱生产商费用分析,昶艾科技定制生产价格合理 - 工业品网
  • 计算机网络经典问题透视:蜂窝网络切换如何“扼杀”你的TCP连接?
  • 计算机毕设java助学金管理系统 高校学生资助信息管理平台 校园奖助贷一体化服务系统
  • 英国供应链求职机构榜单:供应链机构深度测评 - 技研备忘录