diff --git a/jodconverter-web/pom.xml b/jodconverter-web/pom.xml
index 86e1e8a0..86968b1b 100644
--- a/jodconverter-web/pom.xml
+++ b/jodconverter-web/pom.xml
@@ -114,6 +114,12 @@
junrar
4.0.0
+
+
+ org.tukaani
+ xz
+ 1.8
+
net.sourceforge.jchardet
jchardet
diff --git a/jodconverter-web/src/main/java/cn/keking/service/impl/CompressFilePreviewImpl.java b/jodconverter-web/src/main/java/cn/keking/service/impl/CompressFilePreviewImpl.java
index fdca2540..1a7f7033 100644
--- a/jodconverter-web/src/main/java/cn/keking/service/impl/CompressFilePreviewImpl.java
+++ b/jodconverter-web/src/main/java/cn/keking/service/impl/CompressFilePreviewImpl.java
@@ -47,6 +47,8 @@ public class CompressFilePreviewImpl implements FilePreview{
fileTree = zipReader.readZipFile(filePath, fileName);
} else if ("rar".equalsIgnoreCase(suffix)) {
fileTree = zipReader.unRar(filePath, fileName);
+ } else if ("7z".equalsIgnoreCase(suffix)) {
+ fileTree = zipReader.read7zFile(filePath, fileName);
}
if (fileTree != null && !"null".equals(fileTree)) {
fileUtils.addConvertedFile(fileName, fileTree);
diff --git a/jodconverter-web/src/main/java/cn/keking/utils/ZipReader.java b/jodconverter-web/src/main/java/cn/keking/utils/ZipReader.java
index 7eef140a..9dc78b98 100644
--- a/jodconverter-web/src/main/java/cn/keking/utils/ZipReader.java
+++ b/jodconverter-web/src/main/java/cn/keking/utils/ZipReader.java
@@ -9,6 +9,8 @@ import com.github.junrar.exception.RarException;
import com.github.junrar.rarfile.FileHeader;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
+import org.apache.commons.compress.archivers.sevenz.SevenZArchiveEntry;
+import org.apache.commons.compress.archivers.sevenz.SevenZFile;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipFile;
import org.springframework.beans.factory.annotation.Autowired;
@@ -160,6 +162,71 @@ public class ZipReader {
return null;
}
+ /**
+ * 解压7z文件
+ * @param filePath
+ * @param fileKey
+ * @return
+ */
+ public String read7zFile(String filePath,String fileKey) {
+ String archiveSeparator = "/";
+ Map appender = Maps.newHashMap();
+ List imgUrls=Lists.newArrayList();
+ String baseUrl= (String) RequestContextHolder.currentRequestAttributes().getAttribute("baseUrl",0);
+ String archiveFileName = fileUtils.getFileNameFromPath(filePath);
+ try {
+ SevenZFile zipFile = new SevenZFile(new File(filePath));
+ Iterable entries = zipFile.getEntries();
+ // 排序
+ Enumeration newEntries = sortSevenZEntries(entries);
+ List