不用网站做淘宝客外贸做双语网站好还是单语网站

张小明 2026/1/11 18:47:24
不用网站做淘宝客,外贸做双语网站好还是单语网站,dnf卖飞机的网站怎么做的,广州白云发布最新通告企业级富文本编辑器增强方案#xff08;TinyMCE5插件化集成#xff09; 作为北京某高新技术企业和软件企业的集团项目负责人#xff0c;我们近期在多个党政、军工、医疗客户项目中遇到了后台文章发布模块的文档处理需求#xff1a;需在TinyMCE5编辑器中集成“Word/PPT/Exc…企业级富文本编辑器增强方案TinyMCE5插件化集成作为北京某高新技术企业和软件企业的集团项目负责人我们近期在多个党政、军工、医疗客户项目中遇到了后台文章发布模块的文档处理需求需在TinyMCE5编辑器中集成“Word/PPT/Excel/PDF导入Word/公众号粘贴”功能支持图片自动上传多云对象存储、保留复杂样式含公式/形状组同时满足信创国产化环境兼容、全浏览器支持含IE8、多前端框架Vue3/React/JSP适配。结合集团“源代码买断自主可控”的战略需求我们完成了一套高兼容、低耦合、可扩展的解决方案现从技术实现、源码示例、合规资质三方面展开说明。一、需求拆解与技术方案设计客户核心诉求可归纳为“三支持、三兼容、三安全”三支持文档导入Word/PPT/Excel/PDF、内容粘贴Word/公众号、图片自动上传多云对象存储。三兼容信创环境国产OS/CPU/浏览器、多前端框架Vue3/React/JSP、多云存储阿里云/华为云/OBS等。三安全数据不出域图片直传OSS、源码自主可控、符合等保要求。技术路线插件化集成基于TinyMCE5的插件机制开发“文档管理”插件避免修改现有系统代码。多格式解析采用开源自研组合方案POI解析Office、PDFBox解析PDF、MathJax转换公式。图片上传优化抽象存储适配器层支持OSS直传私有云通过签名授权二进制流存储。信创兼容使用跨平台技术栈Java/Spring Boot前端Vue3依赖库均为信创认证版本如OpenJDK、国产PDF库。二、核心功能源码实现TinyMCE5插件JSP后端1. 前端TinyMCE5插件开发兼容Vue3/React/JSPTinyMCE5的插件机制支持通过tinymce.PluginManager.add注册新插件我们开发了docManager插件实现“粘贴/导入”功能。// tinymce/plugins/docManager/docManager.jsTinyMCE5插件核心(function(){use strict;varglobaltinymce.util.Tools.resolve(tinymce.PluginManager);functionPlugin(editor){varselfthis;varconfigeditor.options.get(docManager)||{};// 注册工具栏按钮editor.ui.registry.addButton(docManager,{icon:document,tooltip:文档管理粘贴/导入,onAction:function(){showDocManagerDialog(editor);// 显示功能面板}});// 显示文档管理面板含粘贴/导入按钮functionshowDocManagerDialog(editor){vardialogeditor.windowManager.open({title:文档管理,width:500,height:300,body:{type:panel,items:[{type:button,name:pasteWord,text:粘贴Word内容},{type:button,name:pasteWechat,text:粘贴微信公众号内容},{type:filepicker,name:importFile,label:选择文件,filetype:document}]},buttons:[{type:cancel,text:取消},{type:submit,text:确认}],onSubmit:function(api){vardataapi.getData();handleActions(editor,data);api.close();}});}// 处理粘贴/导入操作functionhandleActions(editor,data){if(data.pasteWord){handleWordPaste(editor);}elseif(data.pasteWechat){handleWechatPaste(editor);}elseif(data.importFile){handleFileImport(editor,data.importFile.file);}}// 处理Word粘贴保留图片/样式/公式functionhandleWordPaste(editor){editor.on(paste,function(e){varhtmle.clipboardData.getData(text/html);if(!html)return;// 提取图片并上传OSSvarimagesextractImages(html);uploadImages(images,editor).then(function(updatedHtml){e.preventDefault();editor.insertContent(updatedHtml);// 插入处理后的内容});});}// 处理微信公众号粘贴自动下载图片并上传functionhandleWechatPaste(editor){varwechatHtmleditor.getContent();vartempDivdocument.createElement(div);tempDiv.innerHTMLwechatHtml;varimagestempDiv.getElementsByTagName(img);uploadImages(Array.from(images),editor).then(function(){editor.setContent(tempDiv.innerHTML);});}// 处理文件导入Word/PPT/Excel/PDFfunctionhandleFileImport(editor,file){varformDatanewFormData();formData.append(file,file);formData.append(action,import);// 调用后端导入接口fetch(config.importApiUrl,{method:POST,body:formData}).then(resres.json()).then(data{if(data.code200){editor.setContent(data.html);// 插入解析后的内容}});}// 图片上传至OSS支持多云适配functionuploadImages(images,editor){varpromises[];Array.from(images).forEach(img{varsrcimg.src;if(src.startsWith(data:image)){// 处理Base64图片兼容IE8varblobdataURItoBlob(src);promises.push(uploadBlob(blob,editor));}elseif(isExternalUrl(src)){// 外链图片可选下载后上传promises.push(downloadAndUpload(src,editor));}});returnPromise.all(promises).then((){returneditor.getContent();// 返回更新后的HTML});}// 工具函数Base64转Blob兼容IE8functiondataURItoBlob(dataURI){varbyteStringatob(dataURI.split(,)[1]);varmimeStringdataURI.split(,)[0].split(:)[1].split(;)[0];varabnewArrayBuffer(byteString.length);varianewUint8Array(ab);for(vari0;ibyteString.length;i){ia[i]byteString.charCodeAt(i);}returnnewBlob([ab],{type:mimeString});}}global.add(docManager,Plugin);})();2. 后端JSP接口实现文件上传文档解析后端基于Spring Boot兼容JSP开发提供OSS签名生成、文档解析、图片上传接口支持多云存储适配。// DocManagerController.javaSpring Boot控制器RestControllerRequestMapping(/api/doc)publicclassDocManagerController{Value(${oss.config})privateOSSConfigossConfig;// 从application.yml注入OSS配置// 生成OSS上传签名支持私有云PostMapping(/oss-sign)publicMapgenerateOssSign(){OSSossClientnewOSSClientBuilder().build(ossConfig.getEndpoint(),ossConfig.getAccessKeyId(),ossConfig.getAccessKeySecret());// 生成签名策略示例100MB文件限制有效期1天DateexpirationnewDate(System.currentTimeMillis()86400*1000);PolicyConditionspolicyConditionsnewPolicyConditions();policyConditions.addContentLengthCondition(0,100*1024*1024);StringpostPolicyossClient.generatePostPolicy(expiration,policyConditions);byte[]binaryDatapostPolicy.getBytes(StandardCharsets.UTF_8);StringencodedPolicyBinaryUtils.toBase64String(binaryData);StringpostSignatureossClient.calculatePostSignature(postPolicy);MapresultnewHashMap();result.put(accessid,ossConfig.getAccessKeyId());result.put(policy,encodedPolicy);result.put(signature,postSignature);result.put(dir,cms-docs/LocalDate.now());// 按日期分类存储result.put(host,https://ossConfig.getBucket().ossConfig.getRegion().aliyuncs.com);returnresult;}// 处理文档导入Word/PPT/Excel/PDFPostMapping(/import)publicMapimportDocument(RequestParam(file)MultipartFilefile){try{// 保存临时文件StringtempPath/tmp/cms-upload/file.getOriginalFilename();file.transferTo(newFile(tempPath));// 解析文档调用Apache POI/PDFBoxStringhtmlContentparseDocument(tempPath,file.getOriginalFilename());// 清理临时文件FileUtils.deleteQuietly(newFile(tempPath));returnMap.of(code,200,html,htmlContent);}catch(Exceptione){returnMap.of(code,500,msg,文档解析失败e.getMessage());}}// 文档解析核心逻辑示例Word转HTML公式转换privateStringparseDocument(StringfilePath,StringfileName)throwsIOException{if(fileName.endsWith(.docx)){returnparseWordDocx(filePath);}elseif(fileName.endsWith(.pdf)){returnparsePdf(filePath);}else{thrownewIOException(不支持的文档格式fileName);}}// Word.docx解析Apache POI MathML转换privateStringparseWordDocx(StringfilePath)throwsIOException{XWPFDocumentdocnewXWPFDocument(newFileInputStream(filePath));XHTMLOptionsoptionsXHTMLOptions.create().setExtractor(newFileImageExtractor(newFile(/tmp/cms-images)));// 图片存储路径// 提取正文含图片StringWriterwriternewStringWriter();XHTMLConverter.getInstance().convert(doc,writer,options);// 提取Latex公式并转MathML调用MathJaxStringhtmlwriter.toString();htmlconvertLatexToMathML(html);// 自定义方法使用MathJax库returnhtml;}// Latex转MathML依赖MathJax库privateStringconvertLatexToMathML(Stringhtml){// 示例调用MathJax的TeX转MathML API生产环境建议本地部署returnhtml.replaceAll(\\\\[(.*?)\\\\],$1);}}// OSSConfig.javaOSS配置类ConfigurationpublicclassOSSConfig{Value(${oss.endpoint})privateStringendpoint;Value(${oss.accessKeyId})privateStringaccessKeyId;Value(${oss.accessKeySecret})privateStringaccessKeySecret;Value(${oss.bucket})privateStringbucket;Value(${oss.region})privateStringregion;// Getter方法...}三、信创兼容与多环境适配方案1. 信创国产化支持操作系统代码基于Java标准库开发兼容Windowsx86/ARM、macOS、Linuxx86/ARM、中标麒麟、银河麒麟、统信UOS。CPU架构使用OpenJDK支持x86/ARM/龙芯LoongArch避免依赖特定架构指令集。浏览器前端代码经Babel转译为ES5兼容IE8通过iframe模拟FormData上传、奇安信安全浏览器、龙芯浏览器。2. 多云存储适配抽象OSSAdapter接口支持阿里云OSS、华为云OBS、腾讯云COS等通过配置切换实现publicinterfaceOSSAdapter{StringgenerateUploadSign();StringuploadFile(Filefile);}// 阿里云OSS实现publicclassAliyunOSSAdapterimplementsOSSAdapter{...}// 华为云OBS实现publicclassHuaweiOBSAdapterimplementsOSSAdapter{...}3. 多前端框架集成提供doc-manager-vue3.js和doc-manager-react.js适配器封装TinyMCE5插件的初始化逻辑支持Vue3 CLI和React项目直接调用// Vue3集成示例import{createApp}fromvue;importTinyMCEfromtinymce/tinymce-vue;importdocManagerPluginfrom./doc-manager-vue3;constappcreateApp(App);app.component(TinyMCE,TinyMCE);app.use(docManagerPlugin);app.mount(#app);四、源代码买断与合作资质说明1. 源代码交付范围前端TinyMCE5插件完整源码含Vue3/React适配器、CSS样式文件。后端Spring Boot控制器、工具类、文档解析逻辑POI/PDFBox集成代码。部署脚本Docker镜像构建脚本、信创环境麒麟/UOS安装包、Nginx配置模板。2. 合规资质与案例我们提供以下资质证明可提供原件核验软件著作权《企业级富文本编辑器增强系统V3.0》登记号202XSRXXXXXX。信创认证通过“兆芯杯”信创解决方案大赛认证证书编号XXX-202X。合作案例某省级政务云平台合同金额280万2023年某军工集团文档管理系统合同金额350万2024年某三甲医院OA系统合同金额190万2024年转账凭证提供近3年500万以上项目银行回单脱敏处理。五、总结本方案通过TinyMCE5插件化扩展、多格式文档解析、多云存储适配实现了“开箱即用、自主可控”的文档管理功能完全满足党政、军工、医疗等行业客户的需求。源代码买断模式可降低集团年度采购成本预计年节省300万同时保障数据安全与自主可控。欢迎联系我们获取完整源码包含部署文档、信创认证报告并预约现场演示加微信XXX-XXXX-XXXX备注“文档管理插件”。复制插件安装jquerynpm install jquery在组件中引入// 引入tinymce-vueimportEditorfromtinymce/tinymce-vueimport{WordPaster}from../../static/WordPaster/js/wimport{zyOffice}from../../static/zyOffice/js/oimport{zyCapture}from../../static/zyCapture/z添加工具栏//添加导入excel工具栏按钮(function(){use strict;varglobaltinymce.util.Tools.resolve(tinymce.PluginManager);functionselectLocalImages(editor){WordPaster.getInstance().SetEditor(editor).importExcel()}varregister$1function(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;varglobaltinymce.util.Tools.resolve(tinymce.PluginManager);functionselectLocalImages(editor){WordPaster.getInstance().SetEditor(editor);WordPaster.getInstance().importWordToImg()}varregister$1function(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;varglobaltinymce.util.Tools.resolve(tinymce.PluginManager);functionselectLocalImages(editor){WordPaster.getInstance().SetEditor(editor);WordPaster.getInstance().UploadNetImg()}varregister$1function(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;varglobaltinymce.util.Tools.resolve(tinymce.PluginManager);functionselectLocalImages(editor){WordPaster.getInstance().SetEditor(editor);WordPaster.getInstance().ImportPDF()}varregister$1function(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;varglobaltinymce.util.Tools.resolve(tinymce.PluginManager);functionselectLocalImages(editor){WordPaster.getInstance().SetEditor(editor);WordPaster.getInstance().importPPT()}varregister$1function(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;varglobaltinymce.util.Tools.resolve(tinymce.PluginManager);functionselectLocalImages(editor){WordPaster.getInstance().SetEditor(editor).importWord()}varregister$1function(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;varglobaltinymce.util.Tools.resolve(tinymce.PluginManager);varicohttp://localhost:8080/static/WordPaster/plugin/word.pngfunctionselectLocalImages(editor){WordPaster.getInstance().SetEditor(editor).PasteManual()}varregister$1function(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 visualcharsdefault:autoresize code autolink autosave image imagetools paste preview table powertables},点击查看在线代码初始化组件// 初始化WordPaster.getInstance({// 上传接口http://www.ncmem.com/doc/view.aspx?idd88b60a2b0204af1ba62fa66288203edPostUrl:http://localhost:8891/upload.aspx,// 为图片地址增加域名http://www.ncmem.com/doc/view.aspx?id704cd302ebd346b486adf39cf4553936ImageUrl:http://localhost:8891{url},// 设置文件字段名称http://www.ncmem.com/doc/view.aspx?idc3ad06c2ae31454cb418ceb2b8da7c45FileFieldName:file,// 提取图片地址http://www.ncmem.com/doc/view.aspx?id07e3f323d22d4571ad213441ab8530d1ImageMatch:})在页面中引入组件功能演示编辑器在编辑器中增加功能按钮导入Word文档,支持doc,docx导入Excel文档,支持xls,xlsx粘贴Word一键粘贴Word内容自动上传Word中的图片保留文字样式。Word转图片一键导入Word文件并将Word文件转换成图片上传到服务器中。导入PDF一键导入PDF文件并将PDF转换成图片上传到服务器中。导入PPT一键导入PPT文件并将PPT转换成图片上传到服务器中。上传网络图片一键自动上传网络图片。下载示例点击下载完整示例
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

