纯前端 根据目录解析word,拆分不同段落

news2024/10/5 3:24:46

9a69fede8b2044a79dd834e3e48f20b4.png前期回顾f8e3cc1a0f694ac2b665ca2ad14c49d7.png  

两分钟学会 制作自己的浏览器 —— 并将 ChatGPT 接入_0.活在风浪里的博客-CSDN博客自定义浏览器,并集合ChatGPT,源码已公开https://blog.csdn.net/m0_57904695/article/details/130467253?spm=1001.2014.3001.5501

👍 本文专栏:项目难点 

目录

🔖  前言: 

🚀  图例:

🎉  前端根据目录解析word:

💊  被解析的word格式如下:

📪   结语:


 

🔖  前言: 

       最近呐在做一个Ai工具,解析数据出境报告,

       在数据出境强合规的大背景下,任何企业在处理数据出境时,必须先向监管方提供一个详细的合规报告。这个报告含有大量的具体信息,因此整体的报告篇幅一般都会在150页以上。这对监管方所需的评审时间来说也是一个不小的负担。基于这些我们希望能给监管单位提供一个工具,能够将一份全量的数据出境合规申请报告浓缩成一份摘要,并同时提供摘要中引用的文字的出处。细节如:评论修改Ai问答。。。

      本次分享技术方案为,纯前端解析 word 文档,并根据目录拆分不同段落文字,传至后台,进行模型训练及提取摘要!这些暂时搁笔不提,待后再说,先实现 word 的解析

 

🚀  图例:

🎉  前端根据目录解析word:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>前端根据目录解析word,拆分不同段落</title>
    <script src="https://cdn.bootcss.com/mammoth/1.4.8/mammoth.browser.js"></script>
  </head>

  <body>
    <div class="container">
      <!-- 获取word段落文字 -->
      <button id="btn">获取txt</button>
      <!-- 上传 -->
      <input id="inp" type="file" />
      <!-- 展示word -->
      <div id="output"></div>
    </div>

    <script>
      const btn = document.querySelector("#btn");
      const inp = document.querySelector("#inp");
      const output = document.querySelector("#output");
      let html;

      btn.addEventListener("click", handleClick);
      inp.addEventListener("change", handleChange);

      function handleClick() {
        const arr = html?.split(/<h[1-6]>/g)?.slice(1);
        arr?.forEach((item) => {
          const [title, content] = item?.split("</h");
          const strippedTitle = title?.replace(/<[^>]+>/g, "");
          const strippedContent = content?.replace(/1>|<[^>]+>/g, "");
          const paragraph = `<div><strong>标题:</strong> ${strippedTitle}</div><div><strong>段落:</strong> ${strippedContent}</div>`;
          /* 
          insertAdjacentHTML()方法可以将指定的HTML字符串插入到指定元素的相对位置。具体参数含义如下:
          第一个参数:表示插入位置,共有四个值可选:
              'beforebegin':在当前元素之前插入。
              'afterbegin':在当前元素内部的第一个子元素之前插入。
              'beforeend':在当前元素内部的最后一个子元素之后插入。
              'afterend':在当前元素之后插入。
          第二个参数:表示要插入的HTML字符串。
          以下代码中,output.insertAdjacentHTML("beforeend", paragraph)
          表示将paragraph这段HTML字符串插入到output元素内部的最后一个子元素之后的位置。
          */
          output.insertAdjacentHTML("beforeend", paragraph);
          // 使用 innerHTML 属性的时候要非常小心,因为它会覆盖整个元素的 HTML 内容,包括已有的子元素和绑定的事件处理程序等。
          // 如果不小心操作,可能会导致意外的结果或安全问题。因此,建议使用 insertAdjacentHTML() 或其他更安全的方法来操作 DOM 元素。
          // output.innerHTML += paragraph;

          window.scrollTo({
            top: document.body.scrollHeight,
            behavior: "smooth",
          });
        });
      }

      function handleChange(event) {
        const file = event.target.files[0];
        const reader = new FileReader();
        reader.onload = handleLoad;
        reader.readAsArrayBuffer(file);
      }

      function handleLoad(loadEvent) {
        const arrayBuffer = loadEvent.target.result; // arrayBuffer
        mammoth.convertToHtml({ arrayBuffer }).then(handleConversion);
      }

      function handleConversion(result) {
        html = result.value;
        console.log(html);
        const newHTML = html.replace(
          /<(table|tr|td)>/g,
          '<$1 style="border-collapse: collapse; border: 1px solid rgb(204, 204, 204); padding: 8px 15px; color:#555555;">'
        );
        output.innerHTML = newHTML;
      }
    </script>
  </body>
