浏览代码

优化:将前端所有CDN依赖放到本地,方便没有外网连接的用户使用

陈精华 5 年之前
父节点
当前提交
c9a6956b0d

+ 1 - 1
jodconverter-web/src/main/java/cn/keking/utils/FileUtils.java

@@ -251,7 +251,7 @@ public class FileUtils {
             // 添加sheet控制头
             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("<link rel=\"stylesheet\" href=\"//cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css\">");
+            sb.append("<link rel=\"stylesheet\" href=\"css/bootstrap/bootstrap.min.css\">");
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         } catch (IOException e) {

+ 306 - 0
jodconverter-web/src/main/resources/static/css/bootstrap/bootstrap-table.css

@@ -0,0 +1,306 @@
+/**
+ * @author zhixin wen <wenzhixin2010@gmail.com>
+ * version: 1.11.0
+ * https://github.com/wenzhixin/bootstrap-table/
+ */
+
+.bootstrap-table .table {
+    margin-bottom: 0 !important;
+    border-bottom: 1px solid #dddddd;
+    border-collapse: collapse !important;
+    border-radius: 1px;
+}
+
+.bootstrap-table .table:not(.table-condensed),
+.bootstrap-table .table:not(.table-condensed) > tbody > tr > th,
+.bootstrap-table .table:not(.table-condensed) > tfoot > tr > th,
+.bootstrap-table .table:not(.table-condensed) > thead > tr > td,
+.bootstrap-table .table:not(.table-condensed) > tbody > tr > td,
+.bootstrap-table .table:not(.table-condensed) > tfoot > tr > td {
+    padding: 8px;
+}
+
+.bootstrap-table .table.table-no-bordered > thead > tr > th,
+.bootstrap-table .table.table-no-bordered > tbody > tr > td {
+    border-right: 2px solid transparent;
+}
+
+.bootstrap-table .table.table-no-bordered > tbody > tr > td:last-child {
+    border-right: none;
+}
+
+.fixed-table-container {
+    position: relative;
+    clear: both;
+    border: 1px solid #dddddd;
+    border-radius: 4px;
+    -webkit-border-radius: 4px;
+    -moz-border-radius: 4px;
+}
+
+.fixed-table-container.table-no-bordered {
+    border: 1px solid transparent;
+}
+
+.fixed-table-footer,
+.fixed-table-header {
+    overflow: hidden;
+}
+
+.fixed-table-footer {
+    border-top: 1px solid #dddddd;
+}
+
+.fixed-table-body {
+    overflow-x: auto;
+    overflow-y: auto;
+    height: 100%;
+}
+
+.fixed-table-container table {
+    width: 100%;
+}
+
+.fixed-table-container thead th {
+    height: 0;
+    padding: 0;
+    margin: 0;
+    border-left: 1px solid #dddddd;
+}
+
+.fixed-table-container thead th:focus {
+    outline: 0 solid transparent;
+}
+
+.fixed-table-container thead th:first-child {
+    border-left: none;
+    border-top-left-radius: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -moz-border-radius-topleft: 4px;
+}
+
+.fixed-table-container thead th .th-inner,
+.fixed-table-container tbody td .th-inner {
+    padding: 8px;
+    line-height: 24px;
+    vertical-align: top;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
+
+.fixed-table-container thead th .sortable {
+    cursor: pointer;
+    background-position: right;
+    background-repeat: no-repeat;
+    padding-right: 30px;
+}
+
+.fixed-table-container thead th .both {
+    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC');
+}
+
+.fixed-table-container thead th .asc {
+    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==');
+}
+
+.fixed-table-container thead th .desc {
+    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII= ');
+}
+
+.fixed-table-container th.detail {
+    width: 30px;
+}
+
+.fixed-table-container tbody td {
+    border-left: 1px solid #dddddd;
+}
+
+.fixed-table-container tbody tr:first-child td {
+    border-top: none;
+}
+
+.fixed-table-container tbody td:first-child {
+    border-left: none;
+}
+
+/* the same color with .active */
+.fixed-table-container tbody .selected td {
+    background-color: #f5f5f5;
+}
+
+.fixed-table-container .bs-checkbox {
+    text-align: center;
+}
+
+.fixed-table-container .bs-checkbox .th-inner {
+    padding: 8px 0;
+}
+
+.fixed-table-container input[type="radio"],
+.fixed-table-container input[type="checkbox"] {
+    margin: 0 auto !important;
+}
+
+.fixed-table-container .no-records-found {
+    text-align: center;
+}
+
+.fixed-table-pagination div.pagination,
+.fixed-table-pagination .pagination-detail {
+    margin-top: 10px;
+    margin-bottom: 10px;
+}
+
+.fixed-table-pagination div.pagination .pagination {
+    margin: 0;
+}
+
+.fixed-table-pagination .pagination a {
+    padding: 6px 12px;
+    line-height: 1.428571429;
+}
+
+.fixed-table-pagination .pagination-info {
+    line-height: 34px;
+    margin-right: 5px;
+}
+
+.fixed-table-pagination .btn-group {
+    position: relative;
+    display: inline-block;
+    vertical-align: middle;
+}
+
+.fixed-table-pagination .dropup .dropdown-menu {
+    margin-bottom: 0;
+}
+
+.fixed-table-pagination .page-list {
+    display: inline-block;
+}
+
+.fixed-table-toolbar .columns-left {
+    margin-right: 5px;
+}
+
+.fixed-table-toolbar .columns-right {
+    margin-left: 5px;
+}
+
+.fixed-table-toolbar .columns label {
+    display: block;
+    padding: 3px 20px;
+    clear: both;
+    font-weight: normal;
+    line-height: 1.428571429;
+}
+
+.fixed-table-toolbar .bs-bars,
+.fixed-table-toolbar .search,
+.fixed-table-toolbar .columns {
+    position: relative;
+    margin-top: 10px;
+    margin-bottom: 10px;
+    line-height: 34px;
+}
+
+.fixed-table-pagination li.disabled a {
+    pointer-events: none;
+    cursor: default;
+}
+
+.fixed-table-loading {
+    display: none;
+    position: absolute;
+    top: 42px;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    z-index: 99;
+    background-color: #fff;
+    text-align: center;
+}
+
+.fixed-table-body .card-view .title {
+    font-weight: bold;
+    display: inline-block;
+    min-width: 30%;
+    text-align: left !important;
+}
+
+/* support bootstrap 2 */
+.fixed-table-body thead th .th-inner {
+    box-sizing: border-box;
+}
+
+.table th, .table td {
+    vertical-align: middle;
+    box-sizing: border-box;
+}
+
+.fixed-table-toolbar .dropdown-menu {
+    text-align: left;
+    max-height: 300px;
+    overflow: auto;
+}
+
+.fixed-table-toolbar .btn-group > .btn-group {
+    display: inline-block;
+    margin-left: -1px !important;
+}
+
+.fixed-table-toolbar .btn-group > .btn-group > .btn {
+    border-radius: 0;
+}
+
+.fixed-table-toolbar .btn-group > .btn-group:first-child > .btn {
+    border-top-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+}
+
+.fixed-table-toolbar .btn-group > .btn-group:last-child > .btn {
+    border-top-right-radius: 4px;
+    border-bottom-right-radius: 4px;
+}
+
+.bootstrap-table .table > thead > tr > th {
+    vertical-align: bottom;
+    border-bottom: 1px solid #ddd;
+}
+
+/* support bootstrap 3 */
+.bootstrap-table .table thead > tr > th {
+    padding: 0;
+    margin: 0;
+}
+
+.bootstrap-table .fixed-table-footer tbody > tr > td {
+    padding: 0 !important;
+}
+
+.bootstrap-table .fixed-table-footer .table {
+    border-bottom: none;
+    border-radius: 0;
+    padding: 0 !important;
+}
+
+.pull-right .dropdown-menu {
+    right: 0;
+    left: auto;
+}
+
+/* calculate scrollbar width */
+p.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;
+}

文件差异内容过多而无法显示
+ 6 - 0
jodconverter-web/src/main/resources/static/css/bootstrap/bootstrap.min.css


+ 22 - 0
jodconverter-web/src/main/resources/static/images/jpg.svg

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="126px" height="126px" viewBox="0 0 126 126" enable-background="new 0 0 126 126" xml:space="preserve">
+<path d="M58.662,58.839c-1.372,0-2.303,0.133-2.791,0.267v8.817c0.577,0.133,1.286,0.178,2.26,0.178c3.59,0,5.807-1.818,5.807-4.874
+	C63.938,60.479,62.031,58.839,58.662,58.839z"/>
+<path d="M102.328,48.928h-2.449V37.11c0-0.074-0.012-0.148-0.021-0.223c-0.004-0.469-0.154-0.93-0.475-1.295L79.717,13.127
+	c-0.006-0.006-0.012-0.008-0.016-0.014c-0.117-0.131-0.254-0.24-0.398-0.334c-0.043-0.029-0.086-0.053-0.131-0.078
+	c-0.125-0.068-0.258-0.125-0.395-0.166c-0.037-0.01-0.07-0.025-0.107-0.035c-0.148-0.035-0.303-0.057-0.459-0.057H29.879
+	c-2.207,0-4,1.795-4,4v32.484H23.43c-3.157,0-5.717,2.559-5.717,5.717v29.73c0,3.156,2.56,5.717,5.717,5.717h2.449v20.352
+	c0,2.205,1.793,4,4,4h66c2.205,0,4-1.795,4-4V90.092h2.449c3.157,0,5.717-2.561,5.717-5.717v-29.73
+	C108.045,51.487,105.485,48.928,102.328,48.928z M29.879,16.444h46.332v20.465c0,1.105,0.896,2,2,2h17.668v10.02h-66V16.444z
+	 M70.627,63.049c0,2.924-0.974,5.406-2.746,7.091c-2.306,2.171-5.718,3.145-9.704,3.145c-0.887,0-1.686-0.043-2.306-0.132v10.679
+	H49.18V54.365c2.084-0.356,5.008-0.621,9.129-0.621c4.165,0,7.134,0.797,9.13,2.393C69.343,57.643,70.627,60.125,70.627,63.049z
+	 M27.996,83.61l0.755-5.45c0.931,0.31,2.126,0.533,3.455,0.533c2.838,0,4.609-1.287,4.609-5.939V53.965h6.735v18.877
+	c0,8.508-4.078,11.476-10.635,11.476C31.365,84.319,29.326,84.055,27.996,83.61z M95.879,109.36h-66V90.092h66V109.36z
+	 M99.877,82.458c-2.082,0.709-6.025,1.684-9.972,1.684c-5.448,0-9.394-1.374-12.14-4.032c-2.748-2.57-4.256-6.469-4.21-10.857
+	c0.043-9.926,7.266-15.598,17.06-15.598c3.856,0,6.826,0.752,8.288,1.462l-1.419,5.406c-1.64-0.709-3.679-1.285-6.958-1.285
+	c-5.627,0-9.88,3.191-9.88,9.661c0,6.159,3.854,9.793,9.394,9.793c1.551,0,2.792-0.178,3.323-0.445v-6.247h-4.609v-5.273h11.123
+	V82.458z"/>
+</svg>

二进制
jodconverter-web/src/main/resources/static/images/left.png


+ 21 - 0
jodconverter-web/src/main/resources/static/images/pdf.svg

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="126px" height="126px" viewBox="0 0 126 126" enable-background="new 0 0 126 126" xml:space="preserve">
+<path d="M41.579,64.707c0-2.747-1.907-4.386-5.273-4.386c-1.373,0-2.303,0.132-2.791,0.265v8.819
+	c0.577,0.132,1.286,0.177,2.258,0.177C39.364,69.582,41.579,67.765,41.579,64.707z"/>
+<path d="M62.411,60.409c-1.508,0-2.481,0.133-3.059,0.266v19.542c0.577,0.134,1.508,0.134,2.35,0.134
+	c6.114,0.043,10.103-3.323,10.103-10.458C71.849,63.687,68.215,60.409,62.411,60.409z"/>
+<path d="M102.328,48.928h-2.449V37.11c0-0.074-0.012-0.148-0.021-0.223c-0.004-0.469-0.154-0.93-0.475-1.295L79.717,13.127
+	c-0.006-0.006-0.012-0.008-0.016-0.014c-0.117-0.131-0.254-0.24-0.398-0.334c-0.043-0.029-0.086-0.053-0.131-0.078
+	c-0.125-0.068-0.258-0.125-0.395-0.166c-0.037-0.01-0.07-0.025-0.107-0.035c-0.148-0.035-0.303-0.057-0.459-0.057H29.879
+	c-2.207,0-4,1.795-4,4v32.484H23.43c-3.157,0-5.717,2.559-5.717,5.717v29.73c0,3.156,2.56,5.717,5.717,5.717h2.449v20.352
+	c0,2.205,1.793,4,4,4h66c2.205,0,4-1.795,4-4V90.092h2.449c3.157,0,5.717-2.561,5.717-5.717v-29.73
+	C108.045,51.487,105.485,48.928,102.328,48.928z M29.879,16.444h46.332v20.465c0,1.105,0.896,2,2,2h17.668v10.02h-66V16.444z
+	 M78.982,69.669c0,5.718-2.082,9.661-4.966,12.099c-3.143,2.614-7.93,3.854-13.777,3.854c-3.5,0-5.981-0.221-7.667-0.442V55.844
+	c2.481-0.398,5.718-0.62,9.13-0.62c5.669,0,9.348,1.02,12.229,3.19C77.032,60.719,78.982,64.396,78.982,69.669z M26.823,85.313
+	V55.844c2.082-0.353,5.008-0.62,9.129-0.62c4.165,0,7.135,0.798,9.128,2.394c1.906,1.506,3.188,3.988,3.188,6.913
+	c0,2.925-0.972,5.407-2.746,7.09c-2.304,2.171-5.716,3.147-9.705,3.147c-0.885,0-1.685-0.045-2.303-0.133v10.679H26.823z
+	 M95.879,109.36h-66V90.092h66V109.36z M101.675,60.985H90.196v6.824h10.724v5.495H90.196v12.009h-6.777V55.446h18.256V60.985z"/>
+</svg>

二进制
jodconverter-web/src/main/resources/static/images/right.png


文件差异内容过多而无法显示
+ 3019 - 0
jodconverter-web/src/main/resources/static/js/bootstrap-table.js


文件差异内容过多而无法显示
+ 7 - 0
jodconverter-web/src/main/resources/static/js/bootstrap.min.js


文件差异内容过多而无法显示
+ 1 - 0
jodconverter-web/src/main/resources/static/js/jquery.form.min.js


+ 5 - 5
jodconverter-web/src/main/resources/web/index.ftl

@@ -7,8 +7,8 @@
     <title>kkFileView演示首页</title>
     <link rel="stylesheet" href="css/viewer.min.css">
     <link rel="stylesheet" href="css/loading.css">
-    <link rel="stylesheet" href="//cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">
-    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.11.1/bootstrap-table.css" />
+    <link rel="stylesheet" href="css/bootstrap/bootstrap.min.css">
+    <link rel="stylesheet" href="css/bootstrap/bootstrap-table.css">
     <style type="text/css">
     </style>
 </head>
@@ -156,9 +156,9 @@ window.open('http://127.0.0.1:8012/picturesPreview?urls='+encodeURIComponent(fil
     </div>
 </div>
 <script src="js/jquery-3.0.0.min.js" type="text/javascript"></script>
-<script src="//cdn.bootcss.com/jquery.form/3.09/jquery.form.min.js" type="text/javascript"></script>
-<script src="//cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>
-<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.11.1/bootstrap-table.js"></script>
+<script src="js/jquery.form.min.js" type="text/javascript"></script>
+<script src="js/bootstrap.min.js"></script>
+<script src="js/bootstrap-table.js"></script>
 <script>
     function deleteFile(fileName) {
         $.ajax({

+ 1 - 3
jodconverter-web/src/main/resources/web/officePicture.ftl

@@ -3,7 +3,6 @@
 <head>
     <meta charset="utf-8" />
     <title>PDF图片预览</title>
-    <link href="//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
     <script src="js/lazyload.js"></script>
     <style>
         .container{
@@ -24,8 +23,7 @@
         </div>
     </#list>
 </div>
-<#--<img src="images/right.png" style="position: fixed; cursor: pointer; top: 40%; right: 60px; z-index: 999;" alt="使用PDF预览" title="使用PDF预览" onclick="changePreviewType('pdf')"/>-->
-<span class="fa fa-file-pdf-o fa-4x" style="position: fixed; cursor: pointer; top: 40%; right: 50px; z-index: 999;" title="使用PDF预览" onclick="changePreviewType('pdf')"></span>
+<img src="images/pdf.svg" width="63" height="63" style="position: fixed; cursor: pointer; top: 40%; right: 48px; z-index: 999;" alt="使用PDF预览" title="使用PDF预览" onclick="changePreviewType('pdf')"/>
 <script>
     window.onload=checkImgs;
     window.onscroll = throttle(checkImgs);

+ 1 - 3
jodconverter-web/src/main/resources/web/pdf.ftl

@@ -5,7 +5,6 @@
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0">
     <title>PDF预览</title>
-    <link href="//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
     <style type="text/css">
         body{
             margin: 0;
@@ -22,8 +21,7 @@
     </#if>
     <iframe src="" width="100%" frameborder="0"></iframe>
 
-<#--    <img src="images/left.png" style="position: fixed; cursor: pointer; top: 40%; right: 60px; z-index: 999;" alt="使用图片预览" title="使用图片预览" onclick="goForImage()"/>-->
-    <span class="fa fa-file-image-o fa-4x" style="position: fixed; cursor: pointer; top: 40%; right: 50px; z-index: 999;" title="使用图片预览" onclick="goForImage()"></span>
+    <img src="images/jpg.svg" width="63" height="63" style="position: fixed; cursor: pointer; top: 40%; right: 48px; z-index: 999;" alt="使用图片预览" title="使用图片预览" onclick="goForImage()"/>
 
 
 </body>