济南建设网站的公司吗企业网站推广的方法有

张小明 2026/1/12 21:50:24
济南建设网站的公司吗,企业网站推广的方法有,php伪静态网站破解,nginx wordpress sock拯救秃头程序员系列#xff1a;Word一键粘贴功能开发记 #x1f680; 作为福建某知名#xff08;自封的#xff09;JAVA程序员#xff0c;我最近接了个CMS官网项目#xff0c;客户要求增加Word一键粘贴功能#xff0c;这简直是要把我本就不富裕的发量再薅掉几根… 需求…拯救秃头程序员系列Word一键粘贴功能开发记 作为福建某知名自封的JAVA程序员我最近接了个CMS官网项目客户要求增加Word一键粘贴功能这简直是要把我本就不富裕的发量再薅掉几根…需求背景客户“小王啊我们那些老领导用Word几十年了你让他们在网页编辑器里排版不如直接让他们去跳广场舞”我内心OS得又要加班了技术选型经过七七四十九天的调研其实就是百度了3小时发现市面上的方案都像方便面包装上的牛肉——仅供参考于是决定自己动手丰衣足食。前端方案 (Vue3 wangEditor)// 在wangEditor中扩展Word粘贴功能const{Boot}window.wangEditor Boot.registerModule(require(./word-paste-module))// word-paste-module.jsexportdefault{menus:[wordPaste],init(){consteditorthis.editor editor.config.uploadImgShowBase64true// 先base64处理后台上传// 添加Word粘贴按钮editor.menus.extend(wordPaste,{title:Word粘贴,icon:,click(){this.pasteFromWord()},pasteFromWord(){// 魔法开始...constpasteAreadocument.createElement(textarea)pasteArea.style.positionfixeddocument.body.appendChild(pasteArea)pasteArea.focus()// 监听粘贴事件pasteArea.addEventListener(paste,(e){constitems(e.clipboardData||e.originalEvent.clipboardData).itemslethtmlfor(leti0;iitems.length;i){if(items[i].typetext/html){htmle.clipboardData.getData(text/html)break}}if(html){// 调用清洁工函数清理Word垃圾样式constcleanHtmlthis.cleanWordHtml(html)editor.cmd.do(insertHTML,cleanHtml)}document.body.removeChild(pasteArea)},{once:true})// 模拟粘贴操作document.execCommand(paste)},cleanWordHtml(html){// 这里需要写一个完整的Word HTML净化器// 篇幅限制简单示例returnhtml.replace(/\!$$if !vml$$.?/gmi,)// 干掉VML.replace(/\/o:p/g,)// 干掉Office标签// ...还有10086个正则等着写}})}}后端方案 (Java Apache POI)// Word文档导入控制器RestControllerRequestMapping(/api/upload)publicclassDocumentImportController{AutowiredprivateAliyunOssServiceossService;PostMapping(/word)publicResultimportWord(RequestParam(file)MultipartFilefile){try{// 1. 保存临时文件FiletempFileFile.createTempFile(word_,.docx);file.transferTo(tempFile);// 2. 用Apache POI解析XWPFDocumentdocnewXWPFDocument(newFileInputStream(tempFile));StringhtmlContentconvertDocxToHtml(doc);// 3. 处理图片htmlContentprocessImages(htmlContent,doc.getAllPackagePictures());// 4. 返回HTML内容returnResult.success(htmlContent);}catch(Exceptione){returnResult.error(Word导入失败: e.getMessage());}}privateStringconvertDocxToHtml(XWPFDocumentdoc){// 这里需要实现完整的Docx转HTML逻辑// 简单示例StringBuilderhtmlnewStringBuilder();for(IBodyElementelem:doc.getBodyElements()){if(eleminstanceofXWPFParagraph){html.append().append(((XWPFParagraph)elem).getText()).append();}elseif(eleminstanceofXWPFTable){html.append(convertTableToHtml((XWPFTable)elem));}// 还要处理页眉页脚、列表、样式等...}returnhtml.toString();}privateStringprocessImages(Stringhtml,Listpictures){// 处理图片上传到OSSfor(XWPFPictureDatapic:pictures){StringpicUrlossService.upload(pic.getData(),images/UUID.randomUUID().png);htmlhtml.replace(cid:pic.getPackagePart().getPartName().getName(),picUrl);}returnhtml;}}遇到的那些坑 ️Word的魔法样式微软工程师一定是哈利波特粉丝各种mso-开头的黑魔法样式让我怀疑人生VML绘图2000年的技术居然还在用解析这些标签就像考古公式处理Latex转MathML这活应该找数学系的来做Excel表格客户给的表能绕地球三圈解析完我的内存也绕地球三圈了省钱大法 预算680元兄弟你这是要我用爱发电啊不过咱福建人最会精打细算云存储用阿里云OSS按量付费1GB几分钱前端插件基于开源魔改省下买商业授权的钱后端解析Apache POI免费就是费头发测试环境用自己淘汰的笔记本当服务器反正客户看不见加群福利 看到这里的都是真兄弟加群223813913享受新人红包1-99元能不能拿到99看手气外包项目共享大家一起秃技术交流如何用最少代码实现最多功能提成计划推荐客户拿20%比写代码赚钱快最终效果 ✨虽然过程像西天取经但最终实现了Word一键粘贴 ✔️保留基本样式 ✔️图片自动上传 ✔️表格基本支持 ✔️没超预算 ✔️barely…还剩几根头发 ✔️barely…各位看官如果需要完整代码…得加钱或者加群223813913一起探讨如何用680元预算做出68000元的效果福建人的智慧你值得拥有复制插件文件安装jquerynpm install jquery导入组件importEfromwangeditorconst{$,BtnMenu,DropListMenu,PanelMenu,DropList,Panel,Tooltip}Eimport{WordPaster}from../../static/WordPaster/js/wimport{zyCapture}from../../static/zyCapture/zimport{zyOffice}from../../static/zyOffice/js/o初始化组件//zyCapture ButtonclasszyCaptureBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){window.zyCapture.setEditor(this.editor).Capture();}tryChangeActive(){this.active()}}//zyOffice ButtonclassimportWordBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){window.zyOffice.SetEditor(this.editor).api.openDoc();}tryChangeActive(){this.active()}}//zyOffice ButtonclassexportWordBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){window.zyOffice.SetEditor(this.editor).api.exportWord();}tryChangeActive(){this.active()}}//zyOffice ButtonclassimportPdfBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){window.zyOffice.SetEditor(this.editor).api.openPdf();}tryChangeActive(){this.active()}}//WordPaster ButtonclassWordPasterBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){WordPaster.getInstance().SetEditor(this.editor).Paste();}tryChangeActive(){this.active()}}//wordImport ButtonclassWordImportBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){WordPaster.getInstance().SetEditor(this.editor).importWord();}tryChangeActive(){this.active()}}//excelImport ButtonclassExcelImportBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){WordPaster.getInstance().SetEditor(this.editor).importExcel();}tryChangeActive(){this.active()}}//ppt paster ButtonclassPPTImportBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){WordPaster.getInstance().SetEditor(this.editor).importPPT();}tryChangeActive(){this.active()}}//pdf paster ButtonclassPDFImportBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){WordPaster.getInstance().SetEditor(this.editor);WordPaster.getInstance().ImportPDF();}tryChangeActive(){this.active()}}//importWordToImg ButtonclassImportWordToImgBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){WordPaster.getInstance().SetEditor(this.editor).importWordToImg();}tryChangeActive(){this.active()}}//network paster ButtonclassNetImportBtnextendsBtnMenu{constructor(editor){const$elemE.$(div classw-e-menu>)super($elem,editor)}clickHandler(){WordPaster.getInstance().SetEditor(this.editor);WordPaster.getInstance().UploadNetImg();}tryChangeActive(){this.active()}}exportdefault{name:HelloWorld,data(){return{msg:Welcome to Your Vue.js App}},mounted(){vareditornewE(#editor);WordPaster.getInstance({//上传接口http://www.ncmem.com/doc/view.aspx?idd88b60a2b0204af1ba62fa66288203edPostUrl:http://localhost:8891/upload.aspx,License2:,//为图片地址增加域名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:});zyCapture.getInstance({config:{PostUrl:http://localhost:8891/upload.aspx,License2:,FileFieldName:file,Fields:{uname:test},ImageUrl:http://localhost:8891{url}}})// zyoffice// 使用前请在服务端部署zyoffice// http://www.ncmem.com/doc/view.aspx?id82170058de824b5c86e2e666e5be319czyOffice.getInstance({word:http://localhost:13710/zyoffice/word/convert,wordExport:http://localhost:13710/zyoffice/word/export,pdf:http://localhost:13710/zyoffice/pdf/upload})// 注册菜单E.registerMenu(zyCaptureBtn,zyCaptureBtn)E.registerMenu(WordPasterBtn,WordPasterBtn)E.registerMenu(ImportWordToImgBtn,ImportWordToImgBtn)E.registerMenu(NetImportBtn,NetImportBtn)E.registerMenu(WordImportBtn,WordImportBtn)E.registerMenu(ExcelImportBtn,ExcelImportBtn)E.registerMenu(PPTImportBtn,PPTImportBtn)E.registerMenu(PDFImportBtn,PDFImportBtn)E.registerMenu(importWordBtn,importWordBtn)E.registerMenu(exportWordBtn,exportWordBtn)E.registerMenu(importPdfBtn,importPdfBtn)//挂载粘贴事件editor.txt.eventHooks.pasteEvents.length0;editor.txt.eventHooks.pasteEvents.push(function(){WordPaster.getInstance().SetEditor(editor).Paste();e.preventDefault();});editor.create();varedt2newE(#editor2);//挂载粘贴事件edt2.txt.eventHooks.pasteEvents.length0;edt2.txt.eventHooks.pasteEvents.push(function(){WordPaster.getInstance().SetEditor(edt2).Paste();e.preventDefault();return;});edt2.create();}}h1,h2{font-weight:normal;}ul{list-style-type:none;padding:0;}li{display:inline-block;margin:010px;}a{color:#42b983;}测试前请配置图片上传接口并测试成功接口测试接口返回JSON格式参考为编辑器添加按钮components:{Editor,Toolbar},data(){return{editor:null,html:dd,toolbarConfig:{insertKeys:{index:0,keys:[zycapture,wordpaster,pptimport,pdfimport,netimg,importword,exportword,importpdf]}},editorConfig:{placeholder:},mode:default// or simple}},整合效果导入Word文档,支持doc,docx导入Excel文档,支持xls,xlsx粘贴Word一键粘贴Word内容自动上传Word中的图片保留文字样式。Word转图片一键导入Word文件并将Word文件转换成图片上传到服务器中。导入PDF一键导入PDF文件并将PDF转换成图片上传到服务器中。导入PPT一键导入PPT文件并将PPT转换成图片上传到服务器中。上传网络图片一键自动上传网络图片自动下载远程服务器图片自动上传远程服务器图片下载示例点击下载完整示例
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

