Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
slm-fileview
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
jenkins
slm-fileview
Commits
85e26c6d
Commit
85e26c6d
authored
Jun 17, 2021
by
kl
Committed by
kl
Jun 17, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复 ofd 预览功能影响 office 预览的问题
parent
0a1ff64d
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
345 additions
and
254 deletions
+345
-254
FileType.java
server/src/main/java/cn/keking/model/FileType.java
+8
-3
FileConvertQueueTask.java
...src/main/java/cn/keking/service/FileConvertQueueTask.java
+14
-9
FilePreview.java
server/src/main/java/cn/keking/service/FilePreview.java
+1
-0
PptFilePreviewImpl.java
.../main/java/cn/keking/service/impl/PptFilePreviewImpl.java
+26
-0
SimTextFilePreviewImpl.java
...n/java/cn/keking/service/impl/SimTextFilePreviewImpl.java
+2
-4
EncodingDetects.java
server/src/main/java/cn/keking/utils/EncodingDetects.java
+1
-1
officePicture.ftl
server/src/main/resources/web/officePicture.ftl
+35
-237
ppt.ftl
server/src/main/resources/web/ppt.ftl
+258
-0
No files found.
server/src/main/java/cn/keking/model/FileType.java
View file @
85e26c6d
...
...
@@ -24,18 +24,20 @@ public enum FileType {
FLV
(
"flvFilePreviewImpl"
),
CAD
(
"cadFilePreviewImpl"
),
TIFF
(
"tiffFilePreviewImpl"
),
PPT
(
"pptFilePreviewImpl"
),
OFD
(
"ofdFilePreviewImpl"
);
private
static
final
String
[]
OFFICE_TYPES
=
{
"docx"
,
"wps"
,
"doc"
,
"xls"
,
"xlsx"
,
"ppt"
,
"pptx"
};
private
static
final
String
[]
OFFICE_TYPES
=
{
"docx"
,
"wps"
,
"doc"
,
"xls"
,
"xlsx"
};
private
static
final
String
[]
PPT_TYPES
=
{
"ppt"
,
"pptx"
};
private
static
final
String
[]
PICTURE_TYPES
=
{
"jpg"
,
"jpeg"
,
"png"
,
"gif"
,
"bmp"
,
"ico"
,
"raw"
};
private
static
final
String
[]
ARCHIVE_TYPES
=
{
"rar"
,
"zip"
,
"jar"
,
"7-zip"
,
"tar"
,
"gzip"
,
"7z"
};
private
static
final
String
[]
TIFF_TYPES
=
{
"tif"
,
"tiff"
};
private
static
final
String
[]
OFD_TYPES
=
{
"ofd"
};
private
static
final
String
[]
SSIM_TEXT_TYPES
=
ConfigConstants
.
getSimText
();
private
static
final
String
[]
CODES
=
{
"java"
,
"c"
,
"php"
,
"go"
,
"python"
,
"py"
,
"js"
,
"html"
,
"ftl"
,
"css"
,
"lua"
,
"sh"
,
"rb"
,
"yml"
,
"json"
,
"h"
,
"cpp"
,
"cs"
,
"aspx"
,
"jsp"
};
private
static
final
String
[]
CODES
=
{
"java"
,
"c"
,
"php"
,
"go"
,
"python"
,
"py"
,
"js"
,
"html"
,
"ftl"
,
"css"
,
"lua"
,
"sh"
,
"rb"
,
"y
aml"
,
"y
ml"
,
"json"
,
"h"
,
"cpp"
,
"cs"
,
"aspx"
,
"jsp"
};
private
static
final
String
[]
MEDIA_TYPES
=
ConfigConstants
.
getMedia
();
p
ublic
static
final
String
[]
MEDIA_TYPES_CONVERT
=
ConfigConstants
.
getConvertMedias
();
p
rivate
static
final
String
[]
MEDIA_TYPES_CONVERT
=
ConfigConstants
.
getConvertMedias
();
private
static
final
Map
<
String
,
FileType
>
FILE_TYPE_MAPPER
=
new
HashMap
<>();
static
{
...
...
@@ -66,6 +68,9 @@ public enum FileType {
for
(
String
ofd
:
OFD_TYPES
)
{
FILE_TYPE_MAPPER
.
put
(
ofd
,
FileType
.
OFD
);
}
for
(
String
ppt
:
PPT_TYPES
)
{
FILE_TYPE_MAPPER
.
put
(
ppt
,
FileType
.
PPT
);
}
FILE_TYPE_MAPPER
.
put
(
"md"
,
FileType
.
MARKDOWN
);
FILE_TYPE_MAPPER
.
put
(
"xml"
,
FileType
.
XML
);
FILE_TYPE_MAPPER
.
put
(
"pdf"
,
FileType
.
PDF
);
...
...
server/src/main/java/cn/keking/service/FileConvertQueueTask.java
View file @
85e26c6d
...
...
@@ -7,9 +7,8 @@ import org.slf4j.Logger;
import
org.slf4j.LoggerFactory
;
import
org.springframework.stereotype.Service
;
import
org.springframework.ui.ExtendedModelMap
;
import
javax.annotation.PostConstruct
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.TimeUnit
;
/**
...
...
@@ -31,9 +30,9 @@ public class FileConvertQueueTask {
}
@PostConstruct
public
void
startTask
(){
ExecutorService
executorService
=
Executors
.
newFixedThreadPool
(
1
);
executorService
.
submit
(
new
ConvertTask
(
previewFactory
,
cacheService
,
fileHandlerService
)
);
public
void
startTask
()
{
new
Thread
(
new
ConvertTask
(
previewFactory
,
cacheService
,
fileHandlerService
))
.
start
(
);
logger
.
info
(
"队列处理文件转换任务启动完成 "
);
}
...
...
@@ -58,11 +57,11 @@ public class FileConvertQueueTask {
String
url
=
null
;
try
{
url
=
cacheService
.
takeQueueTask
();
if
(
url
!=
null
)
{
FileAttribute
fileAttribute
=
fileHandlerService
.
getFileAttribute
(
url
,
null
);
if
(
url
!=
null
)
{
FileAttribute
fileAttribute
=
fileHandlerService
.
getFileAttribute
(
url
,
null
);
FileType
fileType
=
fileAttribute
.
getType
();
logger
.
info
(
"正在处理预览转换任务,url:{},预览类型:{}"
,
url
,
fileType
);
if
(
fileType
.
equals
(
FileType
.
COMPRESS
)
||
fileType
.
equals
(
FileType
.
OFFICE
)
||
fileType
.
equals
(
FileType
.
CAD
))
{
if
(
isNeedConvert
(
fileType
))
{
FilePreview
filePreview
=
previewFactory
.
get
(
fileAttribute
);
filePreview
.
filePreviewHandle
(
url
,
new
ExtendedModelMap
(),
fileAttribute
);
}
else
{
...
...
@@ -72,13 +71,19 @@ public class FileConvertQueueTask {
}
catch
(
Exception
e
)
{
try
{
TimeUnit
.
SECONDS
.
sleep
(
10
);
}
catch
(
Exception
ex
){
}
catch
(
Exception
ex
)
{
Thread
.
currentThread
().
interrupt
();
ex
.
printStackTrace
();
}
logger
.
info
(
"处理预览转换任务异常,url:{}"
,
url
,
e
);
}
}
}
public
boolean
isNeedConvert
(
FileType
fileType
)
{
return
fileType
.
equals
(
FileType
.
COMPRESS
)
||
fileType
.
equals
(
FileType
.
OFFICE
)
||
fileType
.
equals
(
FileType
.
CAD
)
||
fileType
.
equals
(
FileType
.
PPT
);
}
}
}
server/src/main/java/cn/keking/service/FilePreview.java
View file @
85e26c6d
...
...
@@ -11,6 +11,7 @@ public interface FilePreview {
String
FLV_FILE_PREVIEW_PAGE
=
"flv"
;
String
PDF_FILE_PREVIEW_PAGE
=
"pdf"
;
String
PPT_FILE_PREVIEW_PAGE
=
"ppt"
;
String
COMPRESS_FILE_PREVIEW_PAGE
=
"compress"
;
String
MEDIA_FILE_PREVIEW_PAGE
=
"media"
;
String
PICTURE_FILE_PREVIEW_PAGE
=
"picture"
;
...
...
server/src/main/java/cn/keking/service/impl/PptFilePreviewImpl.java
0 → 100644
View file @
85e26c6d
package
cn
.
keking
.
service
.
impl
;
import
cn.keking.model.FileAttribute
;
import
cn.keking.service.FilePreview
;
import
org.springframework.stereotype.Service
;
import
org.springframework.ui.Model
;
/**
* @author kl (http://kailing.pub)
* @since 2021/6/17
*/
@Service
public
class
PptFilePreviewImpl
implements
FilePreview
{
private
final
OfficeFilePreviewImpl
officeFilePreview
;
public
PptFilePreviewImpl
(
OfficeFilePreviewImpl
officeFilePreview
)
{
this
.
officeFilePreview
=
officeFilePreview
;
}
@Override
public
String
filePreviewHandle
(
String
url
,
Model
model
,
FileAttribute
fileAttribute
)
{
officeFilePreview
.
filePreviewHandle
(
url
,
model
,
fileAttribute
);
return
PPT_FILE_PREVIEW_PAGE
;
}
}
server/src/main/java/cn/keking/service/impl/SimTextFilePreviewImpl.java
View file @
85e26c6d
...
...
@@ -5,15 +5,13 @@ import cn.keking.model.FileAttribute;
import
cn.keking.model.ReturnResponse
;
import
cn.keking.service.FilePreview
;
import
cn.keking.utils.DownloadUtils
;
import
cn.keking.utils.KkFileUtils
;
import
jodd.io.FileUtil
;
import
cn.keking.utils.EncodingDetects
;
import
org.apache.commons.codec.binary.Base64
;
import
org.springframework.stereotype.Service
;
import
org.springframework.ui.Model
;
import
org.springframework.web.util.HtmlUtils
;
import
java.io.*
;
import
java.nio.charset.StandardCharsets
;
/**
* Created by kl on 2018/1/17.
...
...
@@ -33,7 +31,7 @@ public class SimTextFilePreviewImpl implements FilePreview {
String
fileName
=
fileAttribute
.
getName
();
String
baseUrll
=
FILE_DIR
+
fileName
;
// String suffix = fileAttribute.getSuffix();
// String suffix = fileAttribute.getSuffix();
ReturnResponse
<
String
>
response
=
DownloadUtils
.
downLoad
(
fileAttribute
,
fileName
);
if
(
response
.
isFailure
())
{
return
otherFilePreview
.
notSupportedFile
(
model
,
fileAttribute
,
response
.
getMsg
());
...
...
server/src/main/java/cn/keking/
service/impl
/EncodingDetects.java
→
server/src/main/java/cn/keking/
utils
/EncodingDetects.java
View file @
85e26c6d
package
cn
.
keking
.
service
.
impl
;
package
cn
.
keking
.
utils
;
import
java.io.BufferedReader
;
import
java.io.File
;
...
...
server/src/main/resources/web/officePicture.ftl
View file @
85e26c6d
<
#
if
RequestParameters
['
name
']??
>
{
"code": 1,
"name": "pptx",
"totalSize": 0,
"curPage": 1,
"totalPage": 1,
"pageSize": 10,
"titles": null,
"data": [
<
#
assign
index =
0
>
<
#
list
imgurls
as
img
>
<
#
if
index
!=
0
>
,
</
#
if>
{
"uuid": null,
"title": null,
"content": null,
"text": null,
"url": "${img}",
"destFile": null,
"viewCount": 0,
"downloadCount": 0,
"ctime": null,
"thumbUrl": "${img}",
"largeUrl": null,
"ratio": 0.5625,
"note": null
}
<
#
assign
index =
index
+
1
>
</
#
list>
],
"desc": "Success"
}
<
#
else
/>
<!DOCTYPE html>
<html
lang=
"en"
>
<head>
<
#
if
"${
file
.
suffix
?
html
}"
==
"
ppt
"
||
"${
file
.
suffix
?
html
}"
==
"
pptx
"
>
<!DOCTYPE html>
<html
lang=
"en"
><head><meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<title>
pptx
</title>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
>
<!-- BOOTSTRAP STYLE start -->
<!-- Le styles -->
<meta
http-equiv=
"X-UA-Compatible"
content=
"IE=edge,chrome=1"
>
<link
href=
"/pptx/bootstrap.min.css"
rel=
"stylesheet"
>
<link
href=
"/pptx/idocv_common.min.css"
rel=
"stylesheet"
>
<link
href=
"/pptx/jquery.contextMenu.css"
rel=
"stylesheet"
>
<!-- BOOTSTRAP STYLE end -->
<script
type=
"text/javascript"
>
var
windowWidth
=
document
.
documentElement
.
clientWidth
;
var
searchStr
=
window
.
location
.
search
.
substr
(
1
);
if
((
windowWidth
<
768
||
(
/micromessenger/
.
test
(
navigator
.
userAgent
.
toLowerCase
())))
&&
(
!
searchStr
||
searchStr
.
indexOf
(
'type='
)
<
0
))
{
var
redirectUrl
=
window
.
location
.
pathname
+
'?type=mobile'
+
(
!!
searchStr
?
(
'&'
+
searchStr
)
:
''
);
window
.
location
.
replace
(
redirectUrl
);
}
</script>
<style
type=
"text/css"
>
.thumbnail
{
/*
max-width: 200px;
*/
cursor
:
pointer
;
}
</style>
<!--[if lt IE 9]>
<script src="/static/bootstrap/js/html5shiv.js"></script>
<![endif]-->
</head>
<body
onload=
"resetImgSize();"
class=
"ppt-body"
>
<div
class=
"loading-mask"
style=
"display: block;"
>
<div
class=
"loading-zone"
>
<div
class=
"text"
><img
src=
"/img/loader_indicator_lite.gif"
>
加载中...
</div>
</div>
</div>
<div
class=
"navbar navbar-inverse navbar-fixed-top"
>
<div
class=
"navbar-inner"
>
<div
class=
"container-fluid"
>
<button
type=
"button"
class=
"btn btn-navbar"
data-toggle=
"collapse"
data-target=
".nav-collapse"
>
<span
class=
"icon-bar"
></span>
<span
class=
"icon-bar"
></span>
<span
class=
"icon-bar"
></span>
</button>
<!-- FILE NAME HERE -->
<!-- SIGN UP & SIGN IN -->
<div
class=
"nav-collapse collapse"
>
<p
class=
"navbar-text pull-right"
>
<a
href=
"#"
title=
"全屏"
class=
"fullscreen-link"
><i
class=
"icon-fullscreen icon-white"
></i></a>
</p>
</div>
<!--/.nav-collapse -->
</div>
</div>
</div>
<div
class=
"container-fluid"
style=
"max-height: 100%;"
>
<div
class=
"row-fluid"
>
<div
class=
"span2 hidden-phone"
style=
"position: fixed; top: 60px; left: 20px; bottom: 20px; padding-right: 10px; border-right: 3px solid #c8c8c8; max-height: 100%; overflow: auto; text-align: center;"
>
<!--Sidebar content-->
<!--
<div class="thumbnail">
<img src="">
</div>
1/20<br />
-->
</div>
<div
class=
"span9 offset2"
>
<div
class=
"slide-img-container"
>
<div
class=
"ppt-turn-left-mask"
></div>
<div
class=
"ppt-turn-right-mask"
></div>
<!--
<img src="" class="img-polaroid" style="max-height: 100%;">
-->
</div>
<!-- ONLY AVAILABLE ON MOBILE -->
<div
class=
"span12 visible-phone text-center"
style=
"position: fixed; bottom: 10px; left: 0px; z-index: 1000;"
>
<select
class=
"select-page-selector span1"
style=
"width: 80px; margin-top: 10px;"
>
<!-- PAGE NUMBERS HERE -->
</select>
</div>
</div>
</div>
</div>
<div
class=
"progress progress-striped active bottom-paging-progress"
>
<div
class=
"bar"
style=
"width: 0%;"
></div>
</div>
<!-- JavaSript
================================================== -->
<script
src=
"/pptx/jquery-3.5.1.min.js"
></script>
<script
src=
"/pptx/jquery.contextMenu.js?v=11.2.5_20210128"
></script>
<script
src=
"/pptx/idocv_common.min.js"
></script>
<script>
var
contextPath
=
''
;
var
version
=
'12'
;
// var urlObj = $.url($.url().attr('source').replace(contextPath, ''));
var
id
=
window
.
location
.
pathname
.
replace
(
contextPath
,
''
).
split
(
'/'
)[
2
];
var
uuid
=
id
;
var
params
=
getAllUrlParams
(
window
.
location
.
href
);
// 如果用urlObj.param()方法获取则被非正常解码
// var queryStr = urlObj.attr('query'); // 参数被decode,IE下如果有中文参数则报错,需要获取原生参数
var
queryStr
=
window
.
location
.
search
.
slice
(
1
);
uuid
=
!!
''
?
''
:
uuid
;
var
name
=
'pptx'
;
if
(
!!
name
)
{
params
.
name
=
name
;
}
var
reqUrl
=
''
;
var
reqUrlMd5
=
''
;
var
authMap
=
'{}'
;
var
authMapStr
=
'null'
;
if
(
!!
reqUrlMd5
&&
!!
authMapStr
)
{
authMap
=
JSON
.
parse
(
authMapStr
);
}
</script>
<!-- 客户自定义JS -->
<script
src=
"/pptx/jquery.mobile-events.min.js"
></script>
<script
src=
"/pptx/ppt.js"
></script>
</body>
</html>
<
#
else
/>
<meta
charset=
"utf-8"
/>
<title>
图片预览
</title>
<link
rel=
"stylesheet"
href=
"css/viewer.min.css"
>
<script
src=
"js/lazyload.js"
></script>
<script
src=
"js/viewer.min.js"
></script>
<meta
charset=
"utf-8"
/>
<title>
PDF图片预览
</title>
<script
src=
"js/lazyload.js"
></script>
<
#
include
"*/
commonHeader
.
ftl
"
>
<style>
<style>
body
{
background-color
:
#404040
;
}
#image
{
width
:
800px
;
margin
:
0
auto
;
font-size
:
0
;}
#image
li
{
display
:
inline-block
;
width
:
50px
;
height
:
50px
;
margin-left
:
1%
;
padding-top
:
1%
;}
/*#dowebok li img { width: 200%;}*/
.container
{
width
:
100%
;
height
:
100%
;
}
.img-area
{
text-align
:
center
}
</style>
</head>
<body>
<div
class=
"container"
>
<ul
id=
"image"
>
<
#
list
imgurls
as
img
>
<div
class=
"img-area"
>
<
li><img
id=
"${img}"
url=
"${img}"
src=
"${img}"
width=
"1px"
height=
"1px"
></li
>
<
img
class=
"my-photo"
alt=
"loading"
data-src=
"${img}"
src=
"images/loading.gif"
>
</div>
</
#
list>
</ul>
</div>
<
#
if
"
false
"
==
switchDisabled
>
<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')"
/>
</
#
if>
<script>
var
viewer
=
new
Viewer
(
document
.
getElementById
(
'image'
),
{
url
:
'src'
,
navbar
:
false
,
button
:
false
,
backdrop
:
false
,
loop
:
true
});
document
.
getElementById
(
"${currentUrl}"
).
click
();
// 修改下一页按钮的样式和位置
$
(
function
()
{
var
outHandler
=
function
(){
$
(
this
).
css
(
'background-color'
,
'rgba(0, 0, 0, 0)'
);
};
var
overHandler
=
function
(){
$
(
this
).
css
(
'background-color'
,
'rgba(0, 0, 0, .5)'
);
};
var
next
=
$
(
"li[data-action=next]"
);
var
prev
=
$
(
"li[data-action=prev]"
);
var
viewerToolBar
=
$
(
".viewer-footer"
);
// 覆盖按钮父类原始样式
viewerToolBar
.
css
(
"overflow"
,
"visible"
);
// 获取文档高度、宽度
var
clientHeight
=
window
.
innerHeight
;
var
clientWidth
=
window
.
innerWidth
;
// 调整样式
var
styleCss
=
{},
nextCss
=
{},
prevCss
=
{};
styleCss
.
position
=
"absolute"
;
styleCss
.
top
=
-
clientHeight
;
styleCss
.
width
=
clientWidth
*
0.1
;
styleCss
.
height
=
clientHeight
+
52
;
// 覆盖原始样式
styleCss
.
backgroundColor
=
'rgba(0, 0, 0, 0)'
;
styleCss
.
borderRadius
=
'inherit'
;
nextCss
.
right
=
"0"
;
prevCss
.
left
=
"0"
;
next
.
css
(
$
.
extend
(
nextCss
,
styleCss
));
prev
.
css
(
$
.
extend
(
prevCss
,
styleCss
));
next
.
on
(
'mouseout'
,
outHandler
);
next
.
on
(
'mouseover'
,
overHandler
);
prev
.
on
(
'mouseout'
,
outHandler
);
prev
.
on
(
'mouseover'
,
overHandler
);
});
/*初始化水印*/
window
.
onload
=
function
()
{
window
.
onload
=
function
()
{
/*初始化水印*/
initWaterMark
();
checkImgs
();
};
window
.
onscroll
=
throttle
(
checkImgs
);
function
changePreviewType
(
previewType
)
{
var
url
=
window
.
location
.
href
;
if
(
url
.
indexOf
(
"officePreviewType=image"
)
!==
-
1
)
{
url
=
url
.
replace
(
"officePreviewType=image"
,
"officePreviewType="
+
previewType
);
}
else
{
url
=
url
+
"&officePreviewType="
+
previewType
;
}
if
(
'allImages'
===
previewType
)
{
window
.
open
(
url
)
}
else
{
window
.
location
.
href
=
url
;
}
}
</script>
</
#
if>
</body>
</html>
</
#
if>
</html>
\ No newline at end of file
server/src/main/resources/web/ppt.ftl
0 → 100644
View file @
85e26c6d
<
#
if
RequestParameters
['
name
']??
>
{
"code": 1,
"name": "pptx",
"totalSize": 0,
"curPage": 1,
"totalPage": 1,
"pageSize": 10,
"titles": null,
"data": [
<
#
assign
index =
0
>
<
#
list
imgurls
as
img
>
<
#
if
index
!=
0
>
,
</
#
if>
{
"uuid": null,
"title": null,
"content": null,
"text": null,
"url": "${img}",
"destFile": null,
"viewCount": 0,
"downloadCount": 0,
"ctime": null,
"thumbUrl": "${img}",
"largeUrl": null,
"ratio": 0.5625,
"note": null
}
<
#
assign
index =
index
+
1
>
</
#
list>
],
"desc": "Success"
}
<
#
else
/>
<!DOCTYPE html>
<html
lang=
"en"
>
<head>
<
#
if
"${
file
.
suffix
?
html
}"
==
"
ppt
"
||
"${
file
.
suffix
?
html
}"
==
"
pptx
"
>
<!DOCTYPE html>
<html
lang=
"en"
><head><meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<title>
pptx
</title>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
>
<!-- BOOTSTRAP STYLE start -->
<!-- Le styles -->
<meta
http-equiv=
"X-UA-Compatible"
content=
"IE=edge,chrome=1"
>
<link
href=
"/pptx/bootstrap.min.css"
rel=
"stylesheet"
>
<link
href=
"/pptx/idocv_common.min.css"
rel=
"stylesheet"
>
<link
href=
"/pptx/jquery.contextMenu.css"
rel=
"stylesheet"
>
<!-- BOOTSTRAP STYLE end -->
<script
type=
"text/javascript"
>
var
windowWidth
=
document
.
documentElement
.
clientWidth
;
var
searchStr
=
window
.
location
.
search
.
substr
(
1
);
if
((
windowWidth
<
768
||
(
/micromessenger/
.
test
(
navigator
.
userAgent
.
toLowerCase
())))
&&
(
!
searchStr
||
searchStr
.
indexOf
(
'type='
)
<
0
))
{
var
redirectUrl
=
window
.
location
.
pathname
+
'?type=mobile'
+
(
!!
searchStr
?
(
'&'
+
searchStr
)
:
''
);
window
.
location
.
replace
(
redirectUrl
);
}
</script>
<style
type=
"text/css"
>
.thumbnail
{
/*
max-width: 200px;
*/
cursor
:
pointer
;
}
</style>
<!--[if lt IE 9]>
<script src="/static/bootstrap/js/html5shiv.js"></script>
<![endif]-->
</head>
<body
onload=
"resetImgSize();"
class=
"ppt-body"
>
<div
class=
"loading-mask"
style=
"display: block;"
>
<div
class=
"loading-zone"
>
<div
class=
"text"
><img
src=
"/img/loader_indicator_lite.gif"
>
加载中...
</div>
</div>
</div>
<div
class=
"navbar navbar-inverse navbar-fixed-top"
>
<div
class=
"navbar-inner"
>
<div
class=
"container-fluid"
>
<button
type=
"button"
class=
"btn btn-navbar"
data-toggle=
"collapse"
data-target=
".nav-collapse"
>
<span
class=
"icon-bar"
></span>
<span
class=
"icon-bar"
></span>
<span
class=
"icon-bar"
></span>
</button>
<!-- FILE NAME HERE -->
<!-- SIGN UP & SIGN IN -->
<div
class=
"nav-collapse collapse"
>
<p
class=
"navbar-text pull-right"
>
<a
href=
"#"
title=
"全屏"
class=
"fullscreen-link"
><i
class=
"icon-fullscreen icon-white"
></i></a>
</p>
</div>
<!--/.nav-collapse -->
</div>
</div>
</div>
<div
class=
"container-fluid"
style=
"max-height: 100%;"
>
<div
class=
"row-fluid"
>
<div
class=
"span2 hidden-phone"
style=
"position: fixed; top: 60px; left: 20px; bottom: 20px; padding-right: 10px; border-right: 3px solid #c8c8c8; max-height: 100%; overflow: auto; text-align: center;"
>
<!--Sidebar content-->
<!--
<div class="thumbnail">
<img src="">
</div>
1/20<br />
-->
</div>
<div
class=
"span9 offset2"
>
<div
class=
"slide-img-container"
>
<div
class=
"ppt-turn-left-mask"
></div>
<div
class=
"ppt-turn-right-mask"
></div>
<!--
<img src="" class="img-polaroid" style="max-height: 100%;">
-->
</div>
<!-- ONLY AVAILABLE ON MOBILE -->
<div
class=
"span12 visible-phone text-center"
style=
"position: fixed; bottom: 10px; left: 0px; z-index: 1000;"
>
<select
class=
"select-page-selector span1"
style=
"width: 80px; margin-top: 10px;"
>
<!-- PAGE NUMBERS HERE -->
</select>
</div>
</div>
</div>
</div>
<div
class=
"progress progress-striped active bottom-paging-progress"
>
<div
class=
"bar"
style=
"width: 0%;"
></div>
</div>
<!-- JavaSript
================================================== -->
<script
src=
"/pptx/jquery-3.5.1.min.js"
></script>
<script
src=
"/pptx/jquery.contextMenu.js?v=11.2.5_20210128"
></script>
<script
src=
"/pptx/idocv_common.min.js"
></script>
<script>
var
contextPath
=
''
;
var
version
=
'12'
;
// var urlObj = $.url($.url().attr('source').replace(contextPath, ''));
var
id
=
window
.
location
.
pathname
.
replace
(
contextPath
,
''
).
split
(
'/'
)[
2
];
var
uuid
=
id
;
var
params
=
getAllUrlParams
(
window
.
location
.
href
);
// 如果用urlObj.param()方法获取则被非正常解码
// var queryStr = urlObj.attr('query'); // 参数被decode,IE下如果有中文参数则报错,需要获取原生参数
var
queryStr
=
window
.
location
.
search
.
slice
(
1
);
uuid
=
!!
''
?
''
:
uuid
;
var
name
=
'pptx'
;
if
(
!!
name
)
{
params
.
name
=
name
;
}
var
reqUrl
=
''
;
var
reqUrlMd5
=
''
;
var
authMap
=
'{}'
;
var
authMapStr
=
'null'
;
if
(
!!
reqUrlMd5
&&
!!
authMapStr
)
{
authMap
=
JSON
.
parse
(
authMapStr
);
}
</script>
<!-- 客户自定义JS -->
<script
src=
"/pptx/jquery.mobile-events.min.js"
></script>
<script
src=
"/pptx/ppt.js"
></script>
</body>
</html>
<
#
else
/>
<meta
charset=
"utf-8"
/>
<title>
图片预览
</title>
<link
rel=
"stylesheet"
href=
"css/viewer.min.css"
>
<script
src=
"js/lazyload.js"
></script>
<script
src=
"js/viewer.min.js"
></script>
<
#
include
"*/
commonHeader
.
ftl
"
>
<style>
body
{
background-color
:
#404040
;
}
#image
{
width
:
800px
;
margin
:
0
auto
;
font-size
:
0
;}
#image
li
{
display
:
inline-block
;
width
:
50px
;
height
:
50px
;
margin-left
:
1%
;
padding-top
:
1%
;}
/*#dowebok li img { width: 200%;}*/
</style>
</head>
<body>
<div
class=
"container"
>
<ul
id=
"image"
>
<
#
list
imgurls
as
img
>
<div
class=
"img-area"
>
<li><img
id=
"${img}"
url=
"${img}"
src=
"${img}"
width=
"1px"
height=
"1px"
></li>
</div>
</
#
list>
</ul>
</div>
<script>
var
viewer
=
new
Viewer
(
document
.
getElementById
(
'image'
),
{
url
:
'src'
,
navbar
:
false
,
button
:
false
,
backdrop
:
false
,
loop
:
true
});
document
.
getElementById
(
"${currentUrl}"
).
click
();
// 修改下一页按钮的样式和位置
$
(
function
()
{
var
outHandler
=
function
(){
$
(
this
).
css
(
'background-color'
,
'rgba(0, 0, 0, 0)'
);
};
var
overHandler
=
function
(){
$
(
this
).
css
(
'background-color'
,
'rgba(0, 0, 0, .5)'
);
};
var
next
=
$
(
"li[data-action=next]"
);
var
prev
=
$
(
"li[data-action=prev]"
);
var
viewerToolBar
=
$
(
".viewer-footer"
);
// 覆盖按钮父类原始样式
viewerToolBar
.
css
(
"overflow"
,
"visible"
);
// 获取文档高度、宽度
var
clientHeight
=
window
.
innerHeight
;
var
clientWidth
=
window
.
innerWidth
;
// 调整样式
var
styleCss
=
{},
nextCss
=
{},
prevCss
=
{};
styleCss
.
position
=
"absolute"
;
styleCss
.
top
=
-
clientHeight
;
styleCss
.
width
=
clientWidth
*
0.1
;
styleCss
.
height
=
clientHeight
+
52
;
// 覆盖原始样式
styleCss
.
backgroundColor
=
'rgba(0, 0, 0, 0)'
;
styleCss
.
borderRadius
=
'inherit'
;
nextCss
.
right
=
"0"
;
prevCss
.
left
=
"0"
;
next
.
css
(
$
.
extend
(
nextCss
,
styleCss
));
prev
.
css
(
$
.
extend
(
prevCss
,
styleCss
));
next
.
on
(
'mouseout'
,
outHandler
);
next
.
on
(
'mouseover'
,
overHandler
);
prev
.
on
(
'mouseout'
,
outHandler
);
prev
.
on
(
'mouseover'
,
overHandler
);
});
/*初始化水印*/
window
.
onload
=
function
()
{
initWaterMark
();
}
</script>
</
#
if>
</body>
</html>
</
#
if>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment