Browse Source

Adjusting the home page (#442)

* Add workflow bpmn file preview support

* Adjusting the home page
kl 2 years ago
parent
commit
ca9eefb80b

+ 8 - 6
server/src/main/java/cn/keking/web/controller/IndexController.java

@@ -13,21 +13,23 @@ public class IndexController {
 
     @GetMapping( "/index")
     public String go2Index(){
-        return "index";
+        return "/main/index";
     }
 
     @GetMapping( "/record")
     public String go2Record(){
-        return "record";
+        return "/main/record";
     }
 
-    @GetMapping( "/comment")
-    public String go2Comment(){
-        return "comment";
+    @GetMapping( "/integrated")
+    public String go2Integrated(){
+        return "/main/integrated";
     }
 
     @GetMapping( "/")
     public String root() {
-        return "redirect:/index";
+        return "redirect:/main/index";
     }
+
+
 }

+ 0 - 94
server/src/main/resources/web/comment.ftl

@@ -1,94 +0,0 @@
-<!DOCTYPE html>
-
-<html lang="en">
-<head>
-    <meta charset="utf-8"/>
-    <meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0"/>
-    <title>kkFileView相关交流</title>
-    <link rel="icon" href="./favicon.ico" type="image/x-icon">
-    <link rel="stylesheet" href="css/viewer.min.css"/>
-    <link rel="stylesheet" href="css/loading.css"/>
-    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css"/>
-    <link rel="stylesheet" href="bootstrap/css/bootstrap-theme.min.css"/>
-    <link rel="stylesheet" href="css/theme.css"/>
-    <link rel="stylesheet" href="gitalk/gitalk.css"/>
-    <script type="text/javascript" src="js/jquery-3.6.1.min.js"></script>
-    <script type="text/javascript" src="js/jquery.form.min.js"></script>
-    <script type="text/javascript" src="bootstrap/js/bootstrap.min.js"></script>
-    <script type="text/javascript" src="gitalk/gitalk.min.js"></script>
-</head>
-
-<body>
-
-    <!-- Fixed navbar -->
-    <nav class="navbar navbar-inverse navbar-fixed-top">
-      <div class="container">
-        <div class="navbar-header">
-          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
-            <span class="sr-only">Toggle navigation</span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </button>
-          <a class="navbar-brand" href="https://kkview.cn" target='_blank'>kkFileView</a>
-        </div>
-        <div id="navbar" class="navbar-collapse collapse">
-          <ul class="nav navbar-nav">
-            <li><a href="./index">首页</a></li>
-            <li><a href="./record">版本发布记录</a></li>
-            <li class="active"><a href="./comment">相关交流</a></li>
-          </ul>
-        </div>
-      </div>
-    </nav>
-
-    <div class="container theme-showcase" role="main">
-        <#--  相关交流  -->
-        <div class="page-header">
-            <h1>相关交流</h1>
-        </div>
-
-        <div class="panel-body">
-            <div id="comments"></div>
-        </div>
-    </div>
-
-     <div class="loading_container">
-        <div class="spinner">
-            <div class="spinner-container container1">
-                <div class="circle1"></div>
-                <div class="circle2"></div>
-                <div class="circle3"></div>
-                <div class="circle4"></div>
-            </div>
-            <div class="spinner-container container2">
-                <div class="circle1"></div>
-                <div class="circle2"></div>
-                <div class="circle3"></div>
-                <div class="circle4"></div>
-            </div>
-            <div class="spinner-container container3">
-                <div class="circle1"></div>
-                <div class="circle2"></div>
-                <div class="circle3"></div>
-                <div class="circle4"></div>
-            </div>
-        </div>
-    </div>
-<script>
-    $(function () {
-        var gitalk = new Gitalk({
-            clientID: '525d7f16e17aab08cef5',
-            clientSecret: 'd1154e3aee5c8f1cbdc918b5c97a4f4157e0bfd9',
-            repo: 'kkFileView',
-            owner: 'kekingcn',
-            admin: ['kekingcn,klboke,gitchenjh'],
-            language: 'zh-CN',
-            id: location.pathname,
-            distractionFreeMode: false
-        })
-        gitalk.render((document.getElementById('comments')))
-    });
-</script>
-</body>
-</html>

+ 74 - 62
server/src/main/resources/web/index.ftl

@@ -18,7 +18,7 @@
     <script type="text/javascript" src="bootstrap-table/bootstrap-table.min.js"></script>
     <script type="text/javascript" src="js/base64.min.js"></script>
     <style>
-        .alert{
+        .alert {
             width: 50%;
         }
     </style>
@@ -26,51 +26,62 @@
 
 <body>
 
-    <!-- Fixed navbar -->
-    <nav class="navbar navbar-inverse navbar-fixed-top">
-      <div class="container">
+<!-- Fixed navbar -->
+<nav class="navbar navbar-inverse navbar-fixed-top">
+    <div class="container">
         <div class="navbar-header">
-          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
-            <span class="sr-only">Toggle navigation</span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </button>
-          <a class="navbar-brand" href="https://kkview.cn" target='_blank'>kkFileView</a>
+            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
+                    aria-expanded="false" aria-controls="navbar">
+                <span class="sr-only">Toggle navigation</span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+            </button>
+            <a class="navbar-brand" href="https://kkview.cn" target='_blank'>kkFileView</a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
-          <ul class="nav navbar-nav">
-            <li class="active"><a href="./index">首页</a></li>
-            <li><a href="./record">版本发布记录</a></li>
-            <li><a href="./comment">相关交流</a></li>
-          </ul>
+            <ul class="nav navbar-nav">
+                <li class="active"><a href="./index">首页</a></li>
+                <li><a href="./integrated">接入说明</a></li>
+                <li><a href="./record">版本发布记录</a></li>
+            </ul>
         </div>
-      </div>
-    </nav>
+    </div>
+</nav>
 
-    <div class="container theme-showcase" role="main">
-      <#--  接入说明  -->
-      <div class="page-header">
-        <h1>接入说明</h1>
-      </div>
-      <div class="well">
-        <div style="font-size: 16px;">
-            如果你的项目需要接入文件预览项目,达到对docx、excel、ppt、jpg等文件的预览效果,那么通过在你的项目中加入下面的代码就可以成功实现:
-            <p style="background-color: #2f332a;color: #cccccc;font-size: 14px;padding:10px;margin-top:10px;">
-                var url = 'http://127.0.0.1:8080/file/test.txt'; //要预览文件的访问地址 <br>
-                window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(base64Encode(url)));
-            </p>
-        </div>
-        <div style="font-size: 16px;">
-            新增多图片同时预览功能,接口如下:
-            <p style="background-color: #2f332a;color: #cccccc;font-size: 14px;padding:10px;margin-top:10px;">
-                var fileUrl =url1+'|'+url2;//多url使用'|'字符隔开 <br>
-                window.open('http://127.0.0.1:8012/picturesPreview?urls='+encodeURIComponent(base64Encode(fileUrl)));
-            </p>
-        </div>
-      </div>
-      <#--  输入下载地址预览文件  -->
-      <div class="panel panel-success">
+<div class="container theme-showcase" role="main">
+    <#--  接入说明  -->
+    <div class="page-header">
+        <h1>支持的文件类型</h1>
+        我们一直在扩展支持的文件类型,不断优化预览的效果,如果您有什么建议,欢迎在kk开源社区留意反馈:<a target='_blank' href="https://t.zsxq.com/09ZHSXbsQ">https://t.zsxq.com/09ZHSXbsQ</a>。
+    </div>
+    <div >
+        <ol>
+            <li>支持 doc, docx, xls, xlsx, xlsm, ppt, pptx, csv, tsv, dotm, xlt, xltm, dot, dotx,xlam, xla 等 Office 办公文档</li>
+            <li>支持 wps, dps, et, ett, wpt 等国产 WPS Office 办公文档</li>
+            <li>支持 odt, ods, ots, odp, otp, six, ott, fodt, fods 等OpenOffice、LibreOffice 办公文档</li>
+            <li>支持 vsd, vsdx 等 Visio 流程图文件</li>
+            <li>支持 wmf, emf 等 Windows 系统图像文件</li>
+            <li>支持 psd 等 Photoshop 软件模型文件</li>
+            <li>支持 pdf ,ofd, rtf 等文档</li>
+            <li>支持 xmind 软件模型文件</li>
+            <li>支持 bpmn 工作流文件</li>
+            <li>支持 eml 邮件文件</li>
+            <li>支持 epub 图书文档</li>
+            <li>支持 obj, 3ds, stl, ply, gltf, glb, off, 3dm, fbx, dae, wrl, 3mf, ifc, brep, step, iges, fcstd, bim 等 3D 模型文件</li>
+            <li>支持 dwg, dxf 等 CAD 模型文件</li>
+            <li>支持 txt, xml(渲染), md(渲染), java, php, py, js, css 等所有纯文本</li>
+            <li>支持 zip, rar, jar, tar, gzip, 7z 等压缩包</li>
+            <li>支持 jpg, jpeg, png, gif, bmp, ico, jfif, webp 等图片预览(翻转,缩放,镜像)</li>
+            <li>支持 tif, tiff 图信息模型文件</li>
+            <li>支持 tga 图像格式文件</li>
+            <li>支持 svg 矢量图像格式文件</li>
+            <li>支持 mp3,wav,mp4,flv 等音视频格式文件</li>
+            <li>支持 avi,mov,rm,webm,ts,rm,mkv,mpeg,ogg,mpg,rmvb,wmv,3gp,ts,swf 等视频格式转码预览</li>
+        </ol>
+    </div>
+    <#--  输入下载地址预览文件  -->
+    <div class="panel panel-success">
         <div class="panel-heading">
             <h3 class="panel-title">输入下载地址预览文件</h3>
         </div>
@@ -89,7 +100,7 @@
                 <button id="previewByUrl" type="button" class="btn btn-success">预览</button>
             </form>
         </div>
-      </div>
+    </div>
     <#--  预览测试  -->
     <div class="panel panel-success">
         <div class="panel-heading">
@@ -104,15 +115,16 @@
                             <button type="button" class="btn btn-default" id="fileSelectBtn" style="margin-bottom:8px">
                                 <span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span> 选择文件
                             </button>
-                            <input type="file" name="file" style="display: none" id="fileSelect" onchange="onFileSelected()"/>
+                            <input type="file" name="file" style="display: none" id="fileSelect"
+                                   onchange="onFileSelected()"/>
                             <div class="alert alert-danger alert-dismissable hide" role="alert" id="postFileAlert">
                                 <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                                     <span aria-hidden="true">&times;</span>
                                 </button>
                                 <strong>请选择需要上传的文件!</strong>
                             </div>
-                         </div>
-                         <button id="btnSubmit" type="button" class="btn btn-success">上 传</button>
+                        </div>
+                        <button id="btnSubmit" type="button" class="btn btn-success">上 传</button>
                     </form>
                 </div>
             </#if>
@@ -168,12 +180,12 @@
         $(".loading_container").css("height", height).show();
     }
 
-    function onFileSelected(){
+    function onFileSelected() {
         var file = $("#fileSelect").val();
         $("#fileName").text(file);
     }
 
-    function checkUrl(url){
+    function checkUrl(url) {
         //url= 协议://(ftp的登录信息)[IP|域名](:端口号)(/或?请求参数)
         var strRegex = '^((https|http|ftp)://)'//(https或http或ftp)
             + '(([\\w_!~*\'()\\.&=+$%-]+: )?[\\w_!~*\'()\\.&=+$%-]+@)?' //ftp的user@  可有可无
@@ -186,7 +198,7 @@
             + '(:[0-9]{1,5})?' // 端口- :80 ,1-5位数字
             + '((/?)|' // url无参数结尾 - 斜杆或这没有
             + '(/[\\w_!~*\'()\\.;?:@&=+$,%#-]+)+/?)$';//请求参数结尾- 英文或数字和[]内的各种字符
-        var re = new RegExp(strRegex,'i');//i不区分大小写
+        var re = new RegExp(strRegex, 'i');//i不区分大小写
         //将url做uri转码后再匹配,解除请求参数中的中文和空字符影响
         if (re.test(encodeURI(url))) {
             return (true);
@@ -215,39 +227,39 @@
             return data;
         });
 
-        $('#previewByUrl').on('click',function() {
+        $('#previewByUrl').on('click', function () {
             var _url = $("#_url").val();
             if (!checkUrl(_url)) {
                 $("#previewCheckAlert").addClass("show");
-                window.setTimeout(function(){
+                window.setTimeout(function () {
                     $("#previewCheckAlert").removeClass("show");
-                },3000);//显示的时间
+                }, 3000);//显示的时间
                 return false;
             }
 
             var b64Encoded = Base64.encode(_url);
 
-            window.open('${baseUrl}onlinePreview?url='+encodeURIComponent(b64Encoded));
+            window.open('${baseUrl}onlinePreview?url=' + encodeURIComponent(b64Encoded));
         });
 
-        $('#fileSelectBtn').on('click',function() {
+        $('#fileSelectBtn').on('click', function () {
             $('#fileSelect').click();
         });
 
         $("#btnSubmit").click(function () {
             var _fileName = $("#fileName").text()
-            var index= _fileName.lastIndexOf(".");
+            var index = _fileName.lastIndexOf(".");
             //获取后缀
-            var ext = _fileName.substr(index+1);
-             if (!ext || ext == "dll"|| ext == "exe"|| ext == "msi" ){
-             window.alert(ext+"不支持上传")
-            return ;
-        }
-            if(!_fileName){
+            var ext = _fileName.substr(index + 1);
+            if (!ext || ext == "dll" || ext == "exe" || ext == "msi") {
+                window.alert(ext + "不支持上传")
+                return;
+            }
+            if (!_fileName) {
                 $("#postFileAlert").addClass("show");
-                window.setTimeout(function(){
+                window.setTimeout(function () {
                     $("#postFileAlert").removeClass("show");
-                },3000);//显示的时间
+                }, 3000);//显示的时间
                 return;
             }
             showLoadingDiv();

+ 97 - 0
server/src/main/resources/web/main/integrated.ftl

@@ -0,0 +1,97 @@
+<!DOCTYPE html>
+
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0"/>
+    <title>接入说明</title>
+    <link rel="icon" href="./favicon.ico" type="image/x-icon">
+    <link rel="stylesheet" href="css/viewer.min.css"/>
+    <link rel="stylesheet" href="css/loading.css"/>
+    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css"/>
+    <link rel="stylesheet" href="bootstrap/css/bootstrap-theme.min.css"/>
+    <link rel="stylesheet" href="bootstrap-table/bootstrap-table.min.css"/>
+    <link rel="stylesheet" href="css/theme.css"/>
+    <script type="text/javascript" src="js/jquery-3.6.1.min.js"></script>
+    <script type="text/javascript" src="js/jquery.form.min.js"></script>
+    <script type="text/javascript" src="bootstrap/js/bootstrap.min.js"></script>
+    <script type="text/javascript" src="bootstrap-table/bootstrap-table.min.js"></script>
+    <script type="text/javascript" src="js/base64.min.js"></script>
+    <style>
+        .alert {
+            width: 50%;
+        }
+    </style>
+</head>
+
+<body>
+
+<!-- Fixed navbar -->
+<nav class="navbar navbar-inverse navbar-fixed-top">
+    <div class="container">
+        <div class="navbar-header">
+            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
+                    aria-expanded="false" aria-controls="navbar">
+                <span class="sr-only">Toggle navigation</span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+            </button>
+            <a class="navbar-brand" href="https://kkview.cn" target='_blank'>kkFileView</a>
+        </div>
+        <div id="navbar" class="navbar-collapse collapse">
+            <ul class="nav navbar-nav">
+                <li><a href="./index">首页</a></li>
+                <li class="active"><a href="./integrated">接入说明</a></li>
+                <li><a href="./record">版本发布记录</a></li>
+            </ul>
+        </div>
+    </div>
+</nav>
+
+<div class="container theme-showcase" role="main">
+    <#--  接入说明  -->
+    <div class="page-header">
+        <h1>接入说明</h1>
+        本文档针对前端项目接入 kkFileView 的说明,并假设 kkFileView 的服务地址为:http://127.0.0.1:8012。
+    </div>
+    <div class="well">
+
+        <div style="font-size: 16px;">
+            【http/https 资源文件预览】如果你的项目需要接入文件预览项目,达到对docx、excel、ppt、jpg等文件的预览效果,那么通过在你的项目中加入下面的代码就可以成功实现:
+            <p style="background-color: #2f332a;color: #cccccc;font-size: 14px;padding:10px;margin-top:10px;">
+                var url = 'http://127.0.0.1:8080/file/test.txt'; //要预览文件的访问地址 <br>
+                window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(base64Encode(url)));
+            </p>
+        </div>
+        <br>
+        <div style="font-size: 16px;">
+            【http/https 流资源文件预览】很多系统内不是直接暴露文件下载地址,而是请求通过id、code等参数到通过统一的接口,后端通过id或code等参数定位文件,再通过OutputStream输出下载,此时下载url是不带文件后缀名的,预览时需要拿到文件名,传一个参数fullfilename=xxx.xxx来指定文件名,示例如下
+            <p style="background-color: #2f332a;color: #cccccc;font-size: 14px;padding:10px;margin-top:10px;">
+                var originUrl = 'http://127.0.0.1:8080/filedownload?fileId=1'; //要预览文件的访问地址<br>
+                var previewUrl = originUrl + '&fullfilename=test.txt'<br>
+                window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(previewUrl)));
+            </p>
+        </div>
+        <br>
+        <div style="font-size: 16px;">
+            【ftp 资源文件预览】如果要预览的FTP url是可以匿名访问的(不需要用户名密码),则可以直接通过下载url预览,示例如下
+            <p style="background-color: #2f332a;color: #cccccc;font-size: 14px;padding:10px;margin-top:10px;">
+                var url = 'ftp://127.0.0.1/file/test.txt'; //要预览文件的访问地址<br>
+                window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url)));
+            </p>
+        </div>
+        <br>
+        <div style="font-size: 16px;">
+            【ftp 加密资源文件预览】如果 FTP 需要认证访问服,可以通过在 url 中加入用户名密码等参数预览,示例如下
+            <p style="background-color: #2f332a;color: #cccccc;font-size: 14px;padding:10px;margin-top:10px;">
+                var originUrl = 'ftp://127.0.0.1/file/test.txt'; //要预览文件的访问地址<br>
+                var previewUrl = originUrl + '?ftp.username=xx&ftp.password=xx&ftp.control.encoding=xx';<br>
+                window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(previewUrl)));
+            </p>
+        </div>
+    </div>
+</div>
+
+</body>
+</html>

+ 265 - 0
server/src/main/resources/web/main/record.ftl

@@ -0,0 +1,265 @@
+<!DOCTYPE html>
+
+<html lang="en">
+<head>
+    <meta charset="utf-8"/>
+    <meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0"/>
+    <title>kkFileView版本记录</title>
+    <link rel="icon" href="./favicon.ico" type="image/x-icon">
+    <link rel="stylesheet" href="css/viewer.min.css"/>
+    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css"/>
+    <link rel="stylesheet" href="bootstrap/css/bootstrap-theme.min.css"/>
+    <link rel="stylesheet" href="css/theme.css"/>
+    <script type="text/javascript" src="js/jquery-3.6.1.min.js"></script>
+    <script type="text/javascript" src="js/jquery.form.min.js"></script>
+    <script type="text/javascript" src="bootstrap/js/bootstrap.min.js"></script>
+</head>
+
+<body>
+
+<!-- Fixed navbar -->
+<nav class="navbar navbar-inverse navbar-fixed-top">
+    <div class="container">
+        <div class="navbar-header">
+            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
+                    aria-expanded="false" aria-controls="navbar">
+                <span class="sr-only">Toggle navigation</span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+            </button>
+            <a class="navbar-brand" href="https://kkview.cn" target='_blank'>kkFileView</a>
+        </div>
+        <div id="navbar" class="navbar-collapse collapse">
+            <ul class="nav navbar-nav">
+                <li><a href="./index">首页</a></li>
+                <li><a href="./integrated">接入说明</a></li>
+                <li class="active"><a href="./record">版本发布记录</a></li>
+            </ul>
+        </div>
+    </div>
+</nav>
+
+<div class="container theme-showcase" role="main">
+    <#--  版本发布记录  -->
+    <div class="page-header">
+        <h1>版本发布记录</h1>
+    </div>
+    <div class="panel panel-success">
+        <div class="panel-heading">
+            <h3 class="panel-title">2022年12月14日,v4.1.0 版本</h3>
+        </div>
+        <div class="panel-body">
+            <div>
+                1. 全新首页视觉 @wsd7747 <br>
+                2. tif图片预览兼容多页tif的pdf转换、jpg转换,以及jpg在线多页预览功能 @zhangzhen1979<br>
+                3. 优化docker构建方案,使用分层构建方式 @yl-yue<br>
+                4. 实现基于userToken缓存加密文件 @yl-yue<br>
+                5. 实现加密word、ppt、excel文件预览 @yl-yue<br>
+                6. Linux & Docker镜像升级LibreOffice 7.3<br>
+                7. 更新OFD预览组件、更新tif预览组件、更新PPT水印支持<br>
+                8. 大量其他升级优化 & 已知问题修复<br>
+                <br>
+                感谢 @yl-yue @wsd7747 @zhangzhen1979 @tomhusky @shenghuadun @kischn.sun 的代码贡献
+            </div>
+        </div>
+    </div>
+    <div class="panel panel-success">
+        <div class="panel-heading">
+            <h3 class="panel-title">2021年7月6日,v4.0.0 版本</h3>
+        </div>
+        <div class="panel-body">
+            <div>
+                1. 底层集成OpenOffice替换为LibreOffice,Office文件兼容性增强,预览效果提升<br>
+                2. 修复压缩文件目录穿越漏洞<br>
+                3. 修复PPT预览使用PDF模式无效<br>
+                4. 修复PPT图片预览模式前端显示异常<br>
+                5. 新增功能:首页文件上传功能可通过配置实时开启或禁用<br>
+                6. 优化增加Office进程关闭日志<br>
+                7. 优化Windows环境下,查找Office组件逻辑(内置的LibreOffice优先)<br>
+                8. 优化启动Office进程改同步执行
+            </div>
+        </div>
+    </div>
+    <div class="panel panel-success">
+        <div class="panel-heading">
+            <h3 class="panel-title">2021年6月17日,v3.6.0版本</h3>
+        </div>
+        <div class="panel-body">
+            <div>
+                ** ofd 类型文件支持版本,本次版本重要功能均由社区开发贡献,感谢 @gaoxingzaq、@zhangxiaoxiao9527 的代码贡献
+                **<br>
+                1. 新增 ofd 类型文件预览支持,ofd 是国产的类似 pdf 格式的文件<br>
+                2. 新增了 ffmpeg 视频文件转码预览支持,打开转码功能后,理论上支持所有主流视频的预览,如 rm、rmvb、flv 等<br>
+                3. 美化了 ppt、pptx 类型文件预览效果,比之前版本好看太多<br>
+                4. 更新了 pdfbox、xstream、common-io 等依赖的版本
+            </div>
+        </div>
+    </div>
+    <div class="panel panel-success">
+        <div class="panel-heading">
+            <h3 class="panel-title">2021年1月28日</h3>
+        </div>
+        <div class="panel-body">
+            <div>
+                ** 2020农历年最后一个版本发布,主要包含了部分 UI 改进,和解决了 QQ 群友、 Issue 里反馈的 Bug
+                修复,最最重要的是发个新版,过个好年 **<br>
+                1. 引入galimatias,解决不规范文件名导致文件下载异常<br>
+                2. 更新index接入演示界面UI风格<br>
+                3. 更新markdown文件预览UI风格<br>
+                4. 更新XML文件预览UI风格,调整类文本预览架构,更方便扩展<br>
+                5. 更新simTxT文件预览UI风格<br>
+                6. 调整多图连续预览上下翻图的UI<br>
+                7. 采用apache-common-io包简化所有的文件下载io操作<br>
+                8. XML文件预览支持切换纯文本模式<br>
+                9. 增强url base64解码失败时的提示信息<br>
+                10. 修复导包错误以及图片预览 bug<br>
+                11. 修复发行包运行时找不到日志目录的问题<br>
+                12. 修复压缩包内多图连续预览的bug<br>
+                13. 修复大小写文件类型后缀没通用匹配的问题<br>
+                14. 指定Base64转码采用Apache Commons-code中的实现,修复base64部分jdk版本下出现的异常<br>
+                15. 修复类文本类型HTML文件预览的bug<br>
+                16. 修复:dwg文件预览时无法在jpg和pdf两种类型之间切换<br>
+                17. escaping of dangerous characters to prevent reflected xss<br>
+                18. 修复重复编码导致文档转图片预览失败的问题&编码规范
+            </div>
+        </div>
+    </div>
+    <div class="panel panel-success">
+        <div class="panel-heading">
+            <h3 class="panel-title">2020年12月27日</h3>
+        </div>
+        <div class="panel-body">
+            <div>
+                ** 2020年年终大版本更新,架构全面设计,代码全面重构,代码质量全面提升,二次开发更便捷,欢迎拉源码品鉴,提issue、pr共同建设
+                **<br>
+                1. 架构模块调整,大量的代码重构,代码质量提升N个等级,欢迎品鉴<br>
+                2. 增强XML文件预览效果,新增XML文档数结构预览<br>
+                3. 新增markdown文件预览支持,预览支持md渲染和源文本切换支持<br>
+                4. 切换底层web server为jetty,解决这个issue:<a href="https://github.com/kekingcn/kkFileView/issues/168">#issues/168</a><br>
+                5. 引入cpdetector,解决文件编码识别问题<br>
+                6. url采用base64+urlencode双编码,彻底解决各种奇葩文件名预览问题<br>
+                7. 新增配置项office.preview.switch.disabled,控制offic文件预览切换开关<br>
+                8. 优化文本类型文件预览逻辑,采用Base64传输内容,避免预览时再次请求文件内容<br>
+                9. office预览图片模式禁用图片放大效果,达到图片和pdf预览效果一致的体验<br>
+                10. 直接代码静态设置pdfbox兼容低版本jdk,在IDEA中运行也不会有警告提示<br>
+                11. 移除guava、hutool等非必须的工具包,减少代码体积<br>
+                12. Office组件加载异步化,提速应用启动速度最快到5秒内<br>
+                13. 合理设置预览消费队列的线程数<br>
+                14. 修复压缩包里文件再次预览失败的bug<br>
+                15. 修复图片预览的bug
+            </div>
+        </div>
+    </div>
+    <div class="panel panel-success">
+        <div class="panel-heading">
+            <h3 class="panel-title">2020年05月20日</h3>
+        </div>
+        <div class="panel-body">
+            <div>
+                1. 新增支持全局水印,并支持通过参数动态改变水印内容<br>
+                2. 新增支持CAD文件预览<br>
+                3. 新增base.url配置,支持使用nginx反向代理和使用context-path<br>
+                4. 支持所有配置项支持从环境变量里读取,方便Docker镜像部署和集群中大规模使用<br>
+                5. 支持配置限信任站点(只能预览来自信任点的文件源),保护预览服务不被滥用<br>
+                6. 支持配置自定义缓存清理时间(cron表达式)<br>
+                7. 全部能识别的纯文本直接预览,不用再转跳下载,如.md .java .py等<br>
+                8. 支持配置限制转换后的PDF文件下载<br>
+                9. 优化maven打包配置,解决 .sh 脚本可能出现换行符问题<br>
+                10. 将前端所有CDN依赖放到本地,方便没有外网连接的用户使用<br>
+                11. 首页评论服务由搜狐畅言切换到Gitalk<br>
+                12. 修复url中包含特殊字符可能会引起的预览异常<br>
+                13. 修复转换文件队列addTask异常<br>
+                14. 修复其他已经问题<br>
+                15. 官网建设:<a href="https://kkview.cn">https://kkview.cn</a><br>
+                16. 官方Docker镜像仓库建设:<a href="https://hub.docker.com/r/keking/kkfileview">https://hub.docker.com/r/keking/kkfileview</a>
+            </div>
+        </div>
+    </div>
+    <div class="panel panel-success">
+        <div class="panel-heading">
+            <h3 class="panel-title">2019年06月18日</h3>
+        </div>
+        <div class="panel-body">
+            <div>
+                1. 支持自动清理缓存及预览文件<br>
+                2. 支持http/https下载流url文件预览<br>
+                3. 支持FTP url文件预览<br>
+                4. 加入Docker构建
+            </div>
+        </div>
+    </div>
+    <div class="panel panel-success">
+        <div class="panel-heading">
+            <h3 class="panel-title">2019年04月08日</h3>
+        </div>
+        <div class="panel-body">
+            <div>
+                1. 缓存及队列实现抽象,提供JDK和REDIS两种实现(REDIS成为可选依赖)<br>
+                2. 打包方式提供zip和tar.gz包,并提供一键启动脚本
+            </div>
+        </div>
+    </div>
+    <div class="panel panel-success">
+        <div class="panel-heading">
+            <h3 class="panel-title">2018年01月19日</h3>
+        </div>
+        <div class="panel-body">
+            <div>
+                1. 大文件入队提前处理<br>
+                2. 新增addTask文件转换入队接口<br>
+                3. 采用redis队列,支持kkFIleView接口和异构系统入队两种方式
+            </div>
+        </div>
+    </div>
+    <div class="panel panel-success">
+        <div class="panel-heading">
+            <h3 class="panel-title">2018年01月15日</h3>
+        </div>
+        <div class="panel-body">
+            <div>
+                1. 首页新增社会化评论框
+            </div>
+        </div>
+    </div>
+    <div class="panel panel-success">
+        <div class="panel-heading">
+            <h3 class="panel-title">2018年01月12日</h3>
+        </div>
+        <div class="panel-body">
+            <div>
+                1. 新增多图片同时预览<br>
+                2. 支持压缩包内图片轮番预览
+            </div>
+        </div>
+    </div>
+    <div class="panel panel-success">
+        <div class="panel-heading">
+            <h3 class="panel-title">2018年01月02日</h3>
+        </div>
+        <div class="panel-body">
+            <div>
+                1. 修复txt等文本编码问题导致预览乱码<br>
+                2. 修复项目模块依赖引入不到的问题<br>
+                3. 新增spring boot profile,支持多环境配置<br>
+                4. 引入pdf.js预览doc等文件,支持doc标题生成pdf预览菜单,支持手机端预览
+            </div>
+        </div>
+    </div>
+    <div class="panel panel-success">
+        <div class="panel-heading">
+            <h3 class="panel-title">2017年12月12日</h3>
+        </div>
+        <div class="panel-body">
+            <div>
+                1. 项目gitee开源:<a href="https://gitee.com/kekingcn/file-online-preview" target="_blank">https://gitee.com/kekingcn/file-online-preview</a><br>
+                2. 项目github开源:<a href="https://github.com/kekingcn/kkFileView" target="_blank">https://github.com/kekingcn/kkFileView</a>
+            </div>
+        </div>
+    </div>
+</div>
+<script>
+
+</script>
+</body>
+</html>

+ 0 - 261
server/src/main/resources/web/record.ftl

@@ -1,261 +0,0 @@
-<!DOCTYPE html>
-
-<html lang="en">
-<head>
-    <meta charset="utf-8"/>
-    <meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0"/>
-    <title>kkFileView版本记录</title>
-    <link rel="icon" href="./favicon.ico" type="image/x-icon">
-    <link rel="stylesheet" href="css/viewer.min.css"/>
-    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css"/>
-    <link rel="stylesheet" href="bootstrap/css/bootstrap-theme.min.css"/>
-    <link rel="stylesheet" href="css/theme.css"/>
-    <script type="text/javascript" src="js/jquery-3.6.1.min.js"></script>
-    <script type="text/javascript" src="js/jquery.form.min.js"></script>
-    <script type="text/javascript" src="bootstrap/js/bootstrap.min.js"></script>
-</head>
-
-<body>
-
-    <!-- Fixed navbar -->
-    <nav class="navbar navbar-inverse navbar-fixed-top">
-      <div class="container">
-        <div class="navbar-header">
-          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
-            <span class="sr-only">Toggle navigation</span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </button>
-          <a class="navbar-brand" href="https://kkview.cn" target='_blank'>kkFileView</a>
-        </div>
-        <div id="navbar" class="navbar-collapse collapse">
-          <ul class="nav navbar-nav">
-            <li><a href="./index">首页</a></li>
-            <li class="active"><a href="./record">版本发布记录</a></li>
-            <li><a href="./comment">相关交流</a></li>
-          </ul>
-        </div>
-      </div>
-    </nav>
-
-    <div class="container theme-showcase" role="main">
-        <#--  版本发布记录  -->
-        <div class="page-header">
-            <h1>版本发布记录</h1>
-        </div>
-        <div class="panel panel-success">
-            <div class="panel-heading">
-                <h3 class="panel-title">2022年12月14日,v4.1.0 版本</h3>
-            </div>
-            <div class="panel-body">
-                <div>
-                    1. 全新首页视觉 @wsd7747 <br>
-                    2. tif图片预览兼容多页tif的pdf转换、jpg转换,以及jpg在线多页预览功能 @zhangzhen1979<br>
-                    3. 优化docker构建方案,使用分层构建方式 @yl-yue<br>
-                    4. 实现基于userToken缓存加密文件 @yl-yue<br>
-                    5. 实现加密word、ppt、excel文件预览 @yl-yue<br>
-                    6. Linux & Docker镜像升级LibreOffice 7.3<br>
-                    7. 更新OFD预览组件、更新tif预览组件、更新PPT水印支持<br>
-                    8. 大量其他升级优化 & 已知问题修复<br>
-                    <br>
-                    感谢 @yl-yue @wsd7747 @zhangzhen1979 @tomhusky @shenghuadun @kischn.sun 的代码贡献
-                </div>
-            </div>
-        </div>
-        <div class="panel panel-success">
-            <div class="panel-heading">
-                <h3 class="panel-title">2021年7月6日,v4.0.0 版本</h3>
-            </div>
-            <div class="panel-body">
-                <div>
-                    1. 底层集成OpenOffice替换为LibreOffice,Office文件兼容性增强,预览效果提升<br>
-                    2. 修复压缩文件目录穿越漏洞<br>
-                    3. 修复PPT预览使用PDF模式无效<br>
-                    4. 修复PPT图片预览模式前端显示异常<br>
-                    5. 新增功能:首页文件上传功能可通过配置实时开启或禁用<br>
-                    6. 优化增加Office进程关闭日志<br>
-                    7. 优化Windows环境下,查找Office组件逻辑(内置的LibreOffice优先)<br>
-                    8. 优化启动Office进程改同步执行
-                </div>
-            </div>
-        </div>
-        <div class="panel panel-success">
-            <div class="panel-heading">
-                <h3 class="panel-title">2021年6月17日,v3.6.0版本</h3>
-            </div>
-            <div class="panel-body">
-                <div>
-                    ** ofd 类型文件支持版本,本次版本重要功能均由社区开发贡献,感谢 @gaoxingzaq、@zhangxiaoxiao9527 的代码贡献 **<br>
-                    1. 新增 ofd 类型文件预览支持,ofd 是国产的类似 pdf 格式的文件<br>
-                    2. 新增了 ffmpeg 视频文件转码预览支持,打开转码功能后,理论上支持所有主流视频的预览,如 rm、rmvb、flv 等<br>
-                    3. 美化了 ppt、pptx 类型文件预览效果,比之前版本好看太多<br>
-                    4. 更新了 pdfbox、xstream、common-io 等依赖的版本
-                </div>
-            </div>
-        </div>
-        <div class="panel panel-success">
-            <div class="panel-heading">
-                <h3 class="panel-title">2021年1月28日</h3>
-            </div>
-            <div class="panel-body">
-                <div>
-                    ** 2020农历年最后一个版本发布,主要包含了部分 UI 改进,和解决了 QQ 群友、 Issue 里反馈的 Bug 修复,最最重要的是发个新版,过个好年 **<br>
-                    1. 引入galimatias,解决不规范文件名导致文件下载异常<br>
-                    2. 更新index接入演示界面UI风格<br>
-                    3. 更新markdown文件预览UI风格<br>
-                    4. 更新XML文件预览UI风格,调整类文本预览架构,更方便扩展<br>
-                    5. 更新simTxT文件预览UI风格<br>
-                    6. 调整多图连续预览上下翻图的UI<br>
-                    7. 采用apache-common-io包简化所有的文件下载io操作<br>
-                    8. XML文件预览支持切换纯文本模式<br>
-                    9. 增强url base64解码失败时的提示信息<br>
-                    10. 修复导包错误以及图片预览 bug<br>
-                    11. 修复发行包运行时找不到日志目录的问题<br>
-                    12. 修复压缩包内多图连续预览的bug<br>
-                    13. 修复大小写文件类型后缀没通用匹配的问题<br>
-                    14. 指定Base64转码采用Apache Commons-code中的实现,修复base64部分jdk版本下出现的异常<br>
-                    15. 修复类文本类型HTML文件预览的bug<br>
-                    16. 修复:dwg文件预览时无法在jpg和pdf两种类型之间切换<br>
-                    17. escaping of dangerous characters to prevent reflected xss<br>
-                    18. 修复重复编码导致文档转图片预览失败的问题&编码规范
-                </div>
-            </div>
-        </div>
-        <div class="panel panel-success">
-            <div class="panel-heading">
-                <h3 class="panel-title">2020年12月27日</h3>
-            </div>
-            <div class="panel-body">
-                <div>
-                    ** 2020年年终大版本更新,架构全面设计,代码全面重构,代码质量全面提升,二次开发更便捷,欢迎拉源码品鉴,提issue、pr共同建设 **<br>
-                    1. 架构模块调整,大量的代码重构,代码质量提升N个等级,欢迎品鉴<br>
-                    2. 增强XML文件预览效果,新增XML文档数结构预览<br>
-                    3. 新增markdown文件预览支持,预览支持md渲染和源文本切换支持<br>
-                    4. 切换底层web server为jetty,解决这个issue:<a href="https://github.com/kekingcn/kkFileView/issues/168">#issues/168</a><br>
-                    5. 引入cpdetector,解决文件编码识别问题<br>
-                    6. url采用base64+urlencode双编码,彻底解决各种奇葩文件名预览问题<br>
-                    7. 新增配置项office.preview.switch.disabled,控制offic文件预览切换开关<br>
-                    8. 优化文本类型文件预览逻辑,采用Base64传输内容,避免预览时再次请求文件内容<br>
-                    9. office预览图片模式禁用图片放大效果,达到图片和pdf预览效果一致的体验<br>
-                    10. 直接代码静态设置pdfbox兼容低版本jdk,在IDEA中运行也不会有警告提示<br>
-                    11. 移除guava、hutool等非必须的工具包,减少代码体积<br>
-                    12. Office组件加载异步化,提速应用启动速度最快到5秒内<br>
-                    13. 合理设置预览消费队列的线程数<br>
-                    14. 修复压缩包里文件再次预览失败的bug<br>
-                    15. 修复图片预览的bug
-                </div>
-            </div>
-        </div>
-        <div class="panel panel-success">
-            <div class="panel-heading">
-                <h3 class="panel-title">2020年05月20日</h3>
-            </div>
-            <div class="panel-body">
-                <div>
-                    1. 新增支持全局水印,并支持通过参数动态改变水印内容<br>
-                    2. 新增支持CAD文件预览<br>
-                    3. 新增base.url配置,支持使用nginx反向代理和使用context-path<br>
-                    4. 支持所有配置项支持从环境变量里读取,方便Docker镜像部署和集群中大规模使用<br>
-                    5. 支持配置限信任站点(只能预览来自信任点的文件源),保护预览服务不被滥用<br>
-                    6. 支持配置自定义缓存清理时间(cron表达式)<br>
-                    7. 全部能识别的纯文本直接预览,不用再转跳下载,如.md .java .py等<br>
-                    8. 支持配置限制转换后的PDF文件下载<br>
-                    9. 优化maven打包配置,解决 .sh 脚本可能出现换行符问题<br>
-                    10. 将前端所有CDN依赖放到本地,方便没有外网连接的用户使用<br>
-                    11. 首页评论服务由搜狐畅言切换到Gitalk<br>
-                    12. 修复url中包含特殊字符可能会引起的预览异常<br>
-                    13. 修复转换文件队列addTask异常<br>
-                    14. 修复其他已经问题<br>
-                    15. 官网建设:<a href="https://kkview.cn">https://kkview.cn</a><br>
-                    16. 官方Docker镜像仓库建设:<a href="https://hub.docker.com/r/keking/kkfileview">https://hub.docker.com/r/keking/kkfileview</a>
-                </div>
-            </div>
-        </div>
-        <div class="panel panel-success">
-            <div class="panel-heading">
-                <h3 class="panel-title">2019年06月18日</h3>
-            </div>
-            <div class="panel-body">
-                <div>
-                    1. 支持自动清理缓存及预览文件<br>
-                    2. 支持http/https下载流url文件预览<br>
-                    3. 支持FTP url文件预览<br>
-                    4. 加入Docker构建
-                </div>
-            </div>
-        </div>
-        <div class="panel panel-success">
-            <div class="panel-heading">
-                <h3 class="panel-title">2019年04月08日</h3>
-            </div>
-            <div class="panel-body">
-                <div>
-                    1. 缓存及队列实现抽象,提供JDK和REDIS两种实现(REDIS成为可选依赖)<br>
-                    2. 打包方式提供zip和tar.gz包,并提供一键启动脚本
-                </div>
-            </div>
-        </div>
-        <div class="panel panel-success">
-            <div class="panel-heading">
-                <h3 class="panel-title">2018年01月19日</h3>
-            </div>
-            <div class="panel-body">
-                <div>
-                    1. 大文件入队提前处理<br>
-                    2. 新增addTask文件转换入队接口<br>
-                    3. 采用redis队列,支持kkFIleView接口和异构系统入队两种方式
-                </div>
-            </div>
-        </div>
-        <div class="panel panel-success">
-            <div class="panel-heading">
-                <h3 class="panel-title">2018年01月15日</h3>
-            </div>
-            <div class="panel-body">
-                <div>
-                    1. 首页新增社会化评论框
-                </div>
-            </div>
-        </div>
-        <div class="panel panel-success">
-            <div class="panel-heading">
-                <h3 class="panel-title">2018年01月12日</h3>
-            </div>
-            <div class="panel-body">
-                <div>
-                    1. 新增多图片同时预览<br>
-                    2. 支持压缩包内图片轮番预览
-                </div>
-            </div>
-        </div>
-        <div class="panel panel-success">
-            <div class="panel-heading">
-                <h3 class="panel-title">2018年01月02日</h3>
-            </div>
-            <div class="panel-body">
-                <div>
-                    1. 修复txt等文本编码问题导致预览乱码<br>
-                    2. 修复项目模块依赖引入不到的问题<br>
-                    3. 新增spring boot profile,支持多环境配置<br>
-                    4. 引入pdf.js预览doc等文件,支持doc标题生成pdf预览菜单,支持手机端预览
-                </div>
-            </div>
-        </div>
-        <div class="panel panel-success">
-            <div class="panel-heading">
-                <h3 class="panel-title">2017年12月12日</h3>
-            </div>
-            <div class="panel-body">
-                <div>
-                    1. 项目gitee开源:<a href="https://gitee.com/kekingcn/file-online-preview" target="_blank">https://gitee.com/kekingcn/file-online-preview</a><br>
-                    2. 项目github开源:<a href="https://github.com/kekingcn/kkFileView" target="_blank">https://github.com/kekingcn/kkFileView</a>
-                </div>
-            </div>
-        </div>
-    </div>
-<script>
-
-</script>
-</body>
-</html>