北京网站建设新鸿微信公众号可以自动导入wordpress

一、运营核心逻辑:破解 3 大行业痛点的增长框架​盲盒抽赏小程序的运营本质,是通过 “信任构建 - 行为激励 - 生态闭环” 解决行业 “用户信任弱、留存率低、变现单一” 三大核心痛点,头部平台已验证该逻辑可实现 30 日留存率从 9% 提升至 35…

张小明 2025/12/24 8:05:40 网站建设

专业的常州网站建设用外国人的照片做网站

导语 将温室气体CO₂高效、高选择性地转化为高价值化学品,是实现“双碳”目标的核心技术之一。近日,中国石油大学吴文婷教授、宁汇副教授及天津大学陈亚楠教授团队在国际权威期刊《Chemical Engineering Journal》上发表创新成果。该研究采用一种毫秒级焦…

张小明 2025/12/31 18:52:44 网站建设

wordpress 删除表seo关键词排名优化的方法

我们这里使用两个线程分别充当生产者和消费者,对资源res进行共享,并通过res进行通信,其中用到了同步锁、wait、notify、sleep等方法。 解法1:见下面代码。 //资源,我们这里表示煤,分精煤和烟煤 class Resource {String name;int weight;// 表示煤是否已经拉来,true表示…

张小明 2025/12/24 8:05:42 网站建设

