繁琐部署用Docsify搞定,加上cpolar轻松搭建可远程访问的技术文档

核心内容摘要

畜禽养殖环境智能监控系统解决方案:智能联动,自动启停养殖温控设备
Multisim混合信号电路仿真:模数结合系统的全面讲解

让多图对话AI不再“搞混“:首尔多所大学发现分隔符背后的秘密

企业网站后台管理系统文档处理功能集成实践报告作为湖南某软件公司前端工程师近期接到客户需求需在企业网站后台管理系统的文章发布模块中集成文档处理功能。

在预算2万元内经过两周的技术调研与开发实践成功实现了Word粘贴、文档导入及微信公众号内容粘贴功能。

现将整个过程记录如下

需求分析与技术选型

1 核心需求梳理Word粘贴功能支持从Word复制内容到编辑器自动上传图片至独立存储服务器文档导入功能支持Word/Excel/PPT/PDF导入保留格式与图片公众号内容粘贴自动下载公众号图片并上传至服务器技术约束前端Vue2 KindEditor 4后端PHP框架存储阿里云OSS需兼容华为云OBS等预算2万元内

2 技术选型评估在预算限制下对比了多个开源解决方案后最终选择以下技术栈前端编辑器扩展基于KindEditor 4开发自定义插件开源免费文档解析库前端mammoth.jsWord解析后端PHPWord/PHPExcel文档处理图片处理前端canvas裁剪FormData上传后端阿里云OSS SDK

开发实施过程

1 前端集成实现

2.

1 KindEditor插件开发// src/plugins/kindeditor-wordpaste/plugin.jsKindEditor.plugin(wordpaste,function(K){varselfthis,namewordpaste;self.clickToolbar(name,function(){// 创建隐藏的textarea用于粘贴vartextareaK().appendTo(body);textarea.focus();// 监听粘贴事件textarea.on(paste,function(e){setTimeout(function(){varhtmltextarea.val();if(!html)return;// 调用Word解析服务processWordContent(html).then(function(result){self.insertHtml(result.html);textarea.remove();});},

;});});// 微信公众号内容处理functionprocessWechatContent(html){constparsernewDOMParser();constdocparser.parseFromString(html,text/html);constimagesArray.from(doc.querySelectorAll(img));returnPromise.all(images.map(img{if(img.src.startsWith(http)){returnfetchImageAndUpload(img.src).then(url{img.srcurl;returnimg.outerHTML;});}returnPromise.resolve(img.outerHTML);})).then(()doc.body.innerHTML);}// 调用后端API处理Word内容functionprocessWordContent(html){returnfetch(/api/document/parse-word,{method:POST,body:JSON.stringify({html}),headers:{Content-Type:application/json}}).then(resres.json());}});

2.

2 编辑器初始化配置// src/components/Editor.vueexportdefault{mounted(){this.initEditor();},methods:{initEditor(){KindEditor.ready(K{K.create(#editor_id,{items:[wordpaste,// 自定义Word粘贴按钮importdoc,// 文档导入按钮bold,italic,underline],afterCreate:function(){// 注册公众号粘贴快捷键this.cmd.dom.addEventListener(keydown,e{if(e.ctrlKeye.keyve.altKey){e.preventDefault();this.plugin.wordpaste.exec();}});}});});}}}

2 后端PHP实现

2.

1 Word解析服务// app/controllers/DocumentController.phpclassDocumentControllerextendsCI_Controller{publicfunctionparse_word(){$html$this-input-post(html);// 使用PHPWord解析HTML简化版require_onceAPPPATH.libraries/PHPWord/autoload.php;$phpWordnew\PhpOffice\PhpWord\PhpWord();// 临时处理提取图片并保存$domnewDOMDocument();$dom-loadHTML($html);$images$dom-getElementsByTagName(img);foreach($imagesas$img){if(strpos($img-getAttribute(src),base

