Просмотр исходного кода

fix: 替换为 wisdom-pptxtojson

李志伟 1 месяц назад
Родитель
Сommit
5b53346554

+ 1 - 0
package.json

@@ -18,6 +18,7 @@
         "tinycolor2": "1.6.0",
         "vue": "^3.5.13",
         "vue-router": "4",
+        "wisdom-pptxtojson": "^1.0.0",
         "x-data-spreadsheet": "^1.1.9"
     },
     "devDependencies": {

+ 59 - 26
pnpm-lock.yaml

@@ -13,7 +13,7 @@ importers:
         version: 0.3.5
       element-plus:
         specifier: ^2.9.8
-        version: 2.9.8(vue@3.5.13)
+        version: 2.9.8(vue@3.5.13(typescript@5.7.3))
       exceljs:
         specifier: 4.4.0
         version: 4.4.0
@@ -34,17 +34,20 @@ importers:
         version: 3.5.13(typescript@5.7.3)
       vue-router:
         specifier: '4'
-        version: 4.5.0(vue@3.5.13)
+        version: 4.5.0(vue@3.5.13(typescript@5.7.3))
+      wisdom-pptxtojson:
+        specifier: ^1.0.0
+        version: 1.0.0
       x-data-spreadsheet:
         specifier: ^1.1.9
         version: 1.1.9
     devDependencies:
       '@vitejs/plugin-vue':
         specifier: ^5.2.2
-        version: 5.2.3(vite@6.3.3)(vue@3.5.13)
+        version: 5.2.3(vite@6.3.3(less@4.3.0))(vue@3.5.13(typescript@5.7.3))
       '@vue/tsconfig':
         specifier: ^0.7.0
-        version: 0.7.0(typescript@5.7.3)(vue@3.5.13)
+        version: 0.7.0(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))
       less:
         specifier: ^4.3.0
         version: 4.3.0
@@ -53,10 +56,10 @@ importers:
         version: 5.7.3
       unplugin-auto-import:
         specifier: ^19.1.2
-        version: 19.1.2
+        version: 19.1.2(@vueuse/core@9.13.0(vue@3.5.13(typescript@5.7.3)))
       unplugin-vue-components:
         specifier: ^28.5.0
-        version: 28.5.0(vue@3.5.13)
+        version: 28.5.0(@babel/parser@7.27.0)(vue@3.5.13(typescript@5.7.3))
       vite:
         specifier: ^6.3.1
         version: 6.3.3(less@4.3.0)
@@ -1224,6 +1227,9 @@ packages:
   text-segmentation@1.0.3:
     resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==}
 
+  through2@3.0.2:
+    resolution: {integrity: sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==}
+
   through@2.3.8:
     resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
 
@@ -1252,6 +1258,9 @@ packages:
   tslib@2.8.1:
     resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
 
+  txml@5.1.1:
+    resolution: {integrity: sha512-TwMDLnXQ09enNaxybLVvKZU7rqog8LgnuAs4ZYXM0nV0eu10iLsSFwlX3AEknAXXtH1wT3CYfoiXAjyBexcmuw==}
+
   typescript@5.7.3:
     resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==}
     engines: {node: '>=14.17'}
@@ -1386,6 +1395,9 @@ packages:
   webpack-virtual-modules@0.6.2:
     resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
 
+  wisdom-pptxtojson@1.0.0:
+    resolution: {integrity: sha512-fKtOHCaLASVBTe6Qu8oCjD1cvUjkB+wO/VryRo37xNMa2Ym9Afi7uS/ukbkUEFrNYxRHrSfg/PqUp/XUpLXjGg==}
+
   wrappy@1.0.2:
     resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
 
@@ -1416,7 +1428,7 @@ snapshots:
 
   '@ctrl/tinycolor@3.6.1': {}
 
-  '@element-plus/icons-vue@2.3.1(vue@3.5.13)':
+  '@element-plus/icons-vue@2.3.1(vue@3.5.13(typescript@5.7.3))':
     dependencies:
       vue: 3.5.13(typescript@5.7.3)
 
@@ -1645,7 +1657,7 @@ snapshots:
 
   '@types/web-bluetooth@0.0.16': {}
 
-  '@vitejs/plugin-vue@5.2.3(vite@6.3.3)(vue@3.5.13)':
+  '@vitejs/plugin-vue@5.2.3(vite@6.3.3(less@4.3.0))(vue@3.5.13(typescript@5.7.3))':
     dependencies:
       vite: 6.3.3(less@4.3.0)
       vue: 3.5.13(typescript@5.7.3)
