From 3d9d07a04299d9d43c8b4faa3192c7233c338026 Mon Sep 17 00:00:00 2001
From: gaoluyang <gaoluyang@rengu.cc>
Date: 星期四, 11 七月 2024 15:09:30 +0800
Subject: [PATCH] 科学计数法逻辑修改
---
src/util/file.js | 94 +++++++++++++++++++++++++++--------------------
1 files changed, 54 insertions(+), 40 deletions(-)
diff --git a/src/util/file.js b/src/util/file.js
index cca1216..c3a3e7b 100644
--- a/src/util/file.js
+++ b/src/util/file.js
@@ -1,47 +1,61 @@
-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
},
+ downloadIamge(imgsrc, name) {//涓嬭浇鍥剧墖鍦板潃鍜屽浘鐗囧悕
+ var image = new Image();
+ // 瑙e喅璺ㄥ煙 Canvas 姹℃煋闂
+ image.setAttribute("crossOrigin", "anonymous");
+ image.onload = function() {
+ var canvas = document.createElement("canvas");
+ canvas.width = image.width;
+ canvas.height = image.height;
+ var context = canvas.getContext("2d");
+ context.drawImage(image, 0, 0, image.width, image.height);
+ var url = canvas.toDataURL("image/png"); //寰楀埌鍥剧墖鐨刡ase64缂栫爜鏁版嵁
+
+ var a = document.createElement("a"); // 鐢熸垚涓�涓猘鍏冪礌
+ var event = new MouseEvent("click"); // 鍒涘缓涓�涓崟鍑讳簨浠�
+ a.download = name || "photo"; // 璁剧疆鍥剧墖鍚嶇О
+ a.href = url; // 灏嗙敓鎴愮殑URL璁剧疆涓篴.href灞炴��
+ a.dispatchEvent(event); // 瑙﹀彂a鐨勫崟鍑讳簨浠�
+ };
+ image.src = imgsrc;
+ }
};
--
Gitblit v1.9.3