学生制作个人网站wordpress自适应主题

3分钟学会Aseprite视差脚本:像素艺术动画的终极利器 【免费下载链接】Aseprite-Scripts 项目地址: https://gitcode.com/gh_mirrors/as/Aseprite-Scripts 想要为你的像素艺术作品添加生动的视差滚动效果吗?Aseprite视差脚本正是你需要的强大工具…

张小明 2026/1/2 19:38:18 网站建设

四川建设厅官方网站证件查询php大型网站设计

第一章:Open-AutoGLM本地化部署概述Open-AutoGLM 是一款基于开源大语言模型的自动化代码生成与推理工具,支持在本地环境中完成模型推理、任务调度和接口服务化部署。通过本地化部署,用户可在保障数据隐私的前提下,充分利用本地算力…

张小明 2026/1/3 6:38:38 网站建设

明星粉丝网站怎么做济南企业做网站推广网站

tochd完全教程:游戏ISO转换CHD格式的快速解决方案 【免费下载链接】tochd Convert game ISO and archives to CD CHD for emulation on Linux. 项目地址: https://gitcode.com/gh_mirrors/to/tochd 还在为模拟器游戏占用大量存储空间而烦恼吗?toc…

张小明 2026/1/8 16:04:09 网站建设

浦口区建设中学网站网站做2微码

ncmdump:终极音乐解密工具,让加密音频重获自由 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM加密文件而烦恼吗?ncmdump这款专业的音乐解密工具能够完美解决NCM格式限制…

张小明 2026/1/9 10:22:31 网站建设

做图模板网站招商网址

GPT-SoVITS能否用于生成天气预报语音内容? 在城市清晨的广播里,一声温润熟悉的女声播报着“今天晴转多云,气温18到25摄氏度”,语气平稳、节奏自然,仿佛是某位资深气象主播。但你可能不知道,这声音并非出自真…

张小明 2026/1/10 1:32:41 网站建设

如何做网站发产品销售企业邮箱格式范本

第一章:Open-AutoGLM电商库存自动监控在现代电商平台中,实时掌握商品库存状态是保障用户体验和运营效率的关键。Open-AutoGLM 是一款基于大语言模型与自动化脚本集成的开源工具,专为动态监控电商库存设计,能够自动抓取目标平台商品…

张小明 2026/1/11 6:31:39 网站建设