!false){$imageDatabase64_decode(preg_replace(#^data:image/\w;base64,#i,,$img-src));$filenameuploads/temp/.uniqid()..png;file_put_contents($filename,$imageData);// 上传到OSS$ossUrl$this-uploadToOSS($filename);$img-setAttribute(src,$ossUrl);}}// 清理Office标签$cleanHtmlpreg_replace(/]/,,$dom-saveHTML());echojson_encode([html$cleanHtml]);}protectedfunctionuploadToOSS($filePath){require_onceAPPPATH.libraries/aliyun-oss/autoload.php;$ossClientnew\OSS\OssClient($this-config-item(oss_key),$this-config-item(oss_secret),$this-config-item(oss_endpoint));$objecteditor_images/.basename($filePath);$ossClient-uploadFile($this-config-item(oss_bucket),$object,$filePath);return$this-config-item(oss_domain)./.$object;}}

2.

2 文档导入处理// app/libraries/DocumentImporter.phpclassDocumentImporter{publicfunctionimport($file,$type){switch($type){casedocx:return$this-importDocx($file);casepdf:return$this-extractPdfText($file);// 其他格式处理...}}protectedfunctionimportDocx($file){require_onceAPPPATH.libraries/PHPWord/autoload.php;$phpWord\PhpOffice\PhpWord\IOFactory::load($file);// 提取文本内容$sections$phpWord-getSections();$html;foreach($sectionsas$section){$elements$section-getElementss();foreach($elementsas$element){if(method_exists($element,getElementss)){// 处理段落等元素$html.$this-renderElement($element);}}}return$html;}protectedfunctionrenderElement($element){// 简化版渲染逻辑if($elementinstanceof\PhpOffice\PhpWord\Element\Text){return.$element-getText().;}return;}}

3 信创环境适配

2.

1 浏览器兼容处理// src/utils/compatibility.jsexportfunctionapplyEditorFixes(){constuserAgentnavigator.userAgent;// 麒麟系统适配if(/Kirin/.test(userAgent)){document.documentElement.style.setProperty(--editor-font,SimSun);// 禁用CSS动画document.documentElement.style.setProperty(--transition-duration,0s);}// 国产浏览器兼容if(/360SE|QIHU/.test(userAgent)){// 360浏览器特殊处理window.requestAnimationFramefunction(callback){returnsetTimeout(callback,

;};}}

项目实施成果

1 功能实现情况Word粘贴功能基本格式保留字体、颜色、粗体等图片自动上传至OSS处理时间简单文档1s复杂文档3s文档导入功能Word导入支持.docx格式保留基本格式PDF导入仅支持文本提取图片处理支持文档内嵌图片提取公众号粘贴功能图片自动下载上传保留原文链接需后端支持

2 成本控制项目费用元说明阿里云OSS3,0001年存储费用50GB容量开发人力成本12,0002人×1周第三方库授权0全部使用开源解决方案测试环境500临时服务器租赁总计15,500远低于2万元预算

经验

总结与建议技术选型关键点在预算有限时优先选择开源解决方案使用PHPWord等成熟库处理文档格式前端采用渐进式增强策略信创环境适配经验字体回退机制font-family: Microsoft YaHei, SimSun, sans-serif;禁用CSS3动画效果提升兼容性使用Promise polyfill解决国产浏览器兼容问题后续优化方向完善表格样式保留增加文档预览功能开发移动端适配版本实现多云存储抽象层本次项目成功在预算内完成了所有需求功能开发系统已通过客户验收并在30政府项目中稳定运行。

实践证明通过合理的技术选型与架构设计可以在有限预算内实现高效的功能交付。

上传工具栏插件文件夹上传插件文件夹控件初始化在head中引入组件文件注意不要重复引入jquery如果您的页面已经引入了jquery这里就不要再引入jquery

4了。

WordPaster For KindEditor-

x # 初始化组件 WordPaster.getInstance({ui:{render:wdpst}//目标容器一般为div});设置快捷键将插件添加到工具栏并挂载KindEditor的CtrlV快捷键事件注意

如果接口字段名称不是file请配置FileFieldName。

点击查看教程

如果接口返回JSON请配置ImageMatch点击查看教程

如果接口返回的图片地址没有域名请配置ImageUrl点击查看教程整合效果效果编辑器界面导入Word文档,支持doc,docx导入Excel文档,支持xls,xlsx粘贴Word一键粘贴Word内容自动上传Word中的图片保留文字样式。

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

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

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

上传网络图片示例下载下载完整示例

爽⋯好大⋯快⋯深点黄瓜视频动漫-爽⋯好大⋯快⋯深点黄瓜视频动漫应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123