From 083c818af77d33d619dba3dc20f94e996225a1c7 Mon Sep 17 00:00:00 2001
From: value <z1292839451@163.com>
Date: 星期四, 16 五月 2024 10:28:39 +0800
Subject: [PATCH] 增加人事系统对接

---
 src/util/file.js |   74 +++++++++++++++++--------------------
 1 files changed, 34 insertions(+), 40 deletions(-)

diff --git a/src/util/file.js b/src/util/file.js
index cca1216..3757902 100644
--- a/src/util/file.js
+++ b/src/util/file.js
@@ -1,47 +1,41 @@
-import * as pdfjsLib from 'pdfjs-dist';
 import { convertToHtml } from 'mammoth';
+import Vue from 'vue'
 
 export default {
-  methods: {
-    convertFileToHtml(file) {
-      const fileType = file.type.split('/')[1];
-      const fileExtension = fileType === 'pdf' ? '.pdf' : '.docx';
-
-      // 灏嗘枃浠惰浆鎹负Blob瀵硅薄
-      const fileReader = new FileReader();
-      fileReader.onload = async (event) => {
-        const arrayBuffer = event.target.result;
-        const byteArray = new Uint8Array(arrayBuffer);
-        const blob = new Blob([byteArray], { type: fileType + fileExtension });
-
-        if (fileType === 'pdf') {
-          // 浣跨敤pdfjsLib灏哖DF杞崲涓篐TML
-          const pdfData = await pdfjsLib.getDocument(blob).promise;
-          const pageNumber = 1;
-          const scale = 1;
-          const viewport = pageNumber * scale;
-          const canvas = document.createElement('canvas');
-          const context = canvas.getContext('2d');
-          canvas.width = pdfData.internal.pageSize.getWidth() * scale;
-          canvas.height = pdfData.internal.pageSize.getHeight() * scale;
-          const renderContext = {
-            canvasContext: context,
-            viewport: viewport,
-          };
-          const renderTask = pdfData.getPage(pageNumber).render(renderContext);
-          await renderTask.promise;
-          const base64Image = canvas.toDataURL('image/png');
-
-          // 灏哹ase64Image杞崲涓篐TML
-          const htmlContent = `<img src="${base64Image}" />`;
-          return htmlContent;
-        } else if (fileType === 'docx') {
+  async convertFileToHtml(url) {
+    var xhr = new XMLHttpRequest();
+    xhr.open('GET', Vue.prototype.javaApi+url, true);//鑾峰彇鏂囦欢娴佺殑鎺ュ彛
+    xhr.send();
+    xhr.responseType = "blob";//涓嶈兘婕�
+    let xhrPromise = new Promise((resolve, reject) => {
+      xhr.onload = async function () {
+        if (this.status === 200) {
+          // 杩斿洖鐨勬枃浠舵祦锛岃浆鎹㈡垚blob瀵硅薄
+          var blob = new Blob([this.response],{ type:'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });
           // 浣跨敤mammoth灏哤ord杞崲涓篐TML
-          const htmlContent = await convertToHtml(blob, { format: 'html' });
-          return htmlContent;
+          let reader = new FileReader();
+          reader.readAsArrayBuffer(blob);
+          let htmlContentPromise = new Promise((resolve, reject) => {
+            reader.onload = async function () {
+              var arrayBuffer = xhr.response; //arrayBuffer
+              const result = await convertToHtml({ arrayBuffer: arrayBuffer })
+              let html = result.value.replace(/飪�/g, '')
+              .replace('<h1>', '<h1 style="text-align: center;">')
+              .replace(/<table>/g, '<table style="border-collapse: collapse;border: 1px solid #000;">')
+              .replace(/<tr>/g, '<tr style="height: 30px;">')
+              .replace(/<td>/g, '<td style="border: 1px solid #000;">')
+              .replace(/<p>/g, '<p style="text-indent: 2em;">')
+              .replace(/<a [^>]*>/g, "")
+              .replace(/<\/a>/g, "")
+              // .replace(/em/g, "cm");
+              resolve(html)
+            };
+          })
+          resolve(await htmlContentPromise)
         }
-      };
-      fileReader.readAsArrayBuffer(blob);
-    },
+
+      }
+    })
+    return await xhrPromise
   },
 };

--
Gitblit v1.9.3