</html>

💊  被解析的word格式如下:

 

📪   结语:

以下是之前写的一些纯前端的文件的实现

JavaScript 《公司开发功能》 99+ 大合集_0.活在风浪里的博客-CSDN博客 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/491169.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity之OpenXR+XR Interaction Toolkit实现 监听VR手柄按键

一.前言 当我们接入XR Interaction Toolkit之后&#xff0c;我们可以很方便的做不同VR设备的适配&#xff0c;这在很大程度上提升了我们的开发效率&#xff0c;我们除了通过射线和物体交互之外&#xff0c;偶尔我们也会希望监听手柄上的部分按键的点击事件&#xff0c;今天我们…

网络安全大厂面试题合集

以下为网络安全各个方向涉及的面试题合集&#xff0c;星数越多代表问题出现的几率越大&#xff0c;祝各位都能找到满意的工作。 注&#xff1a;本套面试题&#xff0c;已整理成pdf文档&#xff0c;但内容还在持续更新中&#xff0c;因为无论如何都不可能覆盖所有的面试问题&…

国考省考结构化面试:情景模拟题的答题思路,人际关系题的变种,就题答题,灵活多变,关键在自己多思考,说话要有艺术

国考省考结构化面试&#xff1a;情景模拟题的答题思路&#xff0c;人际关系题的变种&#xff0c;就题答题&#xff0c;灵活多变&#xff0c;关键在自己多思考&#xff0c;说话要有艺术 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能&#xff0c;附带…

ansible常用模块总结

目录 一、 assert模块 二、 authorized_key模块 三、at模块 四、blockinfile模块 五、command模块 六、copy模块 七、 cron模块 八、 firewalld模块 九、 fail模块 十、 file模块 十一、 fetch模块 十二、filesystem模块 十三、 get_url模块 十四、group模块 十…

基于pytorch+transformers的车牌识别

目录 程序流程设计熟悉训练数据集CCPD2019数据集CCPD数据集标注信息单例再现 加载本地车牌数据集 程序流程设计 1&#xff0c;熟悉训练数据集&#xff1b; 2&#xff0c;加载本地车牌数据集&#xff1b; 3&#xff0c;定义网络模型&#xff1b; 4&#xff0c;输入数据集训练模…

关于复杂事件处理和事件驱动架构的争论

复杂事件处理&#xff08;Complex Event Processing&#xff0c;CEP&#xff09;系统和事件驱动架构&#xff08;Event Driven Architecture&#xff0c;EDA&#xff09;都被认为会在目前和未来的精致繁杂的系统设计中扮演重要角色。但是它们的角色是什么&#xff1f;会对业界产…

初识vue-模板

目录 模板语法 模板插值 指令 条件渲染&#xff08;v-if &#xff1b;v-show&#xff09; 列表循环&#xff08;v-for&#xff09; ref JSX&#xff08;render渲染&#xff09; 条件渲染 列表渲染 八皇后框架-背景格&#xff08;循环&#xff09; 模板语法 Vue.js使用了…

Vue3+Element Plus环境搭建和一键切换明暗主题的配置