@@ -1709,6 +1721,7 @@ snapshots:
       minimatch: 9.0.5
       muggle-string: 0.4.1
       path-browserify: 1.0.1
+    optionalDependencies:
       typescript: 5.7.3
 
   '@vue/reactivity@3.5.13':
@@ -1727,7 +1740,7 @@ snapshots:
       '@vue/shared': 3.5.13
       csstype: 3.1.3
 
-  '@vue/server-renderer@3.5.13(vue@3.5.13)':
+  '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.7.3))':
     dependencies:
       '@vue/compiler-ssr': 3.5.13
       '@vue/shared': 3.5.13
@@ -1735,26 +1748,26 @@ snapshots:
 
   '@vue/shared@3.5.13': {}
 
-  '@vue/tsconfig@0.7.0(typescript@5.7.3)(vue@3.5.13)':
-    dependencies:
+  '@vue/tsconfig@0.7.0(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))':
+    optionalDependencies:
       typescript: 5.7.3
       vue: 3.5.13(typescript@5.7.3)
 
-  '@vueuse/core@9.13.0(vue@3.5.13)':
+  '@vueuse/core@9.13.0(vue@3.5.13(typescript@5.7.3))':
     dependencies:
       '@types/web-bluetooth': 0.0.16
       '@vueuse/metadata': 9.13.0
-      '@vueuse/shared': 9.13.0(vue@3.5.13)
-      vue-demi: 0.14.10(vue@3.5.13)
+      '@vueuse/shared': 9.13.0(vue@3.5.13(typescript@5.7.3))
+      vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.3))
     transitivePeerDependencies:
       - '@vue/composition-api'
       - vue
 
   '@vueuse/metadata@9.13.0': {}
 
-  '@vueuse/shared@9.13.0(vue@3.5.13)':
+  '@vueuse/shared@9.13.0(vue@3.5.13(typescript@5.7.3))':
     dependencies:
-      vue-demi: 0.14.10(vue@3.5.13)
+      vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.3))
     transitivePeerDependencies:
       - '@vue/composition-api'
       - vue
@@ -1956,15 +1969,15 @@ snapshots:
     dependencies:
       readable-stream: 2.3.8
 
-  element-plus@2.9.8(vue@3.5.13):
+  element-plus@2.9.8(vue@3.5.13(typescript@5.7.3)):
     dependencies:
       '@ctrl/tinycolor': 3.6.1
-      '@element-plus/icons-vue': 2.3.1(vue@3.5.13)
+      '@element-plus/icons-vue': 2.3.1(vue@3.5.13(typescript@5.7.3))
       '@floating-ui/dom': 1.6.13
       '@popperjs/core': '@sxzz/popperjs-es@2.11.7'
       '@types/lodash': 4.17.16
       '@types/lodash-es': 4.17.12
-      '@vueuse/core': 9.13.0(vue@3.5.13)
+      '@vueuse/core': 9.13.0(vue@3.5.13(typescript@5.7.3))
       async-validator: 4.2.5
       dayjs: 1.11.13
       escape-html: 1.0.3
@@ -2058,7 +2071,7 @@ snapshots:
       '@fast-csv/parse': 4.3.6
 
   fdir@6.4.4(picomatch@4.0.2):
-    dependencies:
+    optionalDependencies:
       picomatch: 4.0.2
 
   figures@2.0.0:
@@ -2524,6 +2537,11 @@ snapshots:
     dependencies:
       utrie: 1.0.2
 
+  through2@3.0.2:
+    dependencies:
+      inherits: 2.0.4
+      readable-stream: 3.6.2
+
   through@2.3.8: {}
 
   tinycolor2@1.6.0: {}
@@ -2547,6 +2565,10 @@ snapshots:
 
   tslib@2.8.1: {}
 
+  txml@5.1.1:
+    dependencies:
+      through2: 3.0.2
+
   typescript@5.7.3: {}
 
   ufo@1.6.1: {}
@@ -2568,7 +2590,7 @@ snapshots:
       unplugin: 2.3.2
       unplugin-utils: 0.2.4
 
-  unplugin-auto-import@19.1.2:
+  unplugin-auto-import@19.1.2(@vueuse/core@9.13.0(vue@3.5.13(typescript@5.7.3))):
     dependencies:
       local-pkg: 1.1.1
       magic-string: 0.30.17
@@ -2576,13 +2598,15 @@ snapshots:
       unimport: 4.2.0
       unplugin: 2.3.2
       unplugin-utils: 0.2.4
+    optionalDependencies:
+      '@vueuse/core': 9.13.0(vue@3.5.13(typescript@5.7.3))
 
   unplugin-utils@0.2.4:
     dependencies:
       pathe: 2.0.3
       picomatch: 4.0.2
 
