news 2026/4/21 8:44:50

xhEditor导入Latex公式生成MathML

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
xhEditor导入Latex公式生成MathML

山西前端打工人的CMS改造历险记

大家好,我是山西某不知名前端码农,最近接了个企业官网CMS的外包单子。客户爸爸提出了个"简单"需求——要在文章编辑器里加个Word一键粘贴功能。听起来简单?呵呵,让我这个月薪3000的码农给你讲讲这680块预算的奇幻漂流…

客户需求の迷之操作

客户要求:

  1. 支持Word/Excel/PPT/PDF导入(您这是要搞Office全家桶啊)
  2. 保留所有花里胡哨的格式(包括那些我都没见过的公式)
  3. 支持从微信公众号复制(微信:你礼貌吗?)
  4. 图片自动上传服务器(我服务器都快炸了)
  5. 预算680块(老板您这是要我的命啊)

最骚的是——客户说这是为了方便高龄用户!合着咱们高龄用户都是Word高手呗?

技术选型の痛苦面具

前端部分

我用的Vue3 + xhEditor,这xhEditor年纪比我爷爷都大。找了一圈发现https://www.tiny.cloud/的付费版能搞定,但680块怕是连人家一个按钮都买不起。

最后我决定用https://www.wangeditor.com/ + 自制插件,下面是我的骚操作:

// wangEditor Word粘贴插件constWordPastePlugin=(editor)=>{editor.config.customPaste=(e)=>{consthtml=e.clipboardData.getData('text/html')if(html.includes('mso-style')){e.preventDefault()// 这里调用后端清洗Word HTMLaxios.post('/api/clean-word-html',{html}).then(res=>{editor.insertHtml(res.data.html)// 异步上传图片uploadImages(res.data.images)})}}document.addEventListener('paste',editor.config.customPaste)}// 图片上传函数asyncfunctionuploadImages(images){for(letimgofimages){constformData=newFormData()formData.append('file',img.blob)awaitaxios.post('/api/upload',formData)}}

后端部分

客户说后端随便,我果断选了PHP(因为便宜啊!)。下面是处理Word HTML的骚代码:

// 清洗Word HTMLfunctioncleanWordHtml($html){// 1. 提取所有图片preg_match_all('/]+>/i',$html,$images);// 2. 替换MS Office特有样式$html=preg_replace('/class="Mso[^"]+"/','',$html);$html=str_replace('mso-','',$html);// 3. 处理公式(这里是个大坑)$html=handleEquations($html);return['html'=>$html,'images'=>extractImages($images[0])];}// 处理公式的玄学代码functionhandleEquations($html){// 1. 匹配Latex公式$html=preg_replace_callback('/\$([^$]+)\$/',function($matches){returnlatexToMathML($matches[1]);},$html);// 2. 处理MathType公式(这里我选择放弃治疗)$html=str_replace('
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 3:22:46

儿童绘本故事动画化:HeyGem助力亲子教育内容创作

儿童绘本故事动画化:HeyGem助力亲子教育内容创作 在幼儿园的睡前故事时间,老师用温柔的声音讲述《小熊找朋友》,孩子们睁大眼睛听得入神。可如果这位“老师”是一个会动嘴、有表情的数字人,而同一个故事还能由“穿围裙的女老师”“…

作者头像 李华
网站建设 2026/4/19 12:03:58

小说有声剧升级:HeyGem为角色赋予面部表情与口型

小说有声剧的视觉革命:HeyGem如何让角色“开口说话” 在音频内容泛滥的今天,用户早已不再满足于“只听声音”。无论是网络小说演播、儿童故事讲解,还是知识类短视频,听众越来越期待看到与声音同步的“人物表现”——一个会动嘴唇、…

作者头像 李华
网站建设 2026/4/17 0:43:51

LUT调色包下载后如何应用?HeyGem输出视频后期美化方案

LUT调色包下载后如何应用?HeyGem输出视频后期美化方案 在AI生成内容(AIGC)席卷短视频、在线教育和虚拟主播的今天,数字人技术已不再是实验室里的概念——它正被大量用于企业宣传、课程录制甚至新闻播报。像HeyGem这样的语音驱动数…

作者头像 李华
网站建设 2026/4/21 3:49:58

俄语新闻听力训练:主播数字人播报今日要闻

俄语新闻听力训练:主播数字人播报今日要闻 在语言教学领域,尤其是外语听力训练中,内容的时效性与多样性长期面临挑战。教师们常常陷入两难:想用真实新闻材料提升学生语感,却受限于版权、发音标准和制作成本&#xff1b…

作者头像 李华
网站建设 2026/4/18 13:48:00

驾考宝典内容更新快:HeyGem快速响应政策变化生成新规解读

HeyGem 数字人视频生成系统:如何让驾考新规解读“当日出片” 在知识更新节奏越来越快的今天,用户对信息的“新鲜度”要求前所未有地高。以驾考行业为例,每当交通法规或考试政策调整,成千上万的学员第一时间就会搜索“新规有哪些变…

作者头像 李华
网站建设 2026/4/17 19:38:50

揭秘C#跨平台日志难题:如何在.NET 6+中完美配置Serilog与NLog

第一章:C#跨平台日志配置的挑战与演进在现代软件开发中,C# 应用越来越多地部署于多操作系统环境中,如 Windows、Linux 和 macOS。这种跨平台趋势对日志记录机制提出了更高要求,传统的日志方案难以在不同系统中保持一致行为。平台差…

作者头像 李华