医院HIS系统集成umeditor时如何解决长文档粘贴卡顿问题?
程序员的外包奇遇记Word一键粘贴大作战大家好我就是那个在安徽码PHP的秃出程序员最近接了个CMS企业官网的活儿客户爸爸突然甩来一个需求…需求来了“小张啊我们这个新闻发布系统啊能不能像Word那样直接粘贴那些老同志不会用啊”我“呃…老板您这需求…”“还有啊Word、Excel、PPT、PDF都要能导入公式啊图片啊都不能丢Latex公式要转成什么ML…”我“MathML…”“对就是这个ML还要支持公众号内容导入预算680”我“…”(内心OS680您这是要我的命啊)技术选型历险记我翻遍了GitHub试了各种开源方案方案A能导入Word但公式变成了一堆乱码方案B支持PDF但图片全丢了方案C号称全支持结果安装包比我的项目还大最后我决定——自己动手丰衣足食前端Vue3UEditor魔改方案// 在UEditor中增加导入按钮UE.registerUI(importword,function(editor){constbtnnewUE.ui.Button({name:importword,title:导入Office文档,onclick:function(){// 创建隐藏的file inputconstfileInputdocument.createElement(input)fileInput.typefilefileInput.accept.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdffileInput.onchangeasync(e){constfilee.target.files[0]if(!file)return// 显示加载中editor.setDisabled()editor.fireEvent(showmessage,{id:uploading,content:正在解析文档请稍候...})try{constformDatanewFormData()formData.append(file,file)// 调用后端API解析文档constresawaitaxios.post(/api/parse-office,formData,{headers:{Content-Type:multipart/form-data}})// 插入解析后的HTMLeditor.execCommand(insertHtml,res.data.html)}catch(err){}finally{}}fileInput.click()}})returnbtn})后端PHP处理逻辑// 文件接收接口publicfunctionparseOffice(Request$request){$file$request-file(file);if(!$file-isValid()){returnresponse()-json([error文件上传失败],400);}$extensionstrtolower($file-getClientOriginalExtension());$allowed[doc,docx,xls,xlsx,ppt,pptx,pdf];if(!in_array($extension,$allowed)){returnresponse()-json([error不支持的文件类型],400);}try{$tempPath$file-store(temp);$fullPathstorage_path(app/.$tempPath);// 根据文件类型调用不同的解析器switch($extension){casedoc:casedocx:$html$this-parseWord($fullPath);break;casexls:casexlsx:$html$this-parseExcel($fullPath);break;caseppt:casepptx:$html$this-parsePPT($fullPath);break;casepdf:$html$this-parsePDF($fullPath);break;default:thrownew\Exception(未知文件类型);}// 处理图片上传到OSS$html$this-processImages($html);returnresponse()-json([html$html]);}catch(\Exception$e){}finally{}}数学公式转换方案// Latex转MathMLprivatefunctionlatexToMathML($latex){// 使用第三方API或本地库转换$apiUrlhttps://latex2mathml.example.com/convert;$responseHttp::post($apiUrl,[latex$latex,typemathml]);if($response-successful()){return$response-json()[mathml];}// 备用方案使用本地PHP库return$this-fallbackLatexToMathML($latex);}图片处理方案// 处理HTML中的图片并上传到OSSprivatefunctionprocessImages($html){$domnew\DOMDocument();$dom-loadHTML(mb_convert_encoding($html,HTML-ENTITIES,UTF-8));$images$dom-getElementsByTagName(img);foreach($imagesas$img){$src$img-getAttribute(src);// 如果是base64图片if(strpos($src,data:image)0){$uploadedUrl$this-uploadBase64Image($src);$img-setAttribute(src,$uploadedUrl);}// 如果是本地临时图片elseif(strpos($src,/temp/)!false){$uploadedUrl$this-uploadLocalImage($src);$img-setAttribute(src,$uploadedUrl);}}// 保存处理后的HTMLreturn$dom-saveHTML();}部署与集成指南前端集成将UEditor插件打包成npm包npm install ueditor-office-import在main.js中导入并初始化插件后端准备安装PHP依赖composer require phpoffice/phpword phpoffice/phpspreadsheet配置阿里云OSS凭证部署API接口环境要求PHP 7.4开启exec函数权限用于调用外部转换工具至少100MB临时存储空间预算控制秘籍如何在680元内搞定这个需求我的秘诀是能用开源绝不自研PHPWord/PHPSpreadsheet处理Office文档UEditor作为基础编辑器数学公式转换使用开源API云服务薅羊毛阿里云OSS新用户免费额度使用按量付费的函数计算处理大文件代码复用把通用功能打包成插件下次还能用公式转换等复杂逻辑封装成微服务加入我们的QQ群遇到问题想交流经验来加群223813913群里福利多多 新人红包1-99元能不能抢到99看手气 推荐客户拿20%提成月入4万不是梦 定期分享外包项目有钱大家一起赚 技术交流无门槛从PHP到AI都能聊记住我们的口号代码写得好对象少不了需求接得多早日开豪车温馨提示本文代码仅供参考实际开发中请做好异常处理和安全性检查。公式转换部分可能需要购买商业API服务。预算680元请自行斟酌本程序员不承担因加班过度导致的发际线后移责任。复制插件目录引入插件文件UEditor 1.4.3.3示例注意不要重复引入jquery如果您的项目已经引入了jq则不用再引入jq-1.4在工具栏中增加插件按钮//工具栏上的所有的功能按钮和下拉框可以在new编辑器的实例时选择自己需要的重新定义toolbars:[[fullscreen,source,|,zycapture,|,wordpaster,importwordtoimg,netpaster,wordimport,excelimport,pptimport,pdfimport,|,importword,exportword,importpdf]]初始化控件varposwindow.location.href.lastIndexOf(/);varapi[window.location.href.substr(0,pos1),asp/upload.asp].join();WordPaster.getInstance({//上传接口http://www.ncmem.com/doc/view.aspx?idd88b60a2b0204af1ba62fa66288203edPostUrl:api,//为图片地址增加域名http://www.ncmem.com/doc/view.aspx?id704cd302ebd346b486adf39cf4553936ImageUrl:,//设置文件字段名称http://www.ncmem.com/doc/view.aspx?idc3ad06c2ae31454cb418ceb2b8da7c45FileFieldName:file,//提取图片地址http://www.ncmem.com/doc/view.aspx?id07e3f323d22d4571ad213441ab8530d1ImageMatch:});//加载控件注意如果接口字段名称不是file请配置FileFieldName。ueditor接口中使用的upfile字段点击查看详细教程配置ImageMatch匹配图片地址如果服务器返回的是JSON则需要通过正则匹配ImageMatch:,点击参考链接配置ImageUrl为图片地址增加域名如果服务器返回的图片地址是相对路径可通过此属性添加自定义域名。ImageUrl:,点击查看详细教程配置SESSION如果接口有权限验证登陆验证SESSION验证请配置COOKIE。或取消权限验证。参考http://www.ncmem.com/doc/view.aspx?id8602DDBF62374D189725BF17367125F3效果编辑器界面导入Word文档,支持doc,docx导入Excel文档,支持xls,xlsx粘贴Word一键粘贴Word内容自动上传Word中的图片保留文字样式。Word转图片一键导入Word文件并将Word文件转换成图片上传到服务器中。导入PDF一键导入PDF文件并将PDF转换成图片上传到服务器中。导入PPT一键导入PPT文件并将PPT转换成图片上传到服务器中。上传网络图片下载示例点击下载完整示例
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2430657.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!