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

医院HIS系统富文本编辑器是否兼容WPS文档的图文转存?

杭州XX软件公司项目开发记录:后台管理系统富文本增强功能开发

(Word粘贴/导入、微信公众号内容粘贴、图片二进制存储)

一、需求分析与技术选型
  1. 核心需求

    • 粘贴功能:支持从Word/微信公众号复制内容到UEditor,保留样式(字体、颜色、表格等),图片自动上传至二进制存储服务器(后期迁移至对象存储)。
    • 导入功能:支持Word/Excel/PPT/PDF导入,保留图片和样式,生成可编辑的HTML内容。
    • 技术约束:前端Vue2+UEditor,后端PHP,MySQL,内网私有部署,拒绝Base64图片。
  2. 技术挑战

    • UEditor默认对Word粘贴支持有限,需扩展pasteUtils.jsserver.js
    • 图片需通过后端接口上传至二进制存储,返回URL供编辑器渲染。
    • 文档导入需解析.docx/.pdf等格式,推荐使用Apache POI(Java)或PHP库(如PhpOffice),但需兼容PHP环境。
  3. 选型决策

    • 粘贴功能:基于UEditor的pasteFilter扩展,结合自定义PHP接口处理图片上传。
    • 导入功能:采用PhpOffice套件(PHPOffice/PhpWord、PhpSpreadsheet、PhpPresentation)解析文档,TCPDFImagick处理PDF图片提取。
    • 图片存储:开发PHP二进制上传接口,支持分块上传和断点续传(兼容大文件)。
二、开发过程记录

1. 环境准备

  • 部署测试环境:CentOS 7 + Nginx + PHP 7.4 + MySQL 5.7。
  • 安装依赖:composer require phpoffice/phpword phpoffice/phpspreadsheet
  • 配置UEditor:启用wordImage插件,修改ueditor.config.js中的imageUrl指向后端上传接口。

2. 粘贴功能开发

  • 前端修改
    // 覆盖UEditor默认粘贴行为,拦截Word内容UE.registerUI('wordpaste',function(editor){editor.addListener('beforePaste',function(type,html){if(isWordContent(html)){// 提取图片并上传constimages=extractWordImages(html);returnuploadImagesAsync(images).then(urls=>{returnreplaceImagesWithUrls(html,urls);});}});});
  • 后端接口(PHP):
    // upload.php$file=$_FILES['upfile'];$binaryData=file_get_contents($file['tmp_name']);$storagePath='/uploads/'.uniqid().'.png';file_put_contents($_SERVER['DOCUMENT_ROOT'].$storagePath,$binaryData);echojson_encode(['url'=>$storagePath]);

3. 导入功能开发

  • Word/Excel/PPT解析
    // import_docx.phpusePhpOffice\PhpWord\IOFactory;$phpWord=IOFactory::load('input.docx');$html='';foreach($phpWord->getSections()as$section){foreach($section->getElementList()as$element){if(method_exists($element,'toHtml')){$html.=$element->toHtml();}}}// 提取图片并上传(同粘贴逻辑)
  • PDF处理
    使用Imagick将PDF转为图片,再插入HTML:
    $imagick=newImagick('input.pdf[0]');$imagick->setImageFormat('png');file_put_contents('/tmp/pdf_image.png',$imagick);

4. 图片存储优化

  • 二进制存储:直接写入文件系统,数据库记录路径和MD5校验值。
  • 对象存储兼容:预留接口,未来可替换为阿里云OSS SDK上传:
    functionuploadToOss($binaryData){$ossClient=newOssClient($key,$secret,$endpoint);return$ossClient->putObject('bucket','path/file.png',$binaryData);}
三、问题与解决方案
  1. UEditor粘贴样式丢失

    • 原因:默认过滤了``等标签。
    • 解决:修改ueditor.parse.js,在filterRules中保留font-familycolor等属性。
  2. 大文件上传超时

    • 解决:分块上传+临时文件合并,Nginx配置client_max_body_size 100M
  3. PDF表格解析错乱

    • 解决:改用pdftohtml工具转换后手动清洗HTML结构。
四、测试与部署
  1. 测试用例

    • 粘贴含复杂样式的Word文档,验证图片上传和样式保留。
    • 导入100MB的PPT,检查内存泄漏和进度反馈。
  2. 私有部署文档

    • 提供docker-compose.yml快速部署二进制存储服务。
    • 编写PHP配置脚本,自动初始化MySQL表结构(存储图片元数据)。
