diff --git a/pom.xml b/pom.xml
index fd882341..5cb4b3be 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
4.1.2-1.5.2
0.3.6-1.5.1
4.2.1-1.5.2
- 2.1.7
+ 5.5.13.3
3.1
1.2
diff --git a/server/pom.xml b/server/pom.xml
index 7d034976..85cea938 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -244,10 +244,10 @@
windows-x86_64
- com.lowagie
- itext
- ${itext.version}
-
+ com.itextpdf
+ itextpdf
+ ${itextpdf.version}
+
javax.media
@@ -338,4 +338,4 @@
-
+
\ No newline at end of file
diff --git a/server/src/main/java/cn/keking/service/CompressFileReader.java b/server/src/main/java/cn/keking/service/CompressFileReader.java
index 7e13fe76..c8226942 100644
--- a/server/src/main/java/cn/keking/service/CompressFileReader.java
+++ b/server/src/main/java/cn/keking/service/CompressFileReader.java
@@ -2,31 +2,22 @@ package cn.keking.service;
import cn.keking.config.ConfigConstants;
import cn.keking.model.FileType;
-import cn.keking.utils.FileHeaderRar;
-import cn.keking.utils.KkFileUtils;
+import cn.keking.utils.RarUtils;
import cn.keking.web.filter.BaseUrlFilter;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.github.junrar.Archive;
-import com.github.junrar.exception.RarException;
-import com.github.junrar.rarfile.FileHeader;
-import net.sf.sevenzipjbinding.*;
+import net.sf.sevenzipjbinding.ExtractOperationResult;
+import net.sf.sevenzipjbinding.IInArchive;
+import net.sf.sevenzipjbinding.SevenZip;
+import net.sf.sevenzipjbinding.SevenZipException;
import net.sf.sevenzipjbinding.impl.RandomAccessFileInStream;
import net.sf.sevenzipjbinding.simple.ISimpleInArchive;
+import net.sf.sevenzipjbinding.simple.ISimpleInArchiveItem;
+import org.apache.commons.io.IOUtils;
import org.springframework.stereotype.Component;
import java.io.*;
-import java.math.BigDecimal;
-import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
-import java.text.CollationKey;
-import java.text.Collator;
-import java.util.*;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
+import java.util.ArrayList;
+import java.util.List;
/**
* @author yudian-it
@@ -34,171 +25,61 @@ import java.util.stream.Collectors;
*/
@Component
public class CompressFileReader {
-
- private static final Pattern pattern = Pattern.compile("^\\d+");
private final FileHandlerService fileHandlerService;
- private final String fileDir = ConfigConstants.getFileDir();
- private final ExecutorService executors = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
-
public CompressFileReader(FileHandlerService fileHandlerService) {
this.fileHandlerService = fileHandlerService;
}
-
- public static byte[] getUTF8BytesFromGBKString(String gbkStr) {
- int n = gbkStr.length();
- byte[] utfBytes = new byte[3 * n];
- int k = 0;
- for (int i = 0; i < n; i++) {
- int m = gbkStr.charAt(i);
- if (m < 128 && m >= 0) {
- utfBytes[k++] = (byte) m;
- continue;
- }
- utfBytes[k++] = (byte) (0xe0 | (m >> 12));
- utfBytes[k++] = (byte) (0x80 | ((m >> 6) & 0x3f));
- utfBytes[k++] = (byte) (0x80 | (m & 0x3f));
- }
- if (k < utfBytes.length) {
- byte[] tmp = new byte[k];
- System.arraycopy(utfBytes, 0, tmp, 0, k);
- return tmp;
- }
- return utfBytes;
- }
-
- public String getUtf8String(String str) {
- if (str != null && str.length() > 0) {
- String needEncodeCode = "ISO-8859-1";
- String neeEncodeCode = "ISO-8859-2";
- String gbkEncodeCode = "GBK";
- try {
- if (Charset.forName(needEncodeCode).newEncoder().canEncode(str)) {
- str = new String(str.getBytes(needEncodeCode), StandardCharsets.UTF_8);
- }
- if (Charset.forName(neeEncodeCode).newEncoder().canEncode(str)) {
- str = new String(str.getBytes(neeEncodeCode), StandardCharsets.UTF_8);
- }
- if (Charset.forName(gbkEncodeCode).newEncoder().canEncode(str)) {
- str = new String(getUTF8BytesFromGBKString(str), StandardCharsets.UTF_8);
- }
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- }
- return str;
- }
- /**
- * 判断是否是中日韩文字
- */
- private static boolean isChinese(char c) {
- Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
- if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
- || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
- || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
- || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
- || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
- || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
- return true;
- }
- return false;
- }
- public static boolean judge(char c){
- if((c >='0' && c<='9')||(c >='a' && c<='z' || c >='A' && c<='Z')){
- return true;
- }
- return false;
- }
- public static boolean isMessyCode(String strName) {
- //去除字符串中的空格 制表符 换行 回车
- Pattern p = Pattern.compile("\\s*|\t*|\r*|\n*");
- Matcher m = p.matcher(strName);
- String after = m.replaceAll("").replaceAll("\\+", "").replaceAll("#", "").replaceAll("&", "");
- //去除字符串中的标点符号
- String temp = after.replaceAll("\\p{P}", "");
- //处理之后转换成字符数组
- char[] ch = temp.trim().toCharArray();
- for (int i = 0; i < ch.length; i++) {
- char c = ch[i];
- //判断是否是数字或者英文字符
- if (!judge(c)) {
- //判断是否是中日韩文
- if (!isChinese(c)) {
- //如果不是数字或者英文字符也不是中日韩文则表示是乱码返回true
- return true;
- }
- }
- }
- //表示不是乱码 返回false
- return false;
- }
-
- public String unRar(String filePath, String fileKey) {
- Map appender = new HashMap<>();
+ public String unRar(String paths, String passWord, String fileName) throws Exception {
List imgUrls = new ArrayList<>();
String baseUrl = BaseUrlFilter.getBaseUrl();
- try {
- List items = getRar4Paths(filePath);
- String archiveFileName = fileHandlerService.getFileNameFromPath(filePath);
- List