-  unplugin-vue-components@28.5.0(vue@3.5.13):
+  unplugin-vue-components@28.5.0(@babel/parser@7.27.0)(vue@3.5.13(typescript@5.7.3)):
     dependencies:
       chokidar: 3.6.0
       debug: 4.4.0
@@ -2593,6 +2617,8 @@ snapshots:
       unplugin: 2.3.2
       unplugin-utils: 0.2.4
       vue: 3.5.13(typescript@5.7.3)
+    optionalDependencies:
+      '@babel/parser': 7.27.0
     transitivePeerDependencies:
       - supports-color
 
@@ -2627,21 +2653,21 @@ snapshots:
     dependencies:
       esbuild: 0.25.3
       fdir: 6.4.4(picomatch@4.0.2)
-      less: 4.3.0
       picomatch: 4.0.2
       postcss: 8.5.3
       rollup: 4.40.0
       tinyglobby: 0.2.13
     optionalDependencies:
       fsevents: 2.3.3
+      less: 4.3.0
 
   vscode-uri@3.1.0: {}
 
-  vue-demi@0.14.10(vue@3.5.13):
+  vue-demi@0.14.10(vue@3.5.13(typescript@5.7.3)):
     dependencies:
       vue: 3.5.13(typescript@5.7.3)
 
-  vue-router@4.5.0(vue@3.5.13):
+  vue-router@4.5.0(vue@3.5.13(typescript@5.7.3)):
     dependencies:
       '@vue/devtools-api': 6.6.4
       vue: 3.5.13(typescript@5.7.3)
@@ -2657,12 +2683,19 @@ snapshots:
       '@vue/compiler-dom': 3.5.13
       '@vue/compiler-sfc': 3.5.13
       '@vue/runtime-dom': 3.5.13
-      '@vue/server-renderer': 3.5.13(vue@3.5.13)
+      '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.7.3))
       '@vue/shared': 3.5.13
+    optionalDependencies:
       typescript: 5.7.3
 
   webpack-virtual-modules@0.6.2: {}
 
+  wisdom-pptxtojson@1.0.0:
+    dependencies:
+      jszip: 3.10.1
+      tinycolor2: 1.6.0
+      txml: 5.1.1
+
   wrappy@1.0.2: {}
 
   x-data-spreadsheet@1.1.9:

+ 3 - 3
src/components/view_file/vendors/pptx/index.js

@@ -1,6 +1,6 @@
-import { createApp } from 'vue'
+import { createApp } from "vue"
 import PPT from "./PPT.vue"
