Browse Source

feat(ppt处理): 优化PPT内容提取并生成可读文本文件

重构PPT内容处理逻辑,将每页文本内容提取并格式化为易读的字符串格式。同时将输出文件从JSON改为更合适的TXT格式,便于用户直接查看PPT内容。修改影响addCourse2和addCourse3两个组件。
lsc 1 tuần trước cách đây
mục cha
commit
20cbabd8c2

+ 12 - 8
src/components/pages/pptEasy/addCourse2.vue

@@ -1606,21 +1606,25 @@ export default {
       this.uploadWorkLoading = true;
       let _pptData = await this.getPPtJson();
       const _pptData2 = JSON.parse(JSON.stringify(_pptData))
+      const pptContent = []
       if (_pptData2.slides) {
-        _pptData2.slides.forEach((slide) => {
+        _pptData2.slides.forEach((slide, index) => {
+          let slideContent = ''
           if (slide.elements) {
-            slide.elements = slide.elements.filter((element) => element.type === 'text').map((element) => ({
-              type: element.type,
-              content: element.content
-            }))
+            const textElements = slide.elements.filter((element) => element.type === 'text')
+            if (textElements.length > 0) {
+              slideContent = textElements.map((element) => element.content).join(' ')
+            }
           }
+          pptContent.push(`第${index + 1}页: ${slideContent || '内容为空'}`)
         })
       }
+      const contentDescription = pptContent.join('\n')
       // 用_pptData生成json文件,并生成File对象
       const pptJsonStr = JSON.stringify(_pptData, null, 2);
-      const pptJsonStr2 = JSON.stringify(_pptData2, null, 2);
+      const pptJsonStr2 = contentDescription;
       const pptJsonFile = new File([pptJsonStr], this.courseName + ".json", { type: "application/json" });
-      const pptJsonFile2 = new File([pptJsonStr2], this.courseName + ".json", { type: "application/json" });
+      const pptJsonFile2 = new File([pptJsonStr2], this.courseName + ".txt", { type: "text/plain" });
       // 你可以根据需要将pptJsonFile上传或保存
 
       let _url = await this.uploadFile(pptJsonFile);
@@ -1727,7 +1731,7 @@ export default {
       const pptJsonStr = JSON.stringify(_pptData, null, 2);
       const pptJsonStr2 = contentDescription;
       const pptJsonFile = new File([pptJsonStr], this.courseName + ".json", { type: "application/json" });
-      const pptJsonFile2 = new File([pptJsonStr2], this.courseName + ".text", { type: "text/plain" });
+      const pptJsonFile2 = new File([pptJsonStr2], this.courseName + ".txt", { type: "text/plain" });
       // 你可以根据需要将pptJsonFile上传或保存
       console.log(_url)
       let _url = await this.uploadFile(pptJsonFile);

+ 12 - 8
src/components/pages/pptEasy/addCourse3.vue

@@ -1787,21 +1787,25 @@ export default {
       }
       let _pptData = await this.getPPtJson();
       const _pptData2 = JSON.parse(JSON.stringify(_pptData))
+      const pptContent = []
       if (_pptData2.slides) {
-        _pptData2.slides.forEach((slide) => {
+        _pptData2.slides.forEach((slide, index) => {
+          let slideContent = ''
           if (slide.elements) {
-            slide.elements = slide.elements.filter((element) => element.type === 'text').map((element) => ({
-              type: element.type,
-              content: element.content
-            }))
+            const textElements = slide.elements.filter((element) => element.type === 'text')
+            if (textElements.length > 0) {
+              slideContent = textElements.map((element) => element.content).join(' ')
+            }
           }
+          pptContent.push(`第${index + 1}页: ${slideContent || '内容为空'}`)
         })
       }
+      const contentDescription = pptContent.join('\n')
       // 用_pptData生成json文件,并生成File对象
       const pptJsonStr = JSON.stringify(_pptData, null, 2);
-      const pptJsonStr2 = JSON.stringify(_pptData2, null, 2);
+      const pptJsonStr2 = contentDescription;
       const pptJsonFile = new File([pptJsonStr], this.courseName + ".json", { type: "application/json" });
-      const pptJsonFile2 = new File([pptJsonStr2], this.courseName + ".json", { type: "application/json" });
+      const pptJsonFile2 = new File([pptJsonStr2], this.courseName + ".txt", { type: "text/plain" });
       // 你可以根据需要将pptJsonFile上传或保存
 
       let _url = await this.uploadFile(pptJsonFile);
@@ -1914,7 +1918,7 @@ export default {
       const pptJsonStr = JSON.stringify(_pptData, null, 2);
       const pptJsonStr2 = contentDescription;
       const pptJsonFile = new File([pptJsonStr], this.courseName + ".json", { type: "application/json" });
-      const pptJsonFile2 = new File([pptJsonStr2], this.courseName + ".text", { type: "text/plain" });
+      const pptJsonFile2 = new File([pptJsonStr2], this.courseName + ".txt", { type: "text/plain" });
       // 你可以根据需要将pptJsonFile上传或保存
       console.log(_url)
       let _url = await this.uploadFile(pptJsonFile);