Vue (发音为 /vjuː/&#xff0c;类似 view) 是一款用于构建用户界面的 JavaScript 框架。而Element Plus是一款基于Vue3面向设计师和开发者的组件库。 最终效果&#xff1a; 环境搭建 已安装 16.0 或更高版本的 Node.js&#xff0c;终端&#xff1a; npm init vuelatest这一…

智慧校园系统平台实现校内导航资产管线一体化管理

构建智慧校园系统平台是国家和大专院校共同倡议的校园信息化建设方向&#xff0c;是运用物联网技术搭建的一体化综合平台&#xff0c;基于各种应用服务系统&#xff0c;把学校的教务、办公、教学、学习、管理、资产、校园安全、安防、消防等各个环节融为一体&#xff0c;提高学…

MATLAB算法实战应用案例精讲-【人工智能】对比学习(概念篇)(补充篇)

目录 前言 几个高频面试题目 基于对比学习(ContrastiveLearning)的文本表示模型【为什么】能学到文本【相似】度&#xff1f; 为什么对比学习能学到很好的语义相似度&#xff1f; 那么如何评价这个表示空间的质量呢&#xff1f; 知识储备 监督学习和非监督学习 算法原理…

Web开发人员的10个数据库优化最佳实践

数据库优化已经成为web开发人员提高web应用程序性能&#xff0c;从而改善用户体验的关键。对一些人来说&#xff0c;这可能听起来不太吸引人&#xff0c;但如果能正确地优化数据库&#xff0c;就可以提高性能、减少瓶颈并节省资源。 幸运的是&#xff0c;有些优化技术在sql查询…

sqlserver object_id()函数学习

在SQLServer数据库中&#xff0c;如果查询数据库中是否存在指定名称的索引或者外键约束等&#xff0c;经常会用到object_id(name,type)方法&#xff0c; 语法&#xff1a;object_id(objectname)或object(objectname,type) 作用&#xff1a;该函数会返回指定对象的ID值&#xf…

springboot 整合ehchace 缓存教程

ehcache介绍 Ehcache是一种高性能、开源的Java缓存框架&#xff0c;被广泛应用于许多大规模、高并发的分布式系统中。它提供了一种快速、可扩展、分布式的数据缓存方案&#xff0c;支持各种内存级别的缓存、磁盘级别的缓存、分布式缓存等。Ehcache设计目标主要是提供高性能和可…

【LeetCode】198.打家劫舍

198.打家劫舍&#xff08;中等&#xff09; 思路 定义数组 dp&#xff0c; dp[i] 表示抢劫到第 i 个房子的时候&#xff0c;可以抢劫的最大数量。dp[i] 有两种可能&#xff1a;一种是我们选择不抢劫这个房子&#xff0c;此时累积金额为 dp[i-1] &#xff1b;另一种是我们选择抢…

儿童用灯哪个品牌好?推荐专业的儿童护眼台灯

一款好的儿童台灯&#xff0c;主要是从5个方面决定&#xff0c;照度及均匀度&#xff0c;蓝光&#xff0c;色温&#xff0c;显指&#xff0c;频闪 ① 照度及均匀度最高是国AA级&#xff0c;其次就是国A级 ② 蓝光一定要选择RG0无危险级&#xff0c;蓝光能量最强&#xff0c;…

给你安利一款不需要魔法就能免费使用的idea插件Bito-ChatGPT

一款不需要魔法就能免费使用的idea插件Bito-ChatGPT 一 、写在前面二、Bito是什么&#xff1f; &#x1f511;&#x1f511; **What does Bito AI do?**三 、安装Bito四、使用Bito4.1 创建个人工作空间4.2 使用Bito4.2.1 问任何技术问题&#xff08;Ask any technical questio…

端口聚合与Hash算法

目录 前言 一、Hash算法简介 二、负载分担 1.逐流负载分担 2.逐包负载分担 三、Hash算法与负载分担 1.转发原理 四、堆叠情况下的负载分担 五、配置流程 前言 提示&#xff1a;关于Hash与负载分担方式 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供…

Win11电脑桌面的图标变成白色了怎么解决?

Win11电脑桌面的图标变成白色了怎么解决&#xff1f;有用户将自己的电脑开机之后&#xff0c;出现了桌面图标变成白色的情况&#xff0c;虽然软件还是可以正常的打开&#xff0c;但是图标消失了看起来非常的不习惯&#xff0c;那么这个问题要怎么去解决呢&#xff1f;来看看以下…

PP825A 3BSE042240R3转换为后备控制系统和控制系统中的报警系统

​ ​ PP825A 3BSE042240R3转换为后备控制系统和控制系统中的报警系统 步进系统&#xff08;Stepper motor&#xff09;的优缺点是什么 步进电机-直流电流产生磁场。它是恒流系统。由于转子极数&#xff0c;扭矩随速度下降。 步进电机的优点 设计简单 控制简单 出色的低速扭矩…

德国 DocuWare 文档管理软件平台

DocuWare 是一个先进的平台&#xff0c;可让您集中、快速、有效地管理、处理和利用业务信息。 我们的文档管理和工作流程解决方案的各项功能可以集成到任何 IT 系统中&#xff0c;可以数字化任何部门的手动或纸质业务流程。提高您公司的生产力&#xff0c;让您的团队更轻松地完…