网站开发中用到的英文单词,网站建设需要照片吗,做古风文字头像的网站,网站做代码图像显示不出来的震惊#xff01;.NET程序员接了个CMS项目#xff0c;结果客户要求比登天还难#xff01;
兄弟们好#xff01;我是一名在西安搬砖的.NET程序员#xff0c;最近接了个企业官网CMS的外包项目#xff0c;本来以为就是改改新闻发布模块的小活儿#xff0c;结果客户给我来了…震惊.NET程序员接了个CMS项目结果客户要求比登天还难兄弟们好我是一名在西安搬砖的.NET程序员最近接了个企业官网CMS的外包项目本来以为就是改改新闻发布模块的小活儿结果客户给我来了个大礼包需求客户需求从Word一键粘贴到编辑器客户说“小编们年纪都大了能不能让他们直接从Word复制粘贴还要保留所有格式什么字体颜色啊、数学公式啊、图片表格啊一个都不能少”我当时就想“大哥您这是要我把Word直接搬进CMS里啊”技术支持评估愁死我了我评估了一堆开源编辑器插件CKEditor官方插件不行公式支持太弱鸡各种开源富文本编辑器emz/wmz格式公式根本撑不住自己开发680块预算怕是不够我买咖啡提神的解决方案定制CKEditor插件既然现成的都不行那就只能自己动手丰衣足食了。下面是我的一些思路前端部分Vue3 CKEditor// 在CKEditor配置中添加自定义插件importClassicEditorfromckeditor/ckeditor5-build-classic;importMyCustomPluginfrom./my-custom-plugin;ClassicEditor.create(document.querySelector(#editor),{plugins:[MyCustomPlugin],toolbar:[wordPaste,importDocument,...],}).then(editor{console.log(Editor was initialized,editor);}).catch(error{console.error(error);});// 自定义插件代码exportdefaultclassWordPastePlugin{init(){// 处理Word粘贴逻辑this.editor.plugins.get(Clipboard).on(inputTransformation,(evt,data){// 这里处理Word内容转换consthtmlthis._convertWordHtml(data.dataTransfer.getData(text/html));data.contentthis.editor.data.htmlToModel(html);});}_convertWordHtml(rawHtml){// 这里实现Word HTML到编辑器HTML的转换// 包括处理公式、图片等特殊内容returnprocessedHtml;}}后端部分C# WebForm// 处理文件上传的API[WebMethod]publicstaticstringUploadDocument(HttpPostedFilefile){try{// 1. 验证文件类型varextensionPath.GetExtension(file.FileName).ToLower();if(!new[]{.docx,.xlsx,.pptx,.pdf}.Contains(extension))thrownewException(不支持的文件类型);// 2. 临时保存文件vartempPathPath.Combine(Server.MapPath(~/Temp),Guid.NewGuid()extension);file.SaveAs(tempPath);// 3. 根据文件类型调用不同解析器stringhtmlContent;switch(extension){case.docx:htmlContentWordParser.ConvertToHtml(tempPath);break;case.xlsx:htmlContentExcelParser.ConvertToHtml(tempPath);break;// 其他类型处理...}// 4. 上传图片到OSShtmlContentImageHandler.UploadImagesToOSS(htmlContent);// 5. 转换公式htmlContentFormulaConverter.ConvertLatexToMathML(htmlContent);returnhtmlContent;}catch(Exceptionex){// 错误处理return$转换失败:{ex.Message};}}技术难点解析Word公式处理使用mammoth.js解析Word文档对MathType公式进行特殊处理使用MathJax或KaTeX将LaTeX转换为MathML图片处理// 图片上传到阿里云OSSpublicstaticstringUploadToOSS(Streamstream,stringfileName){varclientnewOssClient(endpoint,accessKeyId,accessKeySecret);varresultclient.PutObject(bucketName,uploads/fileName,stream);return$https://{bucketName}.{endpoint}/uploads/{fileName};}样式保留使用CSS in JS技术保留原始样式对表格进行特殊处理保证响应式布局成本控制680块真的够吗兄弟们680块预算真的紧巴巴啊我是这么规划的前期准备3罐红牛15元开发时间3个通宵电费30元插件授权买了个基础版500元测试让女朋友帮忙测试代价是请她吃火锅135元总计680元整完美女朋友的火锅钱只能先欠着了…加群福利来啊快活啊兄弟们独乐乐不如众乐乐我建了个QQ群223813913加群福利大大的新人红包1-99元能不能抢到99看手速最新产品体验尝鲜版bug多多代理提成最高50%2万订单提1万想想都刺激技术交流装X、吹水、划水三不误群内现状已经有几位大佬升级到黄金会员了月入10万不是梦而我…还在为680块钱的项目熬夜…最后吐槽客户要的功能比登天还难预算却比纸还薄。但谁让我是程序员呢不就是把Word搬进网页吗干就完了奥利给PS女朋友说如果这周末再不陪她就要把我的机械键盘扔了…救救孩子吧复制插件说明此教程以CKEditor4.x为例使用其他编辑器的查看对应教程。将下列文件夹复制到项目中/WordPaster/ckeditor/plugins/imagepaster/ckeditor/plugins/netpaster/ckeditor/plugins/pptpaster/ckeditor/plugins/pdfimport上传插件上传插件文件夹将imagepaster,netpaster文件夹上传到现有项目ckeditor/plugins目录中在工具栏中增加插件按钮引用js初始化控件WordPaster.getInstance({//上传接口http://www.ncmem.com/doc/view.aspx?idd88b60a2b0204af1ba62fa66288203edPostUrl:api,//为图片地址增加域名http://www.ncmem.com/doc/view.aspx?id704cd302ebd346b486adf39cf4553936ImageUrl:,//设置文件字段名称http://www.ncmem.com/doc/view.aspx?idc3ad06c2ae31454cb418ceb2b8da7c45FileFieldName:file,//提取图片地址http://www.ncmem.com/doc/view.aspx?id07e3f323d22d4571ad213441ab8530d1ImageMatch:,Cookie:PHPSESSID});//加载控件配置上传接口注意1.如果接口字段名称不是file请配置FileFieldName。ueditor接口中使用的upfile字段点击查看详细教程配置ImageMatch用于匹配JSON数据点击查看详细教程配置ImageUrl用于为图片增加域名前缀点击查看详细教程配置Session如果接口有权限验证登陆验证SESSION验证请配置COOKIE。或取消权限验证。参考点击查看详细教程说明1.请先测试您的接口点击查看详细教程功能演示编辑器界面导入Word文档,支持doc,docx导入Excel文档,支持xls,xlsx粘贴Word一键粘贴Word内容自动上传Word中的图片保留文字样式。Word转图片一键导入Word文件并将Word文件转换成图片上传到服务器中。导入PDF一键导入PDF文件并将PDF转换成图片上传到服务器中。导入PPT一键导入PPT文件并将PPT转换成图片上传到服务器中。上传网络图片一键自动上传网络图片自动下载远程服务器图片自动上传远程服务器图片下载示例点击下载完整示例