五、后续规划
  1. 对象存储迁移:开发迁移工具,将现有二进制文件批量同步至阿里云OSS。
  2. 性能优化:对导入的HTML进行压缩,减少前端渲染压力。
  3. 安全性:增加图片上传白名单,防止恶意文件注入。

开发人员:张三
日期:2023年XX月XX日
备注:代码已提交至GitLab,分支feature/ueditor-enhance,待PM评审后合并。

复制插件目录

引入插件文件

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"]]

初始化控件

varpos=window.location.href.lastIndexOf("/");varapi=[window.location.href.substr(0,pos+1),"asp/upload.asp"].join("");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:''});//加载控件

注意

如果接口字段名称不是file,请配置FileFieldName。ueditor接口中使用的upfile字段

点击查看详细教程

配置ImageMatch

匹配图片地址,如果服务器返回的是JSON则需要通过正则匹配

ImageMatch:'',

点击参考链接

配置ImageUrl

为图片地址增加域名,如果服务器返回的图片地址是相对路径,可通过此属性添加自定义域名。

ImageUrl:"",

点击查看详细教程

配置SESSION

如果接口有权限验证(登陆验证,SESSION验证),请配置COOKIE。或取消权限验证。
参考:http://www.ncmem.com/doc/view.aspx?id=8602DDBF62374D189725BF17367125F3

效果

编辑器界面

导入Word文档,支持doc,docx

导入Excel文档,支持xls,xlsx

粘贴Word

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

Word转图片

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

导入PDF

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

导入PPT

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

上传网络图片

下载示例

点击下载完整示例

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

相关文章:

  • 说说苏州及周边好用的净化板漆面修复品牌,哪家性价比高 - 工业品网
  • 百泰派克生物科技:蛋白质谱测序客户案例
  • 自适应夹爪未来发展趋势是什么?2026年自适应夹爪厂商推荐 - 品牌2025
  • 众信旅游联系方式:如何有效联系与注意事项 - 品牌推荐
  • 电动夹爪有哪些常见类型?2026年电动夹爪品牌推荐 - 品牌2025
  • 离心机费用多少,南京莫尼亚价格合理服务优 - myqiye
  • 深度测评 8个AI论文工具:本科生毕业论文写作全攻略
  • 春节假期淘宝资料发货安排通知
  • 2026年 安保服务公司推荐排行榜:专业执勤、智能巡逻与高效门卫管理,全方位安保解决方案精选 - 品牌企业推荐师(官方)
  • 众信旅游联系方式:联系官方服务渠道的指引 - 品牌推荐
  • vSphere 4.1 三大实用实战:vCenter 告警自动化、SIOC 无 License 启用及 Dropbox 存储运行 VM
  • 如何选择靠谱的成都找人公司?2026年成都找人公司评测与推荐,直击信息模糊痛点 - 品牌推荐
  • 救命神器9个降AI率工具,千笔AI帮你彻底降AIGC
  • 众信旅游联系方式:获取官方联系渠道的实用指南 - 品牌推荐
  • 你的MySQL服务为什么总启动失败?很可能是这个配置项在“捣乱“
  • 2026年长治系统门窗定制品牌推荐,双慧听岚门窗 - myqiye
  • 2026年施工升降机租赁厂家实力推荐榜:塔吊升降机/物料升降机/二手施工升降机,专业工地施工设备精选与选购指南 - 品牌企业推荐师(官方)
  • 安装软件
  • 导师推荐10个降AI率网站 千笔·专业降AI率智能体高效解决AIGC检测难题
  • 2026年机器人研学公司推荐:K12全学段适配评测,针对实践能力与升学出口痛点指南 - 品牌推荐
  • vue-office:5.4k 预览组件库,支持 docx/xlsx/pdf/pptx
  • 如何为孩子选择机器人研学?2026年机器人研学公司全面评测与推荐 - 品牌推荐
  • 春节特供:项目管理人的“反内卷”自救指南
  • 2026年政务服务进化论:智能机器人如何重塑大厅咨询与经办体验 - 智造出海
  • 《国产系统运维笔记》第6期:银河麒麟+K8s太难管?30分钟部署Kuboard,国产化运维终于轻松了
  • 2026年电动夹爪供应商推荐——如何选择合适的电动夹爪?需关注哪些参数? - 品牌2025
  • 60.单词搜
  • 深度解析PTC工业软件许可证成本构成与降费策略
  • 线上支付分类指南:API H5 / 伪 H5 / 网关 B2B/B2C
  • 终端渲染天花板:《复杂简单》——小函数创建的『代码诗学』