SolidWorks_钣金设计18_钣金工程图规范
2026/7/18 1:06:05
作为江苏某国企项目负责人,我们目前面临企业网站后台管理系统功能升级需求,主要涉及内容编辑功能的扩展。基于对党政事业单位项目的服务经验,我们需要一套符合信创环境要求的文档处理解决方案。
核心需求:
经过对市场上主流文档处理方案的调研评估:
CKEditor插件方案
纯前端方案(TinyMCE等)
专业文档处理中间件
自主开发方案
WordPaster插件方案
针对政府项目要求,重点考察了以下产品的信创兼容性:
| 产品名称 | 国产OS支持 | 国产CPU支持 | 国产浏览器支持 | 备注 |
|---|---|---|---|---|
| 产品A | 全系 | 龙芯/鲲鹏 | 部分 | 需定制 |
| 产品B | 主流 | x86/ARM | 否 | 不适合 |
| 超时代Office方案 | 全系 | 全架构 | 全支持 | 最优选 |
[前端(Vue2/Vue3/React)] └─ [CKEditor插件] └─ [文档处理中间件API] └─ [后端服务(JSP)] ├─ [文件解析引擎] ├─ [图片上传模块] └─ [格式转换服务]// CKEditor插件示例代码CKEDITOR.plugins.add('wordimport',{init:function(editor){editor.addCommand('wordImport',{exec:function(editor){// 创建文件上传对话框createFileUploadDialog({accept:'.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf',onSuccess:function(file,response){// 处理服务器返回的HTML内容editor.insertHtml(response.htmlContent);}});}});// 添加工具栏按钮editor.ui.addButton('WordImport',{label:'导入Office文档',command:'wordImport',icon:this.path+'icons/wordimport.png'});// 处理Word粘贴editor.on('paste',function(evt){handleWordPaste(evt,editor);});}});// 微信公众号内容处理functionhandleWechatPaste(editor,html){// 提取图片并上传constimages=extractImages(html);images.forEach(img=>{uploadImage(img).then(newUrl=>{html=html.replace(img.src,newUrl);editor.setData(html);});});}// 文件导入Servlet示例publicclassDocumentImportServletextendsHttpServlet{protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse){try{PartfilePart=request.getPart("file");StringfileName=filePart.getSubmittedFileName();InputStreamfileContent=filePart.getInputStream();// 文档处理引擎DocumentProcessorprocessor=newDocumentProcessor();ProcessingResultresult=processor.process(fileContent,fileName);// 处理图片Listimages=result.getImages();for(ImageInfoimage:images){StringossUrl=OSSUploader.upload(image.getData());result.replaceImage(image.getId(),ossUrl);}// 返回HTML内容response.setContentType("application/json");response.getWriter().write("{\"htmlContent\": \""+StringEscapeUtils.escapeJson(result.getHtml())+"\"}");}catch(Exceptione){// 错误处理}}}操作系统适配
CPU架构适配
# 构建多架构Docker镜像docker buildx build --platform linux/amd64,linux/arm64,linux/mips64el -t doc-processor.浏览器兼容处理
// IE8兼容代码示例functionisIE8(){returnnavigator.userAgent.indexOf('MSIE 8.0')>-1;}if(isIE8()){// 启用兼容模式loadPolyfill('es5-shim').then(initLegacyEditor);}else{initModernEditor();}| 方案 | 初期成本 | 长期成本 | 可控性 | 扩展性 |
|---|---|---|---|---|
| 商业产品授权 | 50万/年 | 持续支出 | 低 | 依赖厂商 |
| 源代码买断 | 98万 | 维护成本 | 高 | 自主可控 |
| 自主开发 | 100万+ | 高 | 完全 | 完全 |
推荐选择源代码买断方案,符合:
分阶段实施:
培训计划:
要求供应商提供:
技术验证阶段(1-2周)
集成开发阶段(3-4周)
// 示例:图片上传服务适配器publicinterfaceStorageService{Stringupload(byte[]data,StringfileName);}@ServicepublicclassAliyunOssServiceimplementsStorageService{// 实现阿里云OSS上传}@ServicepublicclassHuaweiObsServiceimplementsStorageService{// 实现华为云OBS上传}测试验收阶段(2周)
本方案兼顾了功能需求与政策要求,采用中间件+自主适配的模式,可在预算内实现项目目标,同时满足集团长期技术储备需求。
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内容,自动上传Word中的图片,保留文字样式。
一键导入Word文件,并将Word文件转换成图片上传到服务器中。
一键导入PDF文件,并将PDF转换成图片上传到服务器中。
一键导入PPT文件,并将PPT转换成图片上传到服务器中。
一键自动上传网络图片。
点击下载完整示例