mirror of
https://gitee.com/kekingcn/file-online-preview.git
synced 2026-04-04 07:26:12 +00:00
新功能点:支持全局水印
This commit is contained in:
@@ -15,8 +15,8 @@ spring.freemarker.suffix = .ftl
|
|||||||
|
|
||||||
server.tomcat.uri-encoding = UTF-8
|
server.tomcat.uri-encoding = UTF-8
|
||||||
#文件上传限制
|
#文件上传限制
|
||||||
spring.http.multipart.max-request-size=100MB
|
spring.http.multipart.max-request-size=500MB
|
||||||
spring.http.multipart.max-file-size=100MB
|
spring.http.multipart.max-file-size=500MB
|
||||||
|
|
||||||
#文件资源路径(默认为打包根路径下的file目录下)
|
#文件资源路径(默认为打包根路径下的file目录下)
|
||||||
#file.dir = D:\\kkFileview\\
|
#file.dir = D:\\kkFileview\\
|
||||||
@@ -60,3 +60,25 @@ ftp.username = ${KK_FTP_USERNAME:ftpuser}
|
|||||||
ftp.password = ${KK_FTP_PASSWORD:123456}
|
ftp.password = ${KK_FTP_PASSWORD:123456}
|
||||||
#预览源为FTP时, FTP连接默认ControlEncoding(根据FTP服务器操作系统选择,Linux一般为UTF-8,Windows一般为GBK),可在ftp url后面加参数ftp.control.encoding=UTF-8指定,不指定默认用配置的
|
#预览源为FTP时, FTP连接默认ControlEncoding(根据FTP服务器操作系统选择,Linux一般为UTF-8,Windows一般为GBK),可在ftp url后面加参数ftp.control.encoding=UTF-8指定,不指定默认用配置的
|
||||||
ftp.control.encoding = ${KK_FTP_CONTROL_ENCODING:UTF-8}
|
ftp.control.encoding = ${KK_FTP_CONTROL_ENCODING:UTF-8}
|
||||||
|
|
||||||
|
#水印内容
|
||||||
|
#例:watermark.txt = ${WATERMARK_TXT:凯京科技内部文件,严禁外泄}
|
||||||
|
watermark.txt = ${WATERMARK_TXT:}
|
||||||
|
#水印x轴间隔
|
||||||
|
watermark.x.space = ${WATERMARK_X_SPACE:10}
|
||||||
|
#水印y轴间隔
|
||||||
|
watermark.y.space = ${WATERMARK_Y_SPACE:10}
|
||||||
|
#水印字体
|
||||||
|
watermark.font = ${WATERMARK_FONT:微软雅黑}
|
||||||
|
#水印字体大小
|
||||||
|
watermark.fontsize = ${WATERMARK_FONTSIZE:18px}
|
||||||
|
#水印字体颜色
|
||||||
|
watermark.color = ${WATERMARK_COLOR:black}
|
||||||
|
#水印透明度,要求设置在大于等于0.005,小于1
|
||||||
|
watermark.alpha = ${WATERMARK_ALPHA:0.2}
|
||||||
|
#水印宽度
|
||||||
|
watermark.width = ${WATERMARK_WIDTH:240}
|
||||||
|
#水印高度
|
||||||
|
watermark.height = ${WATERMARK_HEIGHT:80}
|
||||||
|
#水印倾斜度数,要求设置在大于等于0,小于90
|
||||||
|
watermark.angle = ${WATERMARK_ANGLE:10}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package cn.keking.config;
|
package cn.keking.config;
|
||||||
|
|
||||||
import cn.keking.service.impl.OfficeFilePreviewImpl;
|
|
||||||
import org.artofsolving.jodconverter.office.OfficeUtils;
|
import org.artofsolving.jodconverter.office.OfficeUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -70,6 +69,7 @@ public class ConfigRefreshComponent {
|
|||||||
ConfigConstants.setFtpControlEncoding(ftpControlEncoding);
|
ConfigConstants.setFtpControlEncoding(ftpControlEncoding);
|
||||||
ConfigConstants.setBaseUrl(baseUrl);
|
ConfigConstants.setBaseUrl(baseUrl);
|
||||||
ConfigConstants.setTrustHost(trustHost);
|
ConfigConstants.setTrustHost(trustHost);
|
||||||
|
setWatermarkConfig(properties);
|
||||||
bufferedReader.close();
|
bufferedReader.close();
|
||||||
fileReader.close();
|
fileReader.close();
|
||||||
Thread.sleep(1000L);
|
Thread.sleep(1000L);
|
||||||
@@ -78,5 +78,29 @@ public class ConfigRefreshComponent {
|
|||||||
LOGGER.error("读取配置文件异常", e);
|
LOGGER.error("读取配置文件异常", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setWatermarkConfig(Properties properties) {
|
||||||
|
String watermarkTxt = properties.getProperty("watermark.txt", WatermarkConfigConstants.DEFAULT_WATERMARK_TXT);
|
||||||
|
String watermarkXSpace = properties.getProperty("watermark.x.space", WatermarkConfigConstants.DEFAULT_WATERMARK_X_SPACE);
|
||||||
|
String watermarkYSpace = properties.getProperty("watermark.y.space", WatermarkConfigConstants.DEFAULT_WATERMARK_Y_SPACE);
|
||||||
|
String watermarkFont = properties.getProperty("watermark.font", WatermarkConfigConstants.DEFAULT_WATERMARK_FONT);
|
||||||
|
String watermarkFontsize = properties.getProperty("watermark.fontsize", WatermarkConfigConstants.DEFAULT_WATERMARK_FONTSIZE);
|
||||||
|
String watermarkColor = properties.getProperty("watermark.color", WatermarkConfigConstants.DEFAULT_WATERMARK_COLOR);
|
||||||
|
String watermarkAlpha = properties.getProperty("watermark.alpha", WatermarkConfigConstants.DEFAULT_WATERMARK_ALPHA);
|
||||||
|
String watermarkWidth = properties.getProperty("watermark.width", WatermarkConfigConstants.DEFAULT_WATERMARK_WIDTH);
|
||||||
|
String watermarkHeight = properties.getProperty("watermark.height", WatermarkConfigConstants.DEFAULT_WATERMARK_HEIGHT);
|
||||||
|
String watermarkAngle = properties.getProperty("watermark.angle", WatermarkConfigConstants.DEFAULT_WATERMARK_ANGLE);
|
||||||
|
WatermarkConfigConstants.setWatermarkTxtValue(watermarkTxt);
|
||||||
|
WatermarkConfigConstants.setWatermarkXSpaceValue(watermarkXSpace);
|
||||||
|
WatermarkConfigConstants.setWatermarkYSpaceValue(watermarkYSpace);
|
||||||
|
WatermarkConfigConstants.setWatermarkFontValue(watermarkFont);
|
||||||
|
WatermarkConfigConstants.setWatermarkFontsizeValue(watermarkFontsize);
|
||||||
|
WatermarkConfigConstants.setWatermarkColorValue(watermarkColor);
|
||||||
|
WatermarkConfigConstants.setWatermarkAlphaValue(watermarkAlpha);
|
||||||
|
WatermarkConfigConstants.setWatermarkWidthValue(watermarkWidth);
|
||||||
|
WatermarkConfigConstants.setWatermarkHeightValue(watermarkHeight);
|
||||||
|
WatermarkConfigConstants.setWatermarkAngleValue(watermarkAngle);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,164 @@
|
|||||||
|
package cn.keking.config;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author chenjh
|
||||||
|
* @since 2020/5/13 17:44
|
||||||
|
*/
|
||||||
|
public class WatermarkConfigConstants {
|
||||||
|
|
||||||
|
private static String WATERMARK_TXT;
|
||||||
|
private static String WATERMARK_X_SPACE;
|
||||||
|
private static String WATERMARK_Y_SPACE;
|
||||||
|
private static String WATERMARK_FONT;
|
||||||
|
private static String WATERMARK_FONTSIZE;
|
||||||
|
private static String WATERMARK_COLOR;
|
||||||
|
private static String WATERMARK_ALPHA;
|
||||||
|
private static String WATERMARK_WIDTH;
|
||||||
|
private static String WATERMARK_HEIGHT;
|
||||||
|
private static String WATERMARK_ANGLE;
|
||||||
|
|
||||||
|
public static String DEFAULT_WATERMARK_TXT = "";
|
||||||
|
public static String DEFAULT_WATERMARK_X_SPACE = "10";
|
||||||
|
public static String DEFAULT_WATERMARK_Y_SPACE = "10";
|
||||||
|
public static String DEFAULT_WATERMARK_FONT = "微软雅黑";
|
||||||
|
public static String DEFAULT_WATERMARK_FONTSIZE = "18px";
|
||||||
|
public static String DEFAULT_WATERMARK_COLOR = "black";
|
||||||
|
public static String DEFAULT_WATERMARK_ALPHA = "0.2";
|
||||||
|
public static String DEFAULT_WATERMARK_WIDTH = "240";
|
||||||
|
public static String DEFAULT_WATERMARK_HEIGHT = "80";
|
||||||
|
public static String DEFAULT_WATERMARK_ANGLE = "10";
|
||||||
|
|
||||||
|
public static String getWatermarkTxt() {
|
||||||
|
return WATERMARK_TXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setWatermarkTxtValue(String watermarkTxt) {
|
||||||
|
WATERMARK_TXT = watermarkTxt;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Value("${watermark.txt:}")
|
||||||
|
public void setWatermarkTxt(String watermarkTxt) {
|
||||||
|
setWatermarkTxtValue(watermarkTxt);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getWatermarkXSpace() {
|
||||||
|
return WATERMARK_X_SPACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setWatermarkXSpaceValue(String watermarkXSpace) {
|
||||||
|
WATERMARK_X_SPACE = watermarkXSpace;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Value("${watermark.x.space:10}")
|
||||||
|
public void setWatermarkXSpace(String watermarkXSpace) {
|
||||||
|
setWatermarkXSpaceValue(watermarkXSpace);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getWatermarkYSpace() {
|
||||||
|
return WATERMARK_Y_SPACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setWatermarkYSpaceValue(String watermarkYSpace) {
|
||||||
|
WATERMARK_Y_SPACE = watermarkYSpace;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Value("${watermark.y.space:10}")
|
||||||
|
public void setWatermarkYSpace(String watermarkYSpace) {
|
||||||
|
setWatermarkYSpaceValue(watermarkYSpace);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getWatermarkFont() {
|
||||||
|
return WATERMARK_FONT;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setWatermarkFontValue(String watermarkFont) {
|
||||||
|
WATERMARK_FONT = watermarkFont;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Value("${watermark.font:微软雅黑}")
|
||||||
|
public void setWatermarkFont(String watermarkFont) {
|
||||||
|
setWatermarkFontValue(watermarkFont);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getWatermarkFontsize() {
|
||||||
|
return WATERMARK_FONTSIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setWatermarkFontsizeValue(String watermarkFontsize) {
|
||||||
|
WATERMARK_FONTSIZE = watermarkFontsize;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Value("${watermark.fontsize:18px}")
|
||||||
|
public void setWatermarkFontsize(String watermarkFontsize) {
|
||||||
|
setWatermarkFontsizeValue(watermarkFontsize);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getWatermarkColor() {
|
||||||
|
return WATERMARK_COLOR;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setWatermarkColorValue(String watermarkColor) {
|
||||||
|
WATERMARK_COLOR = watermarkColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Value("${watermark.color:black}")
|
||||||
|
public void setWatermarkColor(String watermarkColor) {
|
||||||
|
setWatermarkColorValue(watermarkColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getWatermarkAlpha() {
|
||||||
|
return WATERMARK_ALPHA;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setWatermarkAlphaValue(String watermarkAlpha) {
|
||||||
|
WATERMARK_ALPHA = watermarkAlpha;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Value("${watermark.alpha:0.2}")
|
||||||
|
public void setWatermarkAlpha(String watermarkAlpha) {
|
||||||
|
setWatermarkAlphaValue(watermarkAlpha);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getWatermarkWidth() {
|
||||||
|
return WATERMARK_WIDTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setWatermarkWidthValue(String watermarkWidth) {
|
||||||
|
WATERMARK_WIDTH = watermarkWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Value("${watermark.width:240}")
|
||||||
|
public void setWatermarkWidth(String watermarkWidth) {
|
||||||
|
WATERMARK_WIDTH = watermarkWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getWatermarkHeight() {
|
||||||
|
return WATERMARK_HEIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setWatermarkHeightValue(String watermarkHeight) {
|
||||||
|
WATERMARK_HEIGHT = watermarkHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Value("${watermark.height:80}")
|
||||||
|
public void setWatermarkHeight(String watermarkHeight) {
|
||||||
|
WATERMARK_HEIGHT = watermarkHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getWatermarkAngle() {
|
||||||
|
return WATERMARK_ANGLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setWatermarkAngleValue(String watermarkAngle) {
|
||||||
|
WATERMARK_ANGLE = watermarkAngle;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Value("${watermark.angle:10}")
|
||||||
|
public void setWatermarkAngle(String watermarkAngle) {
|
||||||
|
WATERMARK_ANGLE = watermarkAngle;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -8,7 +8,7 @@ import cn.keking.utils.CadToPdf;
|
|||||||
import cn.keking.utils.DownloadUtils;
|
import cn.keking.utils.DownloadUtils;
|
||||||
import cn.keking.utils.FileUtils;
|
import cn.keking.utils.FileUtils;
|
||||||
import cn.keking.utils.PdfUtils;
|
import cn.keking.utils.PdfUtils;
|
||||||
import cn.keking.web.filter.ChinesePathFilter;
|
import cn.keking.web.filter.BaseUrlFilter;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.ui.Model;
|
import org.springframework.ui.Model;
|
||||||
@@ -45,7 +45,7 @@ public class CadFilePreviewImpl implements FilePreview {
|
|||||||
public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) {
|
public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) {
|
||||||
// 预览Type,参数传了就取参数的,没传取系统默认
|
// 预览Type,参数传了就取参数的,没传取系统默认
|
||||||
String officePreviewType = model.asMap().get("officePreviewType") == null ? ConfigConstants.getOfficePreviewType() : model.asMap().get("officePreviewType").toString();
|
String officePreviewType = model.asMap().get("officePreviewType") == null ? ConfigConstants.getOfficePreviewType() : model.asMap().get("officePreviewType").toString();
|
||||||
String baseUrl = ChinesePathFilter.getBaseUrl();
|
String baseUrl = BaseUrlFilter.getBaseUrl();
|
||||||
String suffix=fileAttribute.getSuffix();
|
String suffix=fileAttribute.getSuffix();
|
||||||
String fileName=fileAttribute.getName();
|
String fileName=fileAttribute.getName();
|
||||||
String pdfName = fileName.substring(0, fileName.lastIndexOf(".") + 1) + "pdf";
|
String pdfName = fileName.substring(0, fileName.lastIndexOf(".") + 1) + "pdf";
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import cn.keking.utils.DownloadUtils;
|
|||||||
import cn.keking.utils.FileUtils;
|
import cn.keking.utils.FileUtils;
|
||||||
import cn.keking.utils.OfficeToPdf;
|
import cn.keking.utils.OfficeToPdf;
|
||||||
import cn.keking.utils.PdfUtils;
|
import cn.keking.utils.PdfUtils;
|
||||||
import cn.keking.web.filter.ChinesePathFilter;
|
import cn.keking.web.filter.BaseUrlFilter;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.ui.Model;
|
import org.springframework.ui.Model;
|
||||||
@@ -45,7 +45,7 @@ public class OfficeFilePreviewImpl implements FilePreview {
|
|||||||
public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) {
|
public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) {
|
||||||
// 预览Type,参数传了就取参数的,没传取系统默认
|
// 预览Type,参数传了就取参数的,没传取系统默认
|
||||||
String officePreviewType = model.asMap().get("officePreviewType") == null ? ConfigConstants.getOfficePreviewType() : model.asMap().get("officePreviewType").toString();
|
String officePreviewType = model.asMap().get("officePreviewType") == null ? ConfigConstants.getOfficePreviewType() : model.asMap().get("officePreviewType").toString();
|
||||||
String baseUrl = ChinesePathFilter.getBaseUrl();
|
String baseUrl = BaseUrlFilter.getBaseUrl();
|
||||||
String suffix=fileAttribute.getSuffix();
|
String suffix=fileAttribute.getSuffix();
|
||||||
String fileName=fileAttribute.getName();
|
String fileName=fileAttribute.getName();
|
||||||
boolean isHtml = suffix.equalsIgnoreCase("xls") || suffix.equalsIgnoreCase("xlsx");
|
boolean isHtml = suffix.equalsIgnoreCase("xls") || suffix.equalsIgnoreCase("xlsx");
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import cn.keking.service.FilePreview;
|
|||||||
import cn.keking.utils.DownloadUtils;
|
import cn.keking.utils.DownloadUtils;
|
||||||
import cn.keking.utils.FileUtils;
|
import cn.keking.utils.FileUtils;
|
||||||
import cn.keking.utils.PdfUtils;
|
import cn.keking.utils.PdfUtils;
|
||||||
import cn.keking.web.filter.ChinesePathFilter;
|
import cn.keking.web.filter.BaseUrlFilter;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.ui.Model;
|
import org.springframework.ui.Model;
|
||||||
@@ -38,7 +38,7 @@ public class PdfFilePreviewImpl implements FilePreview{
|
|||||||
String suffix=fileAttribute.getSuffix();
|
String suffix=fileAttribute.getSuffix();
|
||||||
String fileName=fileAttribute.getName();
|
String fileName=fileAttribute.getName();
|
||||||
String officePreviewType = model.asMap().get("officePreviewType") == null ? ConfigConstants.getOfficePreviewType() : model.asMap().get("officePreviewType").toString();
|
String officePreviewType = model.asMap().get("officePreviewType") == null ? ConfigConstants.getOfficePreviewType() : model.asMap().get("officePreviewType").toString();
|
||||||
String baseUrl = ChinesePathFilter.getBaseUrl();
|
String baseUrl = BaseUrlFilter.getBaseUrl();
|
||||||
model.addAttribute("pdfUrl", url);
|
model.addAttribute("pdfUrl", url);
|
||||||
String pdfName = fileName.substring(0, fileName.lastIndexOf(".") + 1) + "pdf";
|
String pdfName = fileName.substring(0, fileName.lastIndexOf(".") + 1) + "pdf";
|
||||||
String outFilePath = fileDir + pdfName;
|
String outFilePath = fileDir + pdfName;
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ public class SimTextFilePreviewImpl implements FilePreview{
|
|||||||
model.addAttribute("fileType",fileAttribute.getSuffix());
|
model.addAttribute("fileType",fileAttribute.getSuffix());
|
||||||
return "fileNotSupported";
|
return "fileNotSupported";
|
||||||
}
|
}
|
||||||
model.addAttribute("ordinaryUrl", response.getMsg() + ".txt");
|
model.addAttribute("ordinaryUrl", response.getMsg());
|
||||||
return "txt";
|
return "txt";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -251,7 +251,7 @@ public class FileUtils {
|
|||||||
// 添加sheet控制头
|
// 添加sheet控制头
|
||||||
sb.append("<script src=\"js/jquery-3.0.0.min.js\" type=\"text/javascript\"></script>");
|
sb.append("<script src=\"js/jquery-3.0.0.min.js\" type=\"text/javascript\"></script>");
|
||||||
sb.append("<script src=\"js/excel.header.js\" type=\"text/javascript\"></script>");
|
sb.append("<script src=\"js/excel.header.js\" type=\"text/javascript\"></script>");
|
||||||
sb.append("<link rel=\"stylesheet\" href=\"css/bootstrap/bootstrap.min.css\">");
|
sb.append("<link rel=\"stylesheet\" href=\"bootstrap/css/bootstrap.min.css\">");
|
||||||
} catch (FileNotFoundException e) {
|
} catch (FileNotFoundException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|||||||
@@ -2,7 +2,8 @@ package cn.keking.utils;
|
|||||||
|
|
||||||
import cn.keking.config.ConfigConstants;
|
import cn.keking.config.ConfigConstants;
|
||||||
import cn.keking.model.FileType;
|
import cn.keking.model.FileType;
|
||||||
import cn.keking.web.filter.ChinesePathFilter;
|
import cn.keking.web.filter.BaseUrlFilter;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.github.junrar.Archive;
|
import com.github.junrar.Archive;
|
||||||
@@ -62,7 +63,7 @@ public class ZipReader {
|
|||||||
String archiveSeparator = "/";
|
String archiveSeparator = "/";
|
||||||
Map<String, FileNode> appender = Maps.newHashMap();
|
Map<String, FileNode> appender = Maps.newHashMap();
|
||||||
List imgUrls=Lists.newArrayList();
|
List imgUrls=Lists.newArrayList();
|
||||||
String baseUrl = ChinesePathFilter.getBaseUrl();
|
String baseUrl = BaseUrlFilter.getBaseUrl();
|
||||||
String archiveFileName = fileUtils.getFileNameFromPath(filePath);
|
String archiveFileName = fileUtils.getFileNameFromPath(filePath);
|
||||||
try {
|
try {
|
||||||
ZipFile zipFile = new ZipFile(filePath, fileUtils.getFileEncodeUTFGBK(filePath));
|
ZipFile zipFile = new ZipFile(filePath, fileUtils.getFileEncodeUTFGBK(filePath));
|
||||||
@@ -120,7 +121,7 @@ public class ZipReader {
|
|||||||
public String unRar(String filePath,String fileKey){
|
public String unRar(String filePath,String fileKey){
|
||||||
Map<String, FileNode> appender = Maps.newHashMap();
|
Map<String, FileNode> appender = Maps.newHashMap();
|
||||||
List imgUrls=Lists.newArrayList();
|
List imgUrls=Lists.newArrayList();
|
||||||
String baseUrl = ChinesePathFilter.getBaseUrl();
|
String baseUrl = BaseUrlFilter.getBaseUrl();
|
||||||
try {
|
try {
|
||||||
Archive archive = new Archive(new FileInputStream(new File(filePath)));
|
Archive archive = new Archive(new FileInputStream(new File(filePath)));
|
||||||
List<FileHeader> headers = archive.getFileHeaders();
|
List<FileHeader> headers = archive.getFileHeaders();
|
||||||
@@ -172,7 +173,7 @@ public class ZipReader {
|
|||||||
String archiveSeparator = "/";
|
String archiveSeparator = "/";
|
||||||
Map<String, FileNode> appender = Maps.newHashMap();
|
Map<String, FileNode> appender = Maps.newHashMap();
|
||||||
List imgUrls=Lists.newArrayList();
|
List imgUrls=Lists.newArrayList();
|
||||||
String baseUrl= ChinesePathFilter.getBaseUrl();
|
String baseUrl= BaseUrlFilter.getBaseUrl();
|
||||||
String archiveFileName = fileUtils.getFileNameFromPath(filePath);
|
String archiveFileName = fileUtils.getFileNameFromPath(filePath);
|
||||||
try {
|
try {
|
||||||
SevenZFile zipFile = new SevenZFile(new File(filePath));
|
SevenZFile zipFile = new SevenZFile(new File(filePath));
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
package cn.keking.web.filter;
|
||||||
|
|
||||||
|
import cn.keking.config.ConfigConstants;
|
||||||
|
import org.springframework.web.context.request.RequestContextHolder;
|
||||||
|
|
||||||
|
import javax.servlet.*;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author chenjh
|
||||||
|
* @since 2020/5/13 18:27
|
||||||
|
*/
|
||||||
|
public class BaseUrlFilter implements Filter {
|
||||||
|
|
||||||
|
private static String BASE_URL;
|
||||||
|
|
||||||
|
public static String getBaseUrl() {
|
||||||
|
String baseUrl;
|
||||||
|
try {
|
||||||
|
baseUrl = (String) RequestContextHolder.currentRequestAttributes().getAttribute("baseUrl",0);
|
||||||
|
} catch (Exception e) {
|
||||||
|
baseUrl = BASE_URL;
|
||||||
|
}
|
||||||
|
return baseUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(FilterConfig filterConfig) throws ServletException {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
|
||||||
|
String baseUrl;
|
||||||
|
StringBuilder pathBuilder = new StringBuilder();
|
||||||
|
pathBuilder.append(request.getScheme()).append("://").append(request.getServerName()).append(":")
|
||||||
|
.append(request.getServerPort()).append(((HttpServletRequest) request).getContextPath()).append("/");
|
||||||
|
String baseUrlTmp = ConfigConstants.getBaseUrl();
|
||||||
|
if (baseUrlTmp != null && !ConfigConstants.DEFAULT_BASE_URL.equals(baseUrlTmp.toLowerCase())) {
|
||||||
|
if (!baseUrlTmp.endsWith("/")) {
|
||||||
|
baseUrlTmp = baseUrlTmp.concat("/");
|
||||||
|
}
|
||||||
|
baseUrl = baseUrlTmp;
|
||||||
|
} else {
|
||||||
|
baseUrl = pathBuilder.toString();
|
||||||
|
}
|
||||||
|
BASE_URL = baseUrl;
|
||||||
|
request.setAttribute("baseUrl", baseUrl);
|
||||||
|
filterChain.doFilter(request, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void destroy() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -38,4 +38,29 @@ public class FilterConfiguration {
|
|||||||
registrationBean.setUrlPatterns(filterUri);
|
registrationBean.setUrlPatterns(filterUri);
|
||||||
return registrationBean;
|
return registrationBean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public FilterRegistrationBean getBaseUrlFilter() {
|
||||||
|
Set<String> filterUri = new HashSet<>();
|
||||||
|
filterUri.add("/index");
|
||||||
|
filterUri.add("/onlinePreview");
|
||||||
|
filterUri.add("/picturesPreview");
|
||||||
|
BaseUrlFilter filter = new BaseUrlFilter();
|
||||||
|
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
|
||||||
|
registrationBean.setFilter(filter);
|
||||||
|
registrationBean.setUrlPatterns(filterUri);
|
||||||
|
return registrationBean;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public FilterRegistrationBean getWatermarkConfigFilter() {
|
||||||
|
Set<String> filterUri = new HashSet<>();
|
||||||
|
filterUri.add("/onlinePreview");
|
||||||
|
filterUri.add("/picturesPreview");
|
||||||
|
WatermarkConfigFilter filter = new WatermarkConfigFilter();
|
||||||
|
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
|
||||||
|
registrationBean.setFilter(filter);
|
||||||
|
registrationBean.setUrlPatterns(filterUri);
|
||||||
|
return registrationBean;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
package cn.keking.web.filter;
|
||||||
|
|
||||||
|
import cn.keking.config.WatermarkConfigConstants;
|
||||||
|
|
||||||
|
import javax.servlet.*;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author chenjh
|
||||||
|
* @since 2020/5/13 18:34
|
||||||
|
*/
|
||||||
|
public class WatermarkConfigFilter implements Filter {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(FilterConfig filterConfig) throws ServletException {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
|
||||||
|
String watermarkTxt = request.getParameter("watermarkTxt");
|
||||||
|
request.setAttribute("watermarkTxt", watermarkTxt != null ? watermarkTxt : WatermarkConfigConstants.getWatermarkTxt());
|
||||||
|
request.setAttribute("watermarkXSpace", WatermarkConfigConstants.getWatermarkXSpace());
|
||||||
|
request.setAttribute("watermarkYSpace", WatermarkConfigConstants.getWatermarkYSpace());
|
||||||
|
request.setAttribute("watermarkFont", WatermarkConfigConstants.getWatermarkFont());
|
||||||
|
request.setAttribute("watermarkFontsize", WatermarkConfigConstants.getWatermarkFontsize());
|
||||||
|
request.setAttribute("watermarkColor", WatermarkConfigConstants.getWatermarkColor());
|
||||||
|
request.setAttribute("watermarkAlpha", WatermarkConfigConstants.getWatermarkAlpha());
|
||||||
|
request.setAttribute("watermarkWidth", WatermarkConfigConstants.getWatermarkWidth());
|
||||||
|
request.setAttribute("watermarkHeight", WatermarkConfigConstants.getWatermarkHeight());
|
||||||
|
request.setAttribute("watermarkAngle", WatermarkConfigConstants.getWatermarkAngle());
|
||||||
|
filterChain.doFilter(request, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void destroy() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
5420
jodconverter-web/src/main/resources/static/bootstrap-table/bootstrap-table-locale-all.js
vendored
Normal file
5420
jodconverter-web/src/main/resources/static/bootstrap-table/bootstrap-table-locale-all.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
10
jodconverter-web/src/main/resources/static/bootstrap-table/bootstrap-table-locale-all.min.js
vendored
Normal file
10
jodconverter-web/src/main/resources/static/bootstrap-table/bootstrap-table-locale-all.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2279
jodconverter-web/src/main/resources/static/bootstrap-table/bootstrap-table-vue.esm.js
vendored
Normal file
2279
jodconverter-web/src/main/resources/static/bootstrap-table/bootstrap-table-vue.esm.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
10
jodconverter-web/src/main/resources/static/bootstrap-table/bootstrap-table-vue.esm.min.js
vendored
Normal file
10
jodconverter-web/src/main/resources/static/bootstrap-table/bootstrap-table-vue.esm.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2287
jodconverter-web/src/main/resources/static/bootstrap-table/bootstrap-table-vue.js
vendored
Normal file
2287
jodconverter-web/src/main/resources/static/bootstrap-table/bootstrap-table-vue.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
10
jodconverter-web/src/main/resources/static/bootstrap-table/bootstrap-table-vue.min.js
vendored
Normal file
10
jodconverter-web/src/main/resources/static/bootstrap-table/bootstrap-table-vue.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
352
jodconverter-web/src/main/resources/static/bootstrap-table/bootstrap-table.css
vendored
Normal file
352
jodconverter-web/src/main/resources/static/bootstrap-table/bootstrap-table.css
vendored
Normal file
@@ -0,0 +1,352 @@
|
|||||||
|
/**
|
||||||
|
* @author zhixin wen <wenzhixin2010@gmail.com>
|
||||||
|
* version: 1.16.0
|
||||||
|
* https://github.com/wenzhixin/bootstrap-table/
|
||||||
|
*/
|
||||||
|
.bootstrap-table .fixed-table-toolbar::after {
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-toolbar .bs-bars,
|
||||||
|
.bootstrap-table .fixed-table-toolbar .search,
|
||||||
|
.bootstrap-table .fixed-table-toolbar .columns {
|
||||||
|
position: relative;
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group {
|
||||||
|
display: inline-block;
|
||||||
|
margin-left: -1px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group > .btn {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group:first-child > .btn {
|
||||||
|
border-top-left-radius: 4px;
|
||||||
|
border-bottom-left-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group:last-child > .btn {
|
||||||
|
border-top-right-radius: 4px;
|
||||||
|
border-bottom-right-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-toolbar .columns .dropdown-menu {
|
||||||
|
text-align: left;
|
||||||
|
max-height: 300px;
|
||||||
|
overflow: auto;
|
||||||
|
-ms-overflow-style: scrollbar;
|
||||||
|
z-index: 1001;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-toolbar .columns label {
|
||||||
|
display: block;
|
||||||
|
padding: 3px 20px;
|
||||||
|
clear: both;
|
||||||
|
font-weight: normal;
|
||||||
|
line-height: 1.428571429;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-toolbar .columns-left {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-toolbar .columns-right {
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-toolbar .pull-right .dropdown-menu {
|
||||||
|
right: 0;
|
||||||
|
left: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container {
|
||||||
|
position: relative;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .table {
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .table th,
|
||||||
|
.bootstrap-table .fixed-table-container .table td {
|
||||||
|
vertical-align: middle;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .table thead th {
|
||||||
|
vertical-align: bottom;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .table thead th:focus {
|
||||||
|
outline: 0 solid transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .table thead th.detail {
|
||||||
|
width: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .table thead th .th-inner {
|
||||||
|
padding: 0.75rem;
|
||||||
|
vertical-align: bottom;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .table thead th .sortable {
|
||||||
|
cursor: pointer;
|
||||||
|
background-position: right;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
padding-right: 30px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .table thead th .both {
|
||||||
|
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC");
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .table thead th .asc {
|
||||||
|
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==");
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .table thead th .desc {
|
||||||
|
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII= ");
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .table tbody tr.selected td {
|
||||||
|
background-color: rgba(0, 0, 0, 0.075);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .table tbody tr.no-records-found td {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .table tbody tr .card-view {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-title {
|
||||||
|
font-weight: bold;
|
||||||
|
display: inline-block;
|
||||||
|
min-width: 30%;
|
||||||
|
text-align: left !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .table .bs-checkbox {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .table .bs-checkbox label {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type="radio"],
|
||||||
|
.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type="checkbox"] {
|
||||||
|
margin: 0 auto !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .table.table-sm .th-inner {
|
||||||
|
padding: 0.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container.fixed-height:not(.has-footer) {
|
||||||
|
border-bottom: 1px solid #dee2e6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container.fixed-height.has-card-view {
|
||||||
|
border-top: 1px solid #dee2e6;
|
||||||
|
border-bottom: 1px solid #dee2e6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container.fixed-height .fixed-table-border {
|
||||||
|
border-left: 1px solid #dee2e6;
|
||||||
|
border-right: 1px solid #dee2e6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container.fixed-height .table thead th {
|
||||||
|
border-bottom: 1px solid #dee2e6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container.fixed-height .table-dark thead th {
|
||||||
|
border-bottom: 1px solid #32383e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .fixed-table-header {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .fixed-table-body {
|
||||||
|
overflow-x: auto;
|
||||||
|
overflow-y: auto;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading {
|
||||||
|
align-items: center;
|
||||||
|
background: #fff;
|
||||||
|
display: none;
|
||||||
|
justify-content: center;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
z-index: 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap {
|
||||||
|
align-items: baseline;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .loading-text {
|
||||||
|
font-size: 2rem;
|
||||||
|
margin-right: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap {
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot,
|
||||||
|
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after,
|
||||||
|
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::before {
|
||||||
|
content: "";
|
||||||
|
animation-duration: 1.5s;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-name: LOADING;
|
||||||
|
background: #212529;
|
||||||
|
border-radius: 50%;
|
||||||
|
display: block;
|
||||||
|
height: 5px;
|
||||||
|
margin: 0 4px;
|
||||||
|
opacity: 0;
|
||||||
|
width: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot {
|
||||||
|
animation-delay: 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after {
|
||||||
|
animation-delay: 0.6s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark {
|
||||||
|
background: #212529;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-dot,
|
||||||
|
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::after,
|
||||||
|
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::before {
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-container .fixed-table-footer {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-pagination::after {
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-pagination > .pagination-detail,
|
||||||
|
.bootstrap-table .fixed-table-pagination > .pagination {
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-pagination > .pagination-detail .pagination-info {
|
||||||
|
line-height: 34px;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-pagination > .pagination-detail .page-list {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-pagination > .pagination-detail .page-list .btn-group {
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-pagination > .pagination-detail .page-list .btn-group .dropdown-menu {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-pagination > .pagination ul.pagination {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-pagination > .pagination ul.pagination a {
|
||||||
|
padding: 6px 12px;
|
||||||
|
line-height: 1.428571429;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-pagination > .pagination ul.pagination li.page-intermediate a {
|
||||||
|
color: #c8c8c8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-pagination > .pagination ul.pagination li.page-intermediate a::before {
|
||||||
|
content: '\2B05';
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-pagination > .pagination ul.pagination li.page-intermediate a::after {
|
||||||
|
content: '\27A1';
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table .fixed-table-pagination > .pagination ul.pagination li.disabled a {
|
||||||
|
pointer-events: none;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bootstrap-table.fullscreen {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
z-index: 1050;
|
||||||
|
width: 100% !important;
|
||||||
|
background: #fff;
|
||||||
|
height: calc(100vh);
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* calculate scrollbar width */
|
||||||
|
div.fixed-table-scroll-inner {
|
||||||
|
width: 100%;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.fixed-table-scroll-outer {
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
visibility: hidden;
|
||||||
|
width: 200px;
|
||||||
|
height: 150px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes LOADING {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
7212
jodconverter-web/src/main/resources/static/bootstrap-table/bootstrap-table.js
vendored
Normal file
7212
jodconverter-web/src/main/resources/static/bootstrap-table/bootstrap-table.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
10
jodconverter-web/src/main/resources/static/bootstrap-table/bootstrap-table.min.css
vendored
Normal file
10
jodconverter-web/src/main/resources/static/bootstrap-table/bootstrap-table.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
10
jodconverter-web/src/main/resources/static/bootstrap-table/bootstrap-table.min.js
vendored
Normal file
10
jodconverter-web/src/main/resources/static/bootstrap-table/bootstrap-table.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
1631
jodconverter-web/src/main/resources/static/bootstrap-table/extensions/addrbar/bootstrap-table-addrbar.js
vendored
Normal file
1631
jodconverter-web/src/main/resources/static/bootstrap-table/extensions/addrbar/bootstrap-table-addrbar.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,12 @@
|
|||||||
|
.table-cell-input {
|
||||||
|
display: block !important;
|
||||||
|
padding: 5px !important;
|
||||||
|
margin: 0 !important;
|
||||||
|
border: 0 !important;
|
||||||
|
width: 100% !important;
|
||||||
|
box-sizing: border-box !important;
|
||||||
|
-moz-box-sizing: border-box !important;
|
||||||
|
border-radius: 0 !important;
|
||||||
|
line-height: 1 !important;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,10 @@
|
|||||||
|
/**
|
||||||
|
* bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation)
|
||||||
|
*
|
||||||
|
* @version v1.16.0
|
||||||
|
* @homepage https://bootstrap-table.com
|
||||||
|
* @author wenzhixin <wenzhixin2010@gmail.com> (http://wenzhixin.net.cn/)
|
||||||
|
* @license MIT
|
||||||
|
*/
|
||||||
|
|
||||||
|
.table-cell-input{display:block!important;padding:5px!important;margin:0!important;border:0!important;width:100%!important;box-sizing:border-box!important;-moz-box-sizing:border-box!important;border-radius:0!important;line-height:1!important;white-space:nowrap}
|
||||||
File diff suppressed because one or more lines are too long
2226
jodconverter-web/src/main/resources/static/bootstrap-table/extensions/cookie/bootstrap-table-cookie.js
vendored
Normal file
2226
jodconverter-web/src/main/resources/static/bootstrap-table/extensions/cookie/bootstrap-table-cookie.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
2668
jodconverter-web/src/main/resources/static/bootstrap-table/extensions/export/bootstrap-table-export.js
vendored
Normal file
2668
jodconverter-web/src/main/resources/static/bootstrap-table/extensions/export/bootstrap-table-export.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,13 @@
|
|||||||
|
@charset "UTF-8";
|
||||||
|
/**
|
||||||
|
* @author: Dennis Hernández
|
||||||
|
* @webSite: http://djhvscf.github.io/Blog
|
||||||
|
* @version: v2.1.1
|
||||||
|
*/
|
||||||
|
.no-filter-control {
|
||||||
|
height: 34px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.filter-control {
|
||||||
|
margin: 0 2px 2px 2px;
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,10 @@
|
|||||||
|
/**
|
||||||
|
* bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation)
|
||||||
|
*
|
||||||
|
* @version v1.16.0
|
||||||
|
* @homepage https://bootstrap-table.com
|
||||||
|
* @author wenzhixin <wenzhixin2010@gmail.com> (http://wenzhixin.net.cn/)
|
||||||
|
* @license MIT
|
||||||
|
*/
|
||||||
|
|
||||||
|
@charset "UTF-8";.no-filter-control{height:34px}.filter-control{margin:0 2px 2px 2px}
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,25 @@
|
|||||||
|
.fixed-columns,
|
||||||
|
.fixed-columns-right {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
height: 100%;
|
||||||
|
background-color: #fff;
|
||||||
|
box-sizing: border-box;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fixed-columns {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fixed-columns .fixed-table-body {
|
||||||
|
overflow: hidden !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fixed-columns-right {
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fixed-columns-right .fixed-table-body {
|
||||||
|
overflow-x: hidden !important;
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,10 @@
|
|||||||
|
/**
|
||||||
|
* bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation)
|
||||||
|
*
|
||||||
|
* @version v1.16.0
|
||||||
|
* @homepage https://bootstrap-table.com
|
||||||
|
* @author wenzhixin <wenzhixin2010@gmail.com> (http://wenzhixin.net.cn/)
|
||||||
|
* @license MIT
|
||||||
|
*/
|
||||||
|
|
||||||
|
.fixed-columns,.fixed-columns-right{position:absolute;top:0;height:100%;background-color:#fff;box-sizing:border-box;z-index:1}.fixed-columns{left:0}.fixed-columns .fixed-table-body{overflow:hidden!important}.fixed-columns-right{right:0}.fixed-columns-right .fixed-table-body{overflow-x:hidden!important}
|
||||||
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user