-import { parse } from "./libs/pptxToJson"
+import { parse } from "wisdom-pptxtojson"
 
 /**
  * 渲染ppt
@@ -13,6 +13,6 @@ export default async function render(buffer, target) {
     $el: target,
     $destroy() {
       app.unmount()
-    }
+    },
   }
 }

+ 0 - 279
src/components/view_file/vendors/pptx/libs/pptxToJson/index.d.ts

@@ -1,279 +0,0 @@
-export interface Shadow {
-  h: number
-  v: number
-  blur: number
-  color: string
-}
-
-export interface ColorFill {
-  type: 'color'
-  value: string
-}
-
-export interface ImageFill {
-  type: 'image'
-  value: {
-    picBase64: string
-    opacity: number
-  }
-}
-
-export interface GradientFill {
-  type: 'gradient'
-  value: {
-    path: 'line' | 'circle' | 'rect' | 'shape'
-    rot: number
-    colors: {
-      pos: string
-      color: string
-    }[]
-  }
-}
-
-export type Fill = ColorFill | ImageFill | GradientFill
-
-export interface Border {
-  borderColor: string
-  borderWidth: number
-  borderType:'solid' | 'dashed' | 'dotted'
-}
-
-export interface Shape {
-  type: 'shape'
-  left: number
-  top: number
-  width: number
-  height: number
-  borderColor: string
-  borderWidth: number
-  borderType: 'solid' | 'dashed' | 'dotted'
-  borderStrokeDasharray: string
-  shadow?: Shadow
-  fill: Fill
-  content: string
-  isFlipV: boolean
-  isFlipH: boolean
-  rotate: number
-  shapType: string
-  vAlign: string
-  path?: string
-  name: string
-  order: number
-}
-
-export interface Text {
-  type: 'text'
-  left: number
-  top: number
-  width: number
-  height: number
-  borderColor: string
-  borderWidth: number
-  borderType: 'solid' | 'dashed' | 'dotted'
-  borderStrokeDasharray: string
-  shadow?: Shadow
-  fill: Fill
-  isFlipV: boolean
-  isFlipH: boolean
-  isVertical: boolean
-  rotate: number
-  content: string
-  vAlign: string
-  name: string
-  order: number
-}
-
-export interface Image {
-  type: 'image'
-  left: number
-  top: number
-  width: number
-  height: number
-  src: string
-  rotate: number
-  isFlipH: boolean
-  isFlipV: boolean
-  order: number
-  rect?: {
-    t?: number
-    b?: number
-    l?: number
-    r?: number
-  }
-  geom: string
-  borderColor: string
-  borderWidth: number
-  borderType: 'solid' | 'dashed' | 'dotted'
-  borderStrokeDasharray: string
-}
-
-export interface TableCell {
-  text: string
-  rowSpan?: number
-  colSpan?: number
-  vMerge?: number
-  hMerge?: number
-  fillColor?: string
-  fontColor?: string
-  fontBold?: boolean
-  borders: {
-    top?: Border
-    bottom?: Border
-    left?: Border
-    right?: Border
-  }
-}
-export interface Table {
-  type: 'table'
-  left: number
-  top: number
-  width: number
-  height: number
-  data: TableCell[][]
-  borders: {
-    top?: Border
-    bottom?: Border
-    left?: Border
-    right?: Border
-  }
-  order: number
-  rowHeights: number[]
-  colWidths: number[]
-}
-
-export type ChartType = 'lineChart' |
-  'line3DChart' |
-  'barChart' |
-  'bar3DChart' |
-  'pieChart' |
-  'pie3DChart' |
-  'doughnutChart' |
-  'areaChart' |
-  'area3DChart' |
-  'scatterChart' |
-  'bubbleChart' |
-  'radarChart' |
-  'surfaceChart' |
-  'surface3DChart' |
-  'stockChart'
-
-export interface ChartValue {
-  x: string
-  y: number
-}
-export interface ChartXLabel {
-  [key: string]: string
-}
-export interface ChartItem {
-  key: string
-  values: ChartValue[]
-  xlabels: ChartXLabel
-}
-export type ScatterChartData = [number[], number[]]
-export interface CommonChart {
-  type: 'chart'
-  left: number
-  top: number
-  width: number
-  height: number
-  data: ChartItem[]
-  colors: string[]
-  chartType: Exclude<ChartType, 'scatterChart' | 'bubbleChart'>
-  barDir?: 'bar' | 'col'
-  marker?: boolean
-  holeSize?: string
-  grouping?: string
-  style?: string
-  order: number
-}
-export interface ScatterChart {
-  type: 'chart'
-  left: number
-  top: number
-  width: number
-  height: number
-  data: ScatterChartData
-  colors: string[]
-  chartType: 'scatterChart' | 'bubbleChart'
-  order: number
-}
-export type Chart = CommonChart | ScatterChart
-
-export interface Video {
-  type: 'video'
-  left: number
-  top: number
-  width: number
-  height: number
-  blob?: string
-  src?: string
-  order: number
-}
-
-export interface Audio {
-  type: 'audio'
-  left: number
-  top: number
-  width: number
-  height: number
-  blob: string
-  order: number
-}
-
-export interface Diagram {
-  type: 'diagram'
-  left: number
-  top: number
-  width: number
-  height: number
-  elements: (Shape | Text)[]
-  order: number
-}
-
-export interface Math {
-  type: 'math'
-  left: number
-  top: number
-  width: number
-  height: number
-  latex: string
-  picBase64: string
-  order: number
-}
-
-export type BaseElement = Shape | Text | Image | Table | Chart | Video | Audio | Diagram | Math
-
-export interface Group {
-  type: 'group'
-  left: number
-  top: number
-  width: number
-  height: number
-  rotate: number
-  elements: BaseElement[]
-  order: number
-  isFlipH: boolean
-  isFlipV: boolean
-}
-export type Element = BaseElement | Group
-
-export interface Slide {
-  fill: Fill
-  elements: Element[]
-  layoutElements: Element[]
-  note: string
-}
-
-export interface Options {
-  slideFactor?: number
-  fontsizeFactor?: number
-}
-
-export const parse: (file: ArrayBuffer, options?: Options) => Promise<{
-  slides: Slide[]
-  themeColors: string[]
-  size: {
-    width: number
-    height: number
-  }
-}>

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
src/components/view_file/vendors/pptx/libs/pptxToJson/index.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
src/components/view_file/vendors/pptx/libs/pptxToJson/index.js.map


Некоторые файлы не были показаны из-за большого количества измененных файлов