Browse Source

fix: 修复文字内容pt单位转px

李志伟 1 month ago
parent
commit
22e912f9e4
3 changed files with 14 additions and 16 deletions
  1. 5 4
      package.json
  2. 3 0
      pnpm-lock.yaml
  3. 6 12
      src/components/view_file/components/vendors/pptx/PPT.vue

+ 5 - 4
package.json

@@ -9,12 +9,13 @@
         "preview": "vite preview"
     },
     "devDependencies": {
+        "@babel/types": "^7.27.0",
+        "@originjs/vite-plugin-require-context": "^1.0.9",
         "less": "^4.3.0",
         "typescript": "~5.7.2",
         "vite": "^2.8.6",
         "vite-plugin-vue2": "^2.0.3",
-        "vue-template-compiler": "^2.7.16",
-        "@originjs/vite-plugin-require-context": "^1.0.9"
+        "vue-template-compiler": "^2.7.16"
     },
     "dependencies": {
         "@handsontable/vue": "^15.2.0",
@@ -24,15 +25,15 @@
         "element-ui": "^2.15.13",
         "exceljs": "^4.4.0",
         "file-saver": "^2.0.5",
+        "handsontable": "^11.1.0",
         "html2canvas": "^1.4.1",
         "js-cookie": "^3.0.5",
+        "jszip": "^3.10.1",
         "lodash": "^4.17.21",
         "lodash-es": "^4.17.21",
         "pdfjs-dist": "2.4.456",
         "pptxtojson": "^1.3.1",
-        "handsontable": "^11.1.0",
         "tinycolor2": "^1.6.0",
-        "jszip": "^3.10.1",
         "txml": "^5.1.1",
         "vue": "2.7.16",
         "vue-router": "^3.5.1",

+ 3 - 0
pnpm-lock.yaml

@@ -78,6 +78,9 @@ importers:
         specifier: ^0.18.5
         version: 0.18.5
     devDependencies:
+      '@babel/types':
+        specifier: ^7.27.0
+        version: 7.27.0
       '@originjs/vite-plugin-require-context':
         specifier: ^1.0.9
         version: 1.0.9

+ 6 - 12
src/components/view_file/components/vendors/pptx/PPT.vue

@@ -2,7 +2,7 @@
  * @Author: LiZhiWei
  * @Date: 2025-04-10 14:38:27
  * @LastEditors: LiZhiWei
- * @LastEditTime: 2025-04-17 17:28:59
+ * @LastEditTime: 2025-04-18 08:50:37
  * @Description:
 -->
 <template>
@@ -31,7 +31,6 @@ export default {
   },
   methods: {
     renderSlides() {
-      console.log("this.pptxJson", this.pptxJson)
       if (!this.$refs.pptxContainer || !this.pptxJson) return
 
       this.$refs.pptxContainer.innerHTML = ""
@@ -437,7 +436,6 @@ export default {
               // 应用图案填充
               rect.setAttribute("fill", `url(#${patternId})`)
             } else {
-              console.log("element.fill", element.fill)
               rect.setAttribute("fill", "transparent")
             }
           }
@@ -5116,18 +5114,14 @@ export default {
         .toString(16)
         .padStart(2, "0")}${b.toString(16).padStart(2, "0")}`
     },
-    // 新增函数:转换内容中的pt单位为px单位
     convertPtToPxInContent(content) {
       if (!content) return content
       // 使用正则表达式查找并替换
-      return content.replace(
-        /font-size:\s*(\d+)(pt|PT)/g,
-        (match, size, unit) => {
-          // 将pt转换为px
-          const pxSize = size
-          return `font-size: ${pxSize}px`
-        }
-      )
+      return content.replace(/(\d+\.?\d*)(pt|PT)/g, (match, size) => {
+        // 将 pt 转换为 px(1pt ≈ 1.33333px)
+        const pxSize = size
+        return `${pxSize}px`
+      })
     },
     processElements(elements, slideIndex) {
       if (!elements || !Array.isArray(elements)) return