网站设计制作简单实例加强网站功能建设

深入探索BPF程序类型与安全机制 1. BPF程序类型概述 BPF(Berkeley Packet Filter)拥有多种程序类型,每种类型都有其独特的用途和功能,以下为您详细介绍: | 程序类型 | 类型定义 | 主要功能 | | — | — | — | | XDP(eXpress Data Path) | | 能在网络接口卡首次接收…

张小明 2026/1/4 18:39:32 网站建设

陕西交通建设集团网站汉滨网站建设

ComfyUI与电影分镜草图结合:导演前期视觉预演工具 在一部电影的诞生过程中,最艰难的往往不是拍摄现场的调度,也不是后期制作的打磨,而是如何让所有人“看见”导演脑海中的画面。尤其是在项目初期,当剧本还停留在文字阶…

张小明 2026/1/3 11:01:44 网站建设

网站建设肆金手指排名2国家工程建设信息公示网

目录 🎯 摘要 🏗️ 第一章 CANN设计哲学 从专用芯片到全栈生态的系统思考 1.1 计算范式的历史转折点 1.2 全栈协同的真正含义 🔧 第二章 CANN架构全景 五层设计的协同奥秘 2.1 整体架构:不只是分层,而是微分与积…

张小明 2026/1/10 8:31:57 网站建设