From 1be1f0f28ecb033290a1ce21996667c2f358fa86 Mon Sep 17 00:00:00 2001
From: 许鹏程 <1821349743@qq.com>
Date: 星期四, 01 八月 2024 16:09:38 +0800
Subject: [PATCH] commit
---
src/main/java/com/product/file/controller/WebOfficeController.java | 12 ++++--
src/main/java/com/product/file/util/FileUtil.java | 40 ++-----------------
src/main/java/com/product/file/service/MergeDoc.java | 3 +
src/main/java/com/product/file/util/MergeWordDocuments.java | 52 ++++++++++++++++++++++++++
4 files changed, 67 insertions(+), 40 deletions(-)
diff --git a/src/main/java/com/product/file/controller/WebOfficeController.java b/src/main/java/com/product/file/controller/WebOfficeController.java
index 1ad734e..7478895 100644
--- a/src/main/java/com/product/file/controller/WebOfficeController.java
+++ b/src/main/java/com/product/file/controller/WebOfficeController.java
@@ -176,11 +176,15 @@
}
//鏂囦欢鍚嶏紙绐楀彛鐨勫悕瀛楋級
String file_title = fse.getString("fileName");
- if (file_title == null) {
- file_title = "";
- } else {
- file_title = UnicodeUtil.toString(file_title);
+ FieldSetEntity fieldSetEntity = fileManagerService.getBaseDao().getFieldSetEntity("product_sys_attachments", fse.getString("uuid"), false);
+ if (!FieldSetEntity.isEmpty(fieldSetEntity)) {
+ file_title = fieldSetEntity.getString("file_name");
}
+// if (file_title == null) {
+// file_title = "";
+// } else {
+// file_title = UnicodeUtil.toString(file_title);
+// }
SystemUser currentUser = SpringMVCContextHolder.getCurrentUser();
//
Boolean allowNestRed = false;
diff --git a/src/main/java/com/product/file/service/MergeDoc.java b/src/main/java/com/product/file/service/MergeDoc.java
index cf29496..607e133 100644
--- a/src/main/java/com/product/file/service/MergeDoc.java
+++ b/src/main/java/com/product/file/service/MergeDoc.java
@@ -1,6 +1,7 @@
package com.product.file.service;
import cn.hutool.core.io.FileUtil;
+import com.product.file.util.MergeWordDocuments;
import org.apache.xmlbeans.XmlOptions;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBody;
@@ -23,7 +24,7 @@
if (srcDocxs.size() > 1) {
file = srcDocxs.get(0);
for (int i = 1; i < srcDocxs.size(); i++) {
- file = com.product.file.util.FileUtil.mergeFile(file, srcDocxs.get(i));
+ file = MergeWordDocuments.mergeFile(file, srcDocxs.get(i));
}
File file1 = new File(tempFilePath);
FileUtil.copyFile(file, file1);
diff --git a/src/main/java/com/product/file/util/FileUtil.java b/src/main/java/com/product/file/util/FileUtil.java
index 1b1e553..ea85a09 100644
--- a/src/main/java/com/product/file/util/FileUtil.java
+++ b/src/main/java/com/product/file/util/FileUtil.java
@@ -3,8 +3,6 @@
import cn.hutool.core.lang.UUID;
import com.aspose.words.Document;
import com.aspose.words.SaveFormat;
-import com.deepoove.poi.XWPFTemplate;
-import com.deepoove.poi.xwpf.NiceXWPFDocument;
import com.google.common.collect.Maps;
import com.product.common.lang.StringUtils;
import com.product.core.config.Global;
@@ -16,7 +14,6 @@
import java.io.*;
import java.util.List;
import java.util.Map;
-import java.util.Properties;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@@ -31,6 +28,10 @@
public class FileUtil {
private FileUtil() {
+ }
+
+ public static void main(String[] args) {
+ System.out.println(FileUtil.checkDocType(new File("D:\\downloads\\鍏充簬鍗忚皟瑙e喅瑗垮畞涓囪揪鍦颁骇缃笟鏈夐檺鍏徃鍟嗗搧鎴块鍞祫閲戠洃绠¤处鎴峰喕缁撶浉鍏抽棶棰� (1).doc")));
}
public static String checkDocType(File file) {
@@ -78,38 +79,7 @@
* @return
*/
public static File mergeFile(File source, File target) throws Exception {
- if ("doc".equals(FileUtil.checkDocType(source))) {
- source = toDocx(source);
- }
- boolean delTarget = false;
- if ("doc".equals(FileUtil.checkDocType(target))) {
- target = toDocx(target);
- delTarget = true;
- }
- XWPFTemplate template = XWPFTemplate.compile(source);
- NiceXWPFDocument xwpfDocument = template.getXWPFDocument();
- try {
- NiceXWPFDocument sub = new NiceXWPFDocument(new FileInputStream((target)));
- NiceXWPFDocument newDoc = xwpfDocument.merge(sub);
- String tempFile = Global.getSystemConfig("temp.dir", "./attachment/temp") + File.separator + UUID.randomUUID() + ".docx";
- try (FileOutputStream out = new FileOutputStream(tempFile)) {
- newDoc.write(out);
- newDoc.close();
- return new File(tempFile);
- } catch (IOException e) {
- throw e;
- } finally {
- if (delTarget) {
- target.delete();
- }
- newDoc.close();
- sub.close();
- }
- } catch (IOException e) {
- throw e;
- } catch (Exception e) {
- throw e;
- }
+ return MergeWordDocuments.mergeFile(source, target);
}
public static File toDocx(File file) {
diff --git a/src/main/java/com/product/file/util/MergeWordDocuments.java b/src/main/java/com/product/file/util/MergeWordDocuments.java
new file mode 100644
index 0000000..ae56132
--- /dev/null
+++ b/src/main/java/com/product/file/util/MergeWordDocuments.java
@@ -0,0 +1,52 @@
+package com.product.file.util;
+
+import cn.hutool.core.lang.UUID;
+import com.product.core.config.Global;
+import com.spire.doc.*;
+
+import java.io.*;
+
+public class MergeWordDocuments {
+
+ public static File mergeFile(File source, File target) throws Exception {
+ if ("doc".equals(FileUtil.checkDocType(source))) {
+ source = FileUtil.toDocx(source);
+ }
+ boolean delTarget = false;
+ if ("doc".equals(FileUtil.checkDocType(target))) {
+ target = FileUtil.toDocx(target);
+ delTarget = true;
+ }
+ try (InputStream sourceIn = new FileInputStream(source); InputStream targetIn = new FileInputStream(target)) {
+ Document sourceDoc = new Document(sourceIn);
+ Document targetDoc = new Document(targetIn);
+ for (Object section : targetDoc.getSections()) {
+ Section sec = (Section) section;
+ for (Object docObj : sec.getBody().getChildObjects()) {
+ DocumentObject obj = (DocumentObject) docObj;
+ Section lastSection = sourceDoc.getLastSection();
+ Body body = lastSection.getBody();
+ body.getChildObjects().add(obj.deepClone());
+ }
+
+ }
+// doc.insertTextFromStream(targetIn, com.spire.doc.FileFormat.Docx);
+ String tempFile = Global.getSystemConfig("temp.dir", "./attachment/temp") + File.separator + UUID.randomUUID() + ".docx";
+ try (FileOutputStream out = new FileOutputStream(tempFile)) {
+ sourceDoc.saveToStream(out, FileFormat.Docx);
+ return new File(tempFile);
+ } catch (IOException e) {
+ throw e;
+ } finally {
+ if (delTarget) {
+ target.delete();
+ }
+// doc.close();
+ }
+ } catch (IOException e) {
+ throw e;
+ } catch (Exception e) {
+ throw e;
+ }
+ }
+}
--
Gitblit v1.9.2