From c5842886b876f20d4411d9da4d8b3b4fef0c39a7 Mon Sep 17 00:00:00 2001 From: value <z1292839451@163.com> Date: 星期一, 29 四月 2024 02:25:27 +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