From 84c71ae1ed901e98cd3ba4a7484ac3eb58f0cfb5 Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期四, 04 七月 2024 14:19:30 +0800 Subject: [PATCH] 代码提交 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java | 104 ++++++++++++++++----------------------------------- 1 files changed, 33 insertions(+), 71 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..1b7e811 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 @@ -2,6 +2,7 @@ import java.io.*; import java.util.ArrayList; +import java.util.Base64; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -10,6 +11,12 @@ 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 com.ruoyi.common.enums.PhotoEnum; import com.ruoyi.common.enums.RadioEnum; @@ -126,8 +133,7 @@ // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О 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"); AjaxResult ajax = AjaxResult.success(); @@ -218,86 +224,42 @@ } } + public static void convertDocToHtml(String docFilePath, String outputHtmlFilePath) throws TransformerException, IOException, ParserConfigurationException { - 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 + org.w3c.dom.Document htmlDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); + WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(htmlDoc); + 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; + String base64 = Base64.getEncoder().encodeToString(content); + String src = "data:" + pictureType.getMime() + ";base64," + base64; + return src; } }); - // 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()); - } - } - } - // 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."); - } catch (IOException e) { - e.printStackTrace(); + 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("Conversion completed successfully."); + } - 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%"); - - Matcher heightMatcher = heightPattern.matcher(style); - style = heightMatcher.replaceAll("height: 90%"); - - return style; - } } -- Gitblit v1.9.3