Commit 26e147b4 authored by 陈精华's avatar 陈精华 Committed by kl

更新文档&细节调整

parent c7318c2b
...@@ -26,8 +26,9 @@ URL:[https://kkfileview.keking.cn](https://kkfileview.keking.cn) ...@@ -26,8 +26,9 @@ URL:[https://kkfileview.keking.cn](https://kkfileview.keking.cn)
URL:[https://file.keking.cn](https://file.keking.cn) URL:[https://file.keking.cn](https://file.keking.cn)
### Documentation ### Documentation
1. Full wiki document:https://gitee.com/kekingcn/file-online-preview/wikis/pages
1. 中文文档:https://gitee.com/kekingcn/file-online-preview/blob/master/README.md 1. 中文文档:https://gitee.com/kekingcn/file-online-preview/blob/master/README.md
1. English document:https://github.com/kekingcn/kkFileView/blob/master/README.en.md 1. English document:https://gitee.com/kekingcn/file-online-preview/blob/master/README.en.md
### Contact us && Join us ### Contact us && Join us
> We will answer everyone's questions in use of this project. > We will answer everyone's questions in use of this project.
...@@ -38,20 +39,62 @@ Cherish life away from ineffective communication. ...@@ -38,20 +39,62 @@ Cherish life away from ineffective communication.
QQ group:613025121 QQ group:613025121
### Pictures for some samples ### Pictures for some samples
> Excel #### 1. Text Preview
It supports preview of all types of text documents. Because there are too many types of text documents, it is impossible to enumerate them. The default open types are as follows: txt,html,htm,asp,jsp,xml,json,properties,md,gitignore,log,java,py,c,cpp,sql,sh,bat,m,bas,prg,cmd
![输入图片说明](https://gitee.com/uploads/images/2017/1213/093051_cd55b3ec_492218.png "屏幕截图.png") The text preview effect is as follows
> doc ![text](https://kkfileview.keking.cn/img/preview/preview-text.png)
![输入图片说明](https://gitee.com/uploads/images/2017/1213/092350_5b2ecbe5_492218.png "屏幕截图.png") #### 2. Picture preview
Support jpg, jpeg, png, gif and other picture previews (flip, zoom, mirror). The preview effect is as follows
> zip,rar ![image](https://kkfileview.keking.cn/img/preview/preview-image.png)
![输入图片说明](https://gitee.com/uploads/images/2017/1213/093806_46cede06_492218.png "屏幕截图.png") #### 3. Word document preview
Doc and docx document previews are supported. There are two modes of word previews: one is that each page of word is converted to picture previews, the other is that the whole word document is converted to PDF, and then previews PDF. The applicable scenarios of the two modes are as follows
> png,jpeg,jpg,etc., support for zooming with mouse scroll, rotation, inversion,etc. * Picture preview modes: the word file is large, and the whole PDF loaded in the foreground is too slow
* Pdf Preview modes: intranet access, loading PDF fast
![输入图片说明](https://gitee.com/uploads/images/2017/1213/094335_657a6f60_492218.png "屏幕截图.png") The preview effect of picture preview mode is as follows
![word1](https://kkfileview.keking.cn/img/preview/preview-doc-image.png)
The preview effect of PDF preview mode is as follows
![word2](https://kkfileview.keking.cn/img/preview/preview-doc-pdf.png)
#### 4. PPT document preview
ppt and pptx document preview are supported. Like word documents, there are two preview modes
The preview effect of picture preview mode is as follows
![ppt1](https://kkfileview.keking.cn/img/preview/preview-ppt-image.png)
The preview effect of PDF preview mode is as follows
![ppt2](https://kkfileview.keking.cn/img/preview/preview-ppt-pdf.png)
#### 5. PDF document preview
Pdf document preview is supported. Like word document, there are two preview modes
The preview effect of picture preview mode is as follows
![pdf1](https://kkfileview.keking.cn/img/preview/preview-pdf-image.png)
The preview effect of PDF preview mode is as follows
![pdf2](https://kkfileview.keking.cn/img/preview/preview-pdf-pdf.png)
#### 6. EXCEL document preview
Support XLS, xlsx document preview, the preview effect is as follows
![excel](https://kkfileview.keking.cn/img/preview/preview-xls.png)
#### 7. Compressed file Preview
Support zip, rar, jar, tar, gzip and other compressed packages. The preview effect is as follows
![compress1](https://kkfileview.keking.cn/img/preview/preview-zip.png)
Click the file name in the compressed package to preview the file directly. The preview effect is as follows
![compress2](https://kkfileview.keking.cn/img/preview/preview-zip-inner.png)
#### 8. Multimedia file Preview
Theoretically, all video and audio files are supported. Since all file formats cannot be enumerated, the default open type is as follows
mp3,wav,mp4,flv
The video preview effect is as follows
![media1](https://kkfileview.keking.cn/img/preview/preview-video.png)
The audio preview effect is as follows
![media2](https://kkfileview.keking.cn/img/preview/preview-audio.png)
#### 9. CAD document preview
CAD DWG document preview is supported. Like word document, there are two preview modes
The preview effect of Picture preview mode is as follows
![cad1](https://kkfileview.keking.cn/img/preview/preview-cad-image.png)
The preview effect of PDF preview mode is as follows
![cad2](https://kkfileview.keking.cn/img/preview/preview-cad-pdf.png)
Considering space issues, the pictures of other types of documents will not be shown here.You can deploy it by yourself if you are interested in our project.There is a way to deploy it as below. Considering space issues, the pictures of other types of documents will not be shown here.You can deploy it by yourself if you are interested in our project.There is a way to deploy it as below.
### Quick Start ### Quick Start
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
此项目为文件文档在线预览项目解决方案,对标业内付费产品有【[永中office](http://dcs.yozosoft.com/)】【[office365](http://www.officeweb365.com/)】【[idocv](https://www.idocv.com/)】等,在取得公司高层同意后以Apache协议开源出来反哺社区,在此特别感谢@唐老大的支持以及@端木详笑的贡献。该项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,Excel,pdf,txt,zip,rar,图片等等 此项目为文件文档在线预览项目解决方案,对标业内付费产品有【[永中office](http://dcs.yozosoft.com/)】【[office365](http://www.officeweb365.com/)】【[idocv](https://www.idocv.com/)】等,在取得公司高层同意后以Apache协议开源出来反哺社区,在此特别感谢@唐老大的支持以及@端木详笑的贡献。该项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,Excel,pdf,txt,zip,rar,图片等等
### 项目特性 ### 项目特性
1. 支持office,pdf等办公文档 1. 支持office,pdf, cad等办公文档
1. 支持txt,java,php,py,md,js,css等所有纯文本 1. 支持txt,java,php,py,md,js,css等所有纯文本
1. 支持zip,rar,jar,tar,gzip等压缩包 1. 支持zip,rar,jar,tar,gzip等压缩包
1. 支持jpg,jpeg,png,gif等图片预览(翻转,缩放,镜像) 1. 支持jpg,jpeg,png,gif等图片预览(翻转,缩放,镜像)
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
### 项目文档(Project documentation) ### 项目文档(Project documentation)
1. 详细wiki文档:https://gitee.com/kekingcn/file-online-preview/wikis/pages 1. 详细wiki文档:https://gitee.com/kekingcn/file-online-preview/wikis/pages
1. 中文文档:https://gitee.com/kekingcn/file-online-preview/blob/master/README.md 1. 中文文档:https://gitee.com/kekingcn/file-online-preview/blob/master/README.md
1. English document:https://github.com/kekingcn/kkFileView/blob/master/README.en.md 1. English document:https://gitee.com/kekingcn/file-online-preview/blob/master/README.en.md
### 联系我们,加入组织 ### 联系我们,加入组织
> 我们会用心回答解决大家在项目使用中的问题,也请大家在提问前至少Google或baidu过,珍爱生命远离无效的交流沟通 > 我们会用心回答解决大家在项目使用中的问题,也请大家在提问前至少Google或baidu过,珍爱生命远离无效的交流沟通
...@@ -32,20 +32,62 @@ ...@@ -32,20 +32,62 @@
QQ群号:613025121 QQ群号:613025121
### 文档预览效果 ### 文档预览效果
> Excel预览效果 #### 1. 文本预览
支持所有类型的文本文档预览, 由于文本文档类型过多,无法全部枚举,默认开启的类型如下 txt,html,htm,asp,jsp,xml,json,properties,md,gitignore,log,java,py,c,cpp,sql,sh,bat,m,bas,prg,cmd
![输入图片说明](https://gitee.com/uploads/images/2017/1213/093051_cd55b3ec_492218.png "屏幕截图.png") 文本预览效果如下
> doc预览效果 ![文本预览效果如下](https://kkfileview.keking.cn/img/preview/preview-text.png)
![输入图片说明](https://gitee.com/uploads/images/2017/1213/092350_5b2ecbe5_492218.png "屏幕截图.png") #### 2. 图片预览
支持jpg,jpeg,png,gif等图片预览(翻转,缩放,镜像),预览效果如下
> zip,rar压缩预览效果 ![图片预览](https://kkfileview.keking.cn/img/preview/preview-image.png)
![输入图片说明](https://gitee.com/uploads/images/2017/1213/093806_46cede06_492218.png "屏幕截图.png") #### 3. word文档预览
支持doc,docx文档预览,word预览有两种模式:一种是每页word转为图片预览,另一种是整个word文档转成pdf,再预览pdf。两种模式的适用场景如下
> png,jpeg,jpg等图片预览效果,支持滚轮缩放,旋转,倒置等 * 图片预览:word文件大,前台加载整个pdf过慢
* pdf预览:内网访问,加载pdf快
![输入图片说明](https://gitee.com/uploads/images/2017/1213/094335_657a6f60_492218.png "屏幕截图.png") 图片预览模式预览效果如下
![word文档预览1](https://kkfileview.keking.cn/img/preview/preview-doc-image.png)
pdf预览模式预览效果如下
![word文档预览2](https://kkfileview.keking.cn/img/preview/preview-doc-pdf.png)
#### 4. ppt文档预览
支持ppt,pptx文档预览,和word文档一样,有两种预览模式
图片预览模式预览效果如下
![ppt文档预览1](https://kkfileview.keking.cn/img/preview/preview-ppt-image.png)
pdf预览模式预览效果如下
![ppt文档预览2](https://kkfileview.keking.cn/img/preview/preview-ppt-pdf.png)
#### 5. pdf文档预览
支持pdf文档预览,和word文档一样,有两种预览模式
图片预览模式预览效果如下
![pdf文档预览1](https://kkfileview.keking.cn/img/preview/preview-pdf-image.png)
pdf预览模式预览效果如下
![pdf文档预览2](https://kkfileview.keking.cn/img/preview/preview-pdf-pdf.png)
#### 6. excel文档预览
支持xls,xlsx文档预览,预览效果如下
![excel文档预览](https://kkfileview.keking.cn/img/preview/preview-xls.png)
#### 7. 压缩文件预览
支持zip,rar,jar,tar,gzip等压缩包,预览效果如下
![压缩文件预览1](https://kkfileview.keking.cn/img/preview/preview-zip.png)
可点击压缩包中的文件名,直接预览文件,预览效果如下
![压缩文件预览2](https://kkfileview.keking.cn/img/preview/preview-zip-inner.png)
#### 8. 多媒体文件预览
理论上支持所有的视频、音频文件,由于无法枚举所有文件格式,默认开启的类型如下
mp3,wav,mp4,flv
视频预览效果如下
![多媒体文件预览1](https://kkfileview.keking.cn/img/preview/preview-video.png)
音频预览效果如下
![多媒体文件预览2](https://kkfileview.keking.cn/img/preview/preview-audio.png)
#### 9. CAD文档预览
支持CAD dwg文档预览,和word文档一样,有两种预览模式
图片预览模式预览效果如下
![cad文档预览1](https://kkfileview.keking.cn/img/preview/preview-cad-image.png)
pdf预览模式预览效果如下
![cad文档预览2](https://kkfileview.keking.cn/img/preview/preview-cad-pdf.png)
考虑说明篇幅原因,就不贴其他格式文件的预览效果了,感兴趣的可以参考下面的实例搭建下 考虑说明篇幅原因,就不贴其他格式文件的预览效果了,感兴趣的可以参考下面的实例搭建下
### 快速开始 ### 快速开始
......
...@@ -65,7 +65,8 @@ ftp.control.encoding = ${KK_FTP_CONTROL_ENCODING:UTF-8} ...@@ -65,7 +65,8 @@ ftp.control.encoding = ${KK_FTP_CONTROL_ENCODING:UTF-8}
#水印内容 #水印内容
#例:watermark.txt = ${WATERMARK_TXT:凯京科技内部文件,严禁外泄} #例:watermark.txt = ${WATERMARK_TXT:凯京科技内部文件,严禁外泄}
watermark.txt = ${WATERMARK_TXT:kkFileView文件预览} #如需取消水印,内容设置为空即可,例:watermark.txt = ${WATERMARK_TXT:}
watermark.txt = ${WATERMARK_TXT:}
#水印x轴间隔 #水印x轴间隔
watermark.x.space = ${WATERMARK_X_SPACE:10} watermark.x.space = ${WATERMARK_X_SPACE:10}
#水印y轴间隔 #水印y轴间隔
......
...@@ -21,7 +21,7 @@ public class URLUtil { ...@@ -21,7 +21,7 @@ public class URLUtil {
* @return 标准化后的URL字符串 * @return 标准化后的URL字符串
*/ */
public static String normalize(String url) { public static String normalize(String url) {
return normalize(url, false); return normalize(url, false, false);
} }
/** /**
...@@ -33,10 +33,11 @@ public class URLUtil { ...@@ -33,10 +33,11 @@ public class URLUtil {
* *
* @param url URL字符串 * @param url URL字符串
* @param isEncodeBody 是否对URL中body部分的中文和特殊字符做转义(不包括http:和/) * @param isEncodeBody 是否对URL中body部分的中文和特殊字符做转义(不包括http:和/)
* @param isEncodeParam 是否对URL中参数部分的中文和特殊字符做转义
* @return 标准化后的URL字符串 * @return 标准化后的URL字符串
* @since 4.4.1 * @since 4.4.1
*/ */
public static String normalize(String url, boolean isEncodeBody) { public static String normalize(String url, boolean isEncodeBody, boolean isEncodeParam) {
if (StrUtil.isBlank(url)) { if (StrUtil.isBlank(url)) {
return url; return url;
} }
...@@ -54,7 +55,7 @@ public class URLUtil { ...@@ -54,7 +55,7 @@ public class URLUtil {
final int paramsSepIndex = StrUtil.indexOf(body, '?'); final int paramsSepIndex = StrUtil.indexOf(body, '?');
String params = null; String params = null;
if (paramsSepIndex > 0) { if (paramsSepIndex > 0) {
params = StrUtil.subSuf(body, paramsSepIndex); params = StrUtil.subSuf(body, paramsSepIndex + 1);
body = StrUtil.subPre(body, paramsSepIndex); body = StrUtil.subPre(body, paramsSepIndex);
} }
...@@ -64,6 +65,9 @@ public class URLUtil { ...@@ -64,6 +65,9 @@ public class URLUtil {
body = body.replace("\\", "/").replaceAll("//+", "/"); body = body.replace("\\", "/").replaceAll("//+", "/");
if (isEncodeBody) { if (isEncodeBody) {
body = URLEncoder.DEFAULT.encode(body, StandardCharsets.UTF_8); body = URLEncoder.DEFAULT.encode(body, StandardCharsets.UTF_8);
if (params != null) {
params = "?" + URLEncoder.DEFAULT.encode(params, StandardCharsets.UTF_8);
}
} }
return pre + body + StrUtil.nullToEmpty(params); return pre + body + StrUtil.nullToEmpty(params);
} }
......
...@@ -58,7 +58,7 @@ public class DownloadUtils { ...@@ -58,7 +58,7 @@ public class DownloadUtils {
URL url = new URL(urlStr); URL url = new URL(urlStr);
OutputStream os = new FileOutputStream(new File(realPath)); OutputStream os = new FileOutputStream(new File(realPath));
if (url.getProtocol() != null && url.getProtocol().toLowerCase().startsWith("http")) { if (url.getProtocol() != null && url.getProtocol().toLowerCase().startsWith("http")) {
saveToOutputStreamFormUrl(urlStr, os); saveToOutputStreamFromUrl(urlStr, os);
} else if (url.getProtocol() != null && "ftp".equals(url.getProtocol().toLowerCase())) { } else if (url.getProtocol() != null && "ftp".equals(url.getProtocol().toLowerCase())) {
String ftpUsername = fileUtils.getUrlParameterReg(fileAttribute.getUrl(), URL_PARAM_FTP_USERNAME); String ftpUsername = fileUtils.getUrlParameterReg(fileAttribute.getUrl(), URL_PARAM_FTP_USERNAME);
String ftpPassword = fileUtils.getUrlParameterReg(fileAttribute.getUrl(), URL_PARAM_FTP_PASSWORD); String ftpPassword = fileUtils.getUrlParameterReg(fileAttribute.getUrl(), URL_PARAM_FTP_PASSWORD);
...@@ -88,12 +88,12 @@ public class DownloadUtils { ...@@ -88,12 +88,12 @@ public class DownloadUtils {
} }
} }
public boolean saveToOutputStreamFormUrl(String urlStr, OutputStream os) throws IOException { public boolean saveToOutputStreamFromUrl(String urlStr, OutputStream os) throws IOException {
InputStream is = getInputStreamFromUrl(urlStr); InputStream is = getInputStreamFromUrl(urlStr);
if (is != null) { if (is != null) {
copyStream(is, os); copyStream(is, os);
} else { } else {
urlStr = URLUtil.normalize(urlStr, true); urlStr = URLUtil.normalize(urlStr, true, true);
is = getInputStreamFromUrl(urlStr); is = getInputStreamFromUrl(urlStr);
if (is != null) { if (is != null) {
copyStream(is, os); copyStream(is, os);
......
...@@ -84,7 +84,7 @@ public class OnlinePreviewController { ...@@ -84,7 +84,7 @@ public class OnlinePreviewController {
public void getCorsFile(String urlPath, HttpServletResponse response) { public void getCorsFile(String urlPath, HttpServletResponse response) {
logger.info("下载跨域pdf文件url:{}", urlPath); logger.info("下载跨域pdf文件url:{}", urlPath);
try { try {
downloadUtils.saveToOutputStreamFormUrl(urlPath, response.getOutputStream()); downloadUtils.saveToOutputStreamFromUrl(urlPath, response.getOutputStream());
} catch (IOException e) { } catch (IOException e) {
logger.error("下载跨域pdf文件异常,url:{}", urlPath, e); logger.error("下载跨域pdf文件异常,url:{}", urlPath, e);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment