From 907641e56c2085aaa81f267946dc3e3e9fca73e7 Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期三, 18 九月 2024 09:39:02 +0800 Subject: [PATCH] 代码提交 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java | 229 ++++++++++++++++++++++++++++++-------------------------- 1 files changed, 122 insertions(+), 107 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java index 5268e61..8ad8488 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java @@ -1,44 +1,44 @@ package com.ruoyi.web.controller.common; -import java.io.*; -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import javax.lang.model.util.Elements; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import com.ruoyi.common.enums.PhotoEnum; -import com.ruoyi.common.enums.RadioEnum; -import com.ruoyi.common.enums.VadioEnum; -import org.apache.poi.hwpf.HWPFDocument; -import org.apache.poi.hwpf.converter.PicturesManager; -import org.apache.poi.hwpf.converter.WordToHtmlConverter; -import org.apache.poi.hwpf.usermodel.Picture; -import org.apache.poi.hwpf.usermodel.PictureType; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Element; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.PhotoEnum; +import com.ruoyi.common.enums.RadioEnum; +import com.ruoyi.common.enums.VadioEnum; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.framework.config.ServerConfig; -import org.springframework.web.multipart.commons.CommonsMultipartFile; -import org.w3c.dom.Document; +import com.smartor.domain.HtmlContentVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.hwpf.HWPFDocument; +import org.apache.poi.hwpf.converter.PicturesManager; +import org.apache.poi.hwpf.converter.WordToHtmlConverter; +import org.apache.poi.hwpf.usermodel.PictureType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import java.io.*; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; /** * 閫氱敤璇锋眰澶勭悊 @@ -46,6 +46,7 @@ * @author ruoyi */ @RestController +@Api(description = "閫氳繃璇锋眰澶勭悊") @RequestMapping("/common") public class CommonController { private static final Logger log = LoggerFactory.getLogger(CommonController.class); @@ -54,6 +55,9 @@ private ServerConfig serverConfig; private static final String FILE_DELIMETER = ","; + + @Value("${uploadSwitch}") + private Integer uploadSwitch; /** * 閫氱敤涓嬭浇璇锋眰 @@ -84,6 +88,7 @@ /** * 鍒嗙被涓婁紶璇锋眰 */ + @ApiOperation("鍒嗙被涓婁紶璇锋眰") @PostMapping("/uploadSort") public AjaxResult uploadFileSort(MultipartFile file) { try { @@ -101,7 +106,15 @@ } // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О String fileName = FileUploadUtils.uploadSort(filePath, file); - String url = serverConfig.getUrl() + fileName; + String url = null; + //鏂板崕鍖婚櫌鐗规畩锛岃繖涓棰戠殑璁块棶寰楄浆 + String xhPath = "http://218.108.11.22:8093/profile-api"; + if (uploadSwitch == 1) { + String fn = fileName.replaceAll("/profile", ""); + url = xhPath + fn; + } else { + url = serverConfig.getUrl() + fileName; + } AjaxResult ajax = AjaxResult.success(); ajax.put("url", url); ajax.put("fileName", fileName); @@ -116,6 +129,7 @@ /** * 涓婁紶骞惰浆鎴恏tml璇锋眰 */ + @ApiOperation("word鏂囦欢涓婁紶骞惰浆鎴恏tml") @PostMapping("/uploadShow") public AjaxResult uploadFileShow(MultipartFile file) { try { @@ -126,10 +140,17 @@ // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О String fileName = FileUploadUtils.uploadSort(filePath, file); //灏唚ord杞垚html - convertDocToHtml(filePath + "\\" + file.getOriginalFilename(), filePath + "\\" + file.getOriginalFilename().split("\\.", 2)[0] + ".html", filePath); - updatePicture(filePath + "\\" + file.getOriginalFilename().split("\\.", 2)[0] + ".html"); + convertDocToHtml(filePath + "\\" + file.getOriginalFilename(), filePath + "\\" + file.getOriginalFilename().split("\\.", 2)[0] + ".html"); - String url = serverConfig.getUrl() + fileName.replaceAll("\\.[^.]*$", ".html"); + String url = null; + String xhPath = "http://218.108.11.22:8093/profile-api"; + if (uploadSwitch == 1) { + String fn = fileName.replaceAll("\\.[^.]*$", ".html").replaceAll("/profile", ""); + url = xhPath + fn; + + } else { + url = serverConfig.getUrl() + fileName.replaceAll("\\.[^.]*$", ".html"); + } AjaxResult ajax = AjaxResult.success(); ajax.put("url", url); ajax.put("fileName", fileName); @@ -144,6 +165,7 @@ /** * 閫氱敤涓婁紶璇锋眰锛堝崟涓級 */ + @ApiOperation("閫氱敤涓婁紶璇锋眰") @PostMapping("/upload") public AjaxResult uploadFile(MultipartFile file) { try { @@ -218,86 +240,79 @@ } } - - private void convertDocToHtml(String docFilePath, String outputHtmlFilePath, String imageDirPath) throws IOException, ParserConfigurationException { - // Load DOC into HWPFDocument - InputStream inputStream = new FileInputStream(docFilePath); - HWPFDocument document = new HWPFDocument(inputStream); - // Prepare HTML output - WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument()); - // Set PicturesManager to handle image saving - wordToHtmlConverter.setPicturesManager(new PicturesManager() { - @Override - public String savePicture(byte[] content, PictureType pictureType, String suggestedName, float widthInches, float heightInches) { - File imageFile = new File(imageDirPath + "/" + suggestedName); - try (FileOutputStream fos = new FileOutputStream(imageFile)) { - fos.write(content); - } catch (IOException e) { - e.printStackTrace(); - } - return suggestedName; + /** + * @param + * @return + */ + @ApiOperation("瀵屾枃鏈浆html") + @PostMapping("/htmlContent") + public AjaxResult htmlContent(@RequestBody HtmlContentVO htmlContentVO) { + log.error("htmlContentVO鍏ュ弬涓猴細{}", htmlContentVO); + // 鑾峰彇鏂囦欢鐨勫師濮嬪悕绉� + String fileName = htmlContentVO.getFileName(); + if (!fileName.endsWith(".html")) { + // 鍘绘帀涔嬪墠鐨勬墿灞曞悕 + int lastIndex = fileName.lastIndexOf('.'); + if (lastIndex != -1) { + fileName = fileName.substring(0, lastIndex); // 鍘绘帀鎵╁睍鍚� } - }); - // Convert document to HTML - wordToHtmlConverter.processDocument(document); - // Save images - List<Picture> pics = document.getPicturesTable().getAllPictures(); - if (pics != null) { - for (Picture pic : pics) { - try (FileOutputStream fos = new FileOutputStream(imageDirPath + "/" + pic.suggestFullFileName())) { - fos.write(pic.getContent()); - } - } + // 娣诲姞.html鍚庣紑 + fileName += ".html"; } - // Convert to HTML - Document htmlDocument = wordToHtmlConverter.getDocument(); - ByteArrayOutputStream outStream = new ByteArrayOutputStream(); - org.apache.xml.serialize.OutputFormat format = new org.apache.xml.serialize.OutputFormat(htmlDocument); - org.apache.xml.serialize.XMLSerializer serializer = new org.apache.xml.serialize.XMLSerializer(outStream, format); - serializer.serialize(htmlDocument); - // Write HTML file - try (OutputStream outputStream = new FileOutputStream(outputHtmlFilePath)) { - outputStream.write(outStream.toByteArray()); - } - } - - private void updatePicture(String htmlFilePath) { - try { - // Load HTML file - File inputFile = new File(htmlFilePath); - org.jsoup.nodes.Document doc = Jsoup.parse(inputFile, "UTF-8"); - - // Select all elements with style attribute and modify their width and height to 90% - org.jsoup.select.Elements elementsWithStyle = doc.select("[style]"); - for (Element element : elementsWithStyle) { - String style = element.attr("style"); - String modifiedStyle = modifyStyle(style); - element.attr("style", modifiedStyle); - } - - // Save the modified HTML to output file - try (FileWriter writer = new FileWriter(htmlFilePath)) { - writer.write(doc.outerHtml()); - } - - System.out.println("Modification completed successfully."); + FileUtils.createFile(RuoYiConfig.getUploadPath() + "/show/" + fileName.split("\\.", 2)[0]); + // 灏嗘枃浠朵繚瀛樺埌鎸囧畾鐩綍 + File outputFile = new File(RuoYiConfig.getUploadPath() + "/show/" + fileName.split("\\.", 2)[0] + "/" + fileName); + try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputFile), "UTF-8"))) { + if (StringUtils.isNotEmpty(htmlContentVO.getContent())) + writer.write(htmlContentVO.getContent()); } catch (IOException e) { e.printStackTrace(); } + String url = null; + String xhPath = "http://218.108.11.22:8093/profile-api"; + if (uploadSwitch == 1) { + url = xhPath + "/upload/show/" + fileName.split("\\.", 2)[0] + "/" + fileName; + } else { + url = serverConfig.getUrl() + "/profile/upload/show/" + fileName.split("\\.", 2)[0] + "/" + fileName; + } + return AjaxResult.success(url); } - private String modifyStyle(String style) { - // Define patterns for width and height - Pattern widthPattern = Pattern.compile("width\\s*:\\s*[^;]+"); - Pattern heightPattern = Pattern.compile("height\\s*:\\s*[^;]+"); - // Replace width and height with 90% - Matcher widthMatcher = widthPattern.matcher(style); - style = widthMatcher.replaceAll("width: 90%"); + public static void convertDocToHtml(String docFilePath, String outputHtmlFilePath) throws TransformerException, IOException, ParserConfigurationException { - Matcher heightMatcher = heightPattern.matcher(style); - style = heightMatcher.replaceAll("height: 90%"); + InputStream inputStream = new FileInputStream(docFilePath); + HWPFDocument document = new HWPFDocument(inputStream); + org.w3c.dom.Document htmlDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); + WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(htmlDoc); - return style; + wordToHtmlConverter.setPicturesManager(new PicturesManager() { + @Override + public String savePicture(byte[] content, PictureType pictureType, String suggestedName, float widthInches, float heightInches) { + String base64 = Base64.getEncoder().encodeToString(content); + String src = "data:" + pictureType.getMime() + ";base64," + base64; + return src; + } + }); + try { + wordToHtmlConverter.processDocument(document); + } catch (Exception e) { + e.getMessage(); + } + TransformerFactory tf = TransformerFactory.newInstance(); + Transformer transformer = tf.newTransformer(); + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + transformer.setOutputProperty(OutputKeys.METHOD, "html"); + transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); + transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); + + DOMSource domSource = new DOMSource(wordToHtmlConverter.getDocument()); + StreamResult streamResult = new StreamResult(new File(outputHtmlFilePath)); + transformer.transform(domSource, streamResult); + + System.out.println("word杞琱tml鎴愬姛"); + } + + } -- Gitblit v1.9.3