diff --git a/server/pom.xml b/server/pom.xml
index d0288345..72a1941a 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -260,6 +260,7 @@
javax.media
jai_core
1.1.2-beta
+ system
${basedir}/lib/jai_core-1.1.2-beta.jar
@@ -267,6 +268,7 @@
javax.media
jai_codec
1.1.3
+ system
${basedir}/lib/jai_codec-1.1.3.jar
diff --git a/server/src/main/config/application.properties b/server/src/main/config/application.properties
index 122182e4..e17cadaf 100644
--- a/server/src/main/config/application.properties
+++ b/server/src/main/config/application.properties
@@ -106,3 +106,6 @@ watermark.height = ${WATERMARK_HEIGHT:80}
#水印倾斜度数,要求设置在大于等于0,小于90
watermark.angle = ${WATERMARK_ANGLE:10}
+#Tif类型图片浏览模式:tif(利用前端js插件浏览);jpg(转换为jpg后前端显示);pdf(转换为pdf后显示,便于打印)
+tif.preview.type = ${KK_TIF_PREVIEW_TYPE:tif}
+
diff --git a/server/src/main/java/cn/keking/config/ConfigConstants.java b/server/src/main/java/cn/keking/config/ConfigConstants.java
index cdef9a28..83993082 100644
--- a/server/src/main/java/cn/keking/config/ConfigConstants.java
+++ b/server/src/main/java/cn/keking/config/ConfigConstants.java
@@ -37,6 +37,7 @@ public class ConfigConstants {
private static CopyOnWriteArraySet trustHostSet;
private static String pdfDownloadDisable;
private static Boolean fileUploadDisable;
+ private static String tifPreviewType;
public static final String DEFAULT_CACHE_ENABLED = "true";
public static final String DEFAULT_TXT_TYPE = "txt,html,htm,asp,jsp,xml,json,properties,md,gitignore,log,java,py,c,cpp,sql,sh,bat,m,bas,prg,cmd";
@@ -52,7 +53,7 @@ public class ConfigConstants {
public static final String DEFAULT_TRUST_HOST = "default";
public static final String DEFAULT_PDF_DOWNLOAD_DISABLE = "true";
public static final String DEFAULT_FILE_UPLOAD_DISABLE = "false";
-
+ public static final String DEFAULT_TIF_PREVIEW_TYPE = "jpg";
public static Boolean isCacheEnabled() {
return cacheEnabled;
@@ -284,4 +285,18 @@ public class ConfigConstants {
public static void setFileUploadDisableValue(Boolean fileUploadDisable) {
ConfigConstants.fileUploadDisable = fileUploadDisable;
}
+
+
+ public static String getTifPreviewType() {
+ return tifPreviewType;
+ }
+
+ @Value("${tif.preview.type:tif}")
+ public void setTifPreviewType(String tifPreviewType) {
+ setTifPreviewTypeValue(tifPreviewType);
+ }
+
+ public static void setTifPreviewTypeValue(String tifPreviewType) {
+ ConfigConstants.tifPreviewType = tifPreviewType;
+ }
}
diff --git a/server/src/main/java/cn/keking/config/ConfigRefreshComponent.java b/server/src/main/java/cn/keking/config/ConfigRefreshComponent.java
index 7e53a052..c448aeb8 100644
--- a/server/src/main/java/cn/keking/config/ConfigRefreshComponent.java
+++ b/server/src/main/java/cn/keking/config/ConfigRefreshComponent.java
@@ -49,6 +49,8 @@ public class ConfigRefreshComponent {
String trustHost;
String pdfDownloadDisable;
boolean fileUploadDisable;
+ String tifPreviewType;
+
while (true) {
FileReader fileReader = new FileReader(configFilePath);
BufferedReader bufferedReader = new BufferedReader(fileReader);
@@ -68,6 +70,8 @@ public class ConfigRefreshComponent {
trustHost = properties.getProperty("trust.host", ConfigConstants.DEFAULT_TRUST_HOST);
pdfDownloadDisable = properties.getProperty("pdf.download.disable", ConfigConstants.DEFAULT_PDF_DOWNLOAD_DISABLE);
fileUploadDisable = Boolean.parseBoolean(properties.getProperty("file.upload.disable", ConfigConstants.DEFAULT_FILE_UPLOAD_DISABLE));
+ tifPreviewType = properties.getProperty("tif.preview.type", ConfigConstants.DEFAULT_TIF_PREVIEW_TYPE);
+
ConfigConstants.setCacheEnabledValueValue(cacheEnabled);
ConfigConstants.setSimTextValue(textArray);
ConfigConstants.setMediaValue(mediaArray);
@@ -80,6 +84,7 @@ public class ConfigRefreshComponent {
ConfigConstants.setOfficePreviewSwitchDisabledValue(officePreviewSwitchDisabled);
ConfigConstants.setPdfDownloadDisableValue(pdfDownloadDisable);
ConfigConstants.setFileUploadDisableValue(fileUploadDisable);
+ ConfigConstants.setTifPreviewTypeValue(tifPreviewType);
setWatermarkConfig(properties);
bufferedReader.close();
fileReader.close();
diff --git a/server/src/main/java/cn/keking/service/FilePreview.java b/server/src/main/java/cn/keking/service/FilePreview.java
index eeb1c462..db1743d8 100644
--- a/server/src/main/java/cn/keking/service/FilePreview.java
+++ b/server/src/main/java/cn/keking/service/FilePreview.java
@@ -15,6 +15,7 @@ public interface FilePreview {
String COMPRESS_FILE_PREVIEW_PAGE = "compress";
String MEDIA_FILE_PREVIEW_PAGE = "media";
String PICTURE_FILE_PREVIEW_PAGE = "picture";
+ String TIFF_FILE_PREVIEW_PAGE = "tiff";
String OFD_FILE_PREVIEW_PAGE = "ofd";
String OFFICE_PICTURE_FILE_PREVIEW_PAGE = "officePicture";
String TXT_FILE_PREVIEW_PAGE = "txt";
diff --git a/server/src/main/java/cn/keking/service/impl/TiffFilePreviewImpl.java b/server/src/main/java/cn/keking/service/impl/TiffFilePreviewImpl.java
index ce0799b2..018d675d 100644
--- a/server/src/main/java/cn/keking/service/impl/TiffFilePreviewImpl.java
+++ b/server/src/main/java/cn/keking/service/impl/TiffFilePreviewImpl.java
@@ -7,9 +7,11 @@ import cn.keking.model.ReturnResponse;
import cn.keking.service.FilePreview;
import cn.keking.utils.ConvertPicUtil;
import cn.keking.utils.DownloadUtils;
+import cn.keking.utils.WebUtils;
import cn.keking.web.filter.BaseUrlFilter;
import org.springframework.stereotype.Service;
import org.springframework.ui.Model;
+import org.springframework.util.StringUtils;
import java.io.File;
import java.util.ArrayList;
@@ -25,6 +27,9 @@ import java.util.UUID;
public class TiffFilePreviewImpl implements FilePreview {
private final PictureFilePreviewImpl pictureFilePreview;
+ private static final String INITIALIZE_MEMORY_SIZE = "initializeMemorySize";
+ //默认初始化 50MB 内存
+ private static final long INITIALIZE_MEMORY_SIZE_VALUE_DEFAULT = 1024L * 1024 * 50;
private final String fileDir = ConfigConstants.getFileDir();
@@ -34,55 +39,72 @@ public class TiffFilePreviewImpl implements FilePreview {
@Override
public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) {
- String inputFileName = url.substring(url.lastIndexOf("/") + 1);
- String inputFileExt = inputFileName.substring(inputFileName.lastIndexOf(".") + 1);
- String uuid = UUID.randomUUID().toString().replaceAll("-","");
- String tiffFileName = uuid + "." + inputFileExt;
- ReturnResponse response = DownloadUtils.downLoad(fileAttribute, tiffFileName);
- if (response.isFailure()) {
- return NOT_SUPPORTED_FILE_PAGE;
- }
- String strTiffPath = response.getContent();
+ String tifPreviewType = ConfigConstants.getTifPreviewType();
- File fileTiff = new File(strTiffPath);
+ if("tif".equalsIgnoreCase(tifPreviewType)){
- File fileJpg = ConvertPicUtil.convertPic2Jpg(strTiffPath, fileDir + uuid + ".jpg");
+ pictureFilePreview.filePreviewHandle(url,model,fileAttribute);
+ String fileSize = WebUtils.getUrlParameterReg(url,INITIALIZE_MEMORY_SIZE);
+ if(StringUtils.hasText(fileSize)){
+ model.addAttribute(INITIALIZE_MEMORY_SIZE,fileSize);
+ }else {
+ model.addAttribute(INITIALIZE_MEMORY_SIZE,Long.toString(INITIALIZE_MEMORY_SIZE_VALUE_DEFAULT));
+ }
+ return TIFF_FILE_PREVIEW_PAGE;
- if(fileJpg.exists()){
- // 转换后的tif没用了,可以删掉了
- fileTiff.delete();
+ }else if("jpg".equalsIgnoreCase(tifPreviewType) || "pdf".equalsIgnoreCase(tifPreviewType)){
+ String inputFileName = url.substring(url.lastIndexOf("/") + 1);
+ String inputFileExt = inputFileName.substring(inputFileName.lastIndexOf(".") + 1);
+ String uuid = UUID.randomUUID().toString().replaceAll("-","");
+ String tiffFileName = uuid + "." + inputFileExt;
- String baseUrl = BaseUrlFilter.getBaseUrl();
- if("pdf".equalsIgnoreCase(fileAttribute.getOfficePreviewType())){
- File filePdf = ConvertPicUtil.convertJpg2Pdf(fileDir + uuid + ".jpg", fileDir + uuid + ".pdf");
- if(filePdf.exists()){
- // 转换后的jpg没用了,可以删掉了
- fileJpg.delete();
+ ReturnResponse response = DownloadUtils.downLoad(fileAttribute, tiffFileName);
+ if (response.isFailure()) {
+ return NOT_SUPPORTED_FILE_PAGE;
+ }
+ String strTiffPath = response.getContent();
- String pdfUrl = baseUrl + uuid + ".pdf";
- model.addAttribute("pdfUrl", pdfUrl);
+ File fileTiff = new File(strTiffPath);
- return PDF_FILE_PREVIEW_PAGE;
+ File fileJpg = ConvertPicUtil.convertPic2Jpg(strTiffPath, fileDir + uuid + ".jpg");
+
+ if(fileJpg.exists()){
+ // 转换后的tif没用了,可以删掉了
+ fileTiff.delete();
+
+ String baseUrl = BaseUrlFilter.getBaseUrl();
+ if("pdf".equalsIgnoreCase(tifPreviewType)){
+ File filePdf = ConvertPicUtil.convertJpg2Pdf(fileDir + uuid + ".jpg", fileDir + uuid + ".pdf");
+ if(filePdf.exists()){
+ // 转换后的jpg没用了,可以删掉了
+ fileJpg.delete();
+
+ String pdfUrl = baseUrl + uuid + ".pdf";
+ model.addAttribute("pdfUrl", pdfUrl);
+
+ return PDF_FILE_PREVIEW_PAGE;
+ }
+ }else{
+ String jpgUrl = baseUrl + uuid + ".jpg";
+
+ fileAttribute.setName(uuid + ".jpg");
+ fileAttribute.setType(FileType.PICTURE);
+ fileAttribute.setSuffix("jpg");
+ fileAttribute.setUrl(jpgUrl);
+
+ List imgUrls = new ArrayList<>();
+ imgUrls.add(jpgUrl);
+
+ model.addAttribute("imgUrls", imgUrls);
+ model.addAttribute("currentUrl", jpgUrl);
}
- }else{
- String jpgUrl = baseUrl + uuid + ".jpg";
- fileAttribute.setName(uuid + ".jpg");
- fileAttribute.setType(FileType.PICTURE);
- fileAttribute.setSuffix("jpg");
- fileAttribute.setUrl(jpgUrl);
-
- List imgUrls = new ArrayList<>();
- imgUrls.add(jpgUrl);
-
- model.addAttribute("imgUrls", imgUrls);
- model.addAttribute("currentUrl", jpgUrl);
}
+ return PICTURE_FILE_PREVIEW_PAGE;
}
- return PICTURE_FILE_PREVIEW_PAGE;
-
+ return NOT_SUPPORTED_FILE_PAGE;
}
}