当前位置:   article > 正文

【教程】Linux 安装 kkFileView 文档在线预览项目 及优化

【教程】Linux 安装 kkFileView 文档在线预览项目 及优化

【教程】Linux 安装 kkFileView 文档在线预览项目

官网

kkFileView - 在线文件预览 (keking.cn)

安装包  可以直接下载成品  也可以下载source 源码 自己编译

kkFileView 发行版 - Gitee.com

打开IDEA

然后先clear 再install

然后在 file-online-preview\server\target 目录下会生成编译后的文件

这是编译之后的文件

.tar.gz  Linux版本

上传到linux服务器  并解压

需要安装 JDK1.8+ 并设置环境变量 

安装kkfileview之前,需要在linux上面安装LibreOffice  或者 让kkfileview自动安装

进入bin目录  执行  ./startup.sh    会自动安装所需的依赖

  1. cd /usr/local/kkfileview/
  2. tar -zxvf kkFileView-4.4.0.tar.gz
  3. cd kkFileView-4.4.0
  4. cd bin/
  5. ./startup.sh
  6. cd ../
  7. cd log/
  8. cat kkFileView.log

访问路径

127.0.0.1:8012

进阶

配置文件

配置 kkFileView 配置路径

编辑  config/application.properties   文件

配置域名 并设置 context-path 路径

比如域名是  www.xxx.com

想通过  www.xxx.com/fileView 去访问 可以这样设置

  1. server.servlet.context-path= /fileView
  2. base.url = http://www.xxx.com/fileView

重启项目

  1. cd ../bin
  2. #执行
  3. ./startup.sh
  4. #第一次执行完毕后建议再执行查看日志脚本
  5. ./showlog.sh

前端集成开发

  1. const Base64 = {
  2. encode(str) {
  3. // 首先,我们使用 encodeURIComponent 来获得百分比编码的UTF-8,然后我们将百分比编码转换为原始字节,最后存储到btoa里面
  4. return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,
  5. function toSolidBytes(match, p1) {
  6. return String.fromCharCode(Number('0x' + p1));
  7. }));
  8. },
  9. decode(str) {
  10. // 过程:从字节流到百分比编码,再到原始字符串
  11. return decodeURIComponent(atob(str).split('').map(function (c) {
  12. return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
  13. }).join(''));
  14. }
  15. }
  16. //文件路径
  17. let url = 'www.xxx.com/表格.xls'
  18. //通过 kkfileView 在线打开
  19. window.open('https://www.xxx.com/fileView/onlinePreview?url=' + Base64.encode(url));

优化 使用redis缓存

#是否启用缓存

cache.enabled = ${KK_CACHE_ENABLED:true}

#缓存实现类型,不配默认为内嵌RocksDB(type = default)实现,可配置为redis(type = redis)实现(需要配置spring.redisson.address等参数)和 JDK 内置对象实现(type = jdk),

cache.type =  ${KK_CACHE_TYPE:redis}

#文本类型,默认如下,可自定义添加
simText = ${KK_SIMTEXT:txt,html,htm,asp,jsp,xml,json,properties,md,gitignore,log,java,py,c,cpp,sql,sh,bat,m,bas,prg,cmd}
 

字体

安装Libreoffice所需的中文字体

由于Libreoffice默认不支持中文,需手动安装字体。

1.下载中文字体包

http://kkfileview.keking.cn/fonts.zip

字体问题
大部分Linux系统上并没有预装中文字体或字体不全,需要把常用字体拷贝到Linux服务器上,具体操作如下: 下载如下字体包 https://kkfileview.keking.cn/fonts.zip 文件解压完整拷贝到Linux下的 /usr/share/fonts目录。然后依次执行mkfontscale 、mkfontdir 、fc-cache使字体生效 

2.上传服务器至目录/usr/share/fonts
3.执行命令

unzip fonts.zip

再依次执行

mkfontscale
mkfontdir
fc-cache

如果报错命令没有找到,则安装对应命令,例如

yum install -y mkfontscale

4.赋予字体权限

cd /usr/share/fonts/zhFonts
chmod -R 755 *.TTF
chmod -R 755 *.ttf
chmod -R 755 *.ttc

5.生效

source /etc/profile

将之前kkfileview服务和office服务都停止重启

  1. #######################################不可动态配置,需要重启生效#######################################
  2. server.port = ${KK_SERVER_PORT:8012}
  3. server.servlet.context-path= /fileView
  4. server.servlet.encoding.charset = utf-8
  5. #启用GZIP压缩功能
  6. server.compression.enable= true
  7. #允许压缩的响应缓冲区最小字节数,默认2048
  8. server.compression.min-response-size = 2048
  9. #压缩格式
  10. server.compression.mime-types=application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain,font/woff,application/font-woff,font/eot,image/svg+xml,image/x-icon
  11. # 文件上传限制前端
  12. spring.servlet.multipart.max-file-size=500MB
  13. #文件上传限制
  14. spring.servlet.multipart.max-request-size=500MB
  15. ## Freemarker 配置
  16. spring.freemarker.template-loader-path = classpath:/web/
  17. spring.freemarker.cache = false
  18. spring.freemarker.charset = UTF-8
  19. spring.freemarker.check-template-location = true
  20. spring.freemarker.content-type = text/html
  21. spring.freemarker.expose-request-attributes = true
  22. spring.freemarker.expose-session-attributes = true
  23. spring.freemarker.request-context-attribute = request
  24. spring.freemarker.suffix = .ftl
  25. # office设置
  26. #openoffice或LibreOffice home路径
  27. #office.home = C:\\Program Files (x86)\\OpenOffice 4
  28. # office.home = ${KK_OFFICE_HOME:default}
  29. office.home = /opt/libreoffice7.5
  30. ## office转换服务的端口,默认开启两个进程
  31. office.plugin.server.ports = 2001,2002
  32. ## office 转换服务 task 超时时间,默认五分钟
  33. office.plugin.task.timeout = 5m
  34. #此属性设置office进程在重新启动之前可以执行的最大任务数。0表示无限数量的任务(永远不会重新启动)
  35. office.plugin.task.maxtasksperprocess = 200
  36. #此属性设置处理任务所允许的最长时间。如果任务的处理时间长于此超时,则此任务将中止,并处理下一个任务。
  37. office.plugin.task.taskexecutiontimeout = 5m
  38. #生成限制 默认不限制 使用方法 (1-5)
  39. office.pagerange = ${KK_OFFICE_PAGERANGE:false}
  40. #生成水印 默认不启用 使用方法 (kkFileView)
  41. office.watermark = ${KK_OFFICE_WATERMARK:false}
  42. #OFFICE JPEG图片压缩
  43. office.quality = ${KK_OFFICE_QUALITY:80}
  44. #图像分辨率限制
  45. office.maximageresolution = ${KK_OFFICE_MAXIMAGERESOLUTION:150}
  46. #导出书签
  47. office.exportbookmarks = ${KK_OFFICE_EXPORTBOOKMARKS:true}
  48. #批注作为PDF的注释
  49. office.exportnotes = ${KK_OFFICE_EXPORTNOTES:true}
  50. #加密文档 生成的PDF文档 添加密码(密码为加密文档的密码)
  51. office.documentopenpasswords = ${KK_OFFICE_DOCUMENTOPENPASSWORD:true}
  52. #xlsx格式前端解析
  53. office.type.web = ${KK_OFFICE_TYPE_WEB:web}
  54. # 其他核心设置
  55. #预览生成资源路径(默认为打包根路径下的file目录下)
  56. #file.dir = D:\\kkFileview\\
  57. file.dir = ${KK_FILE_DIR:default}
  58. #允许预览的本地文件夹 默认不允许任何本地文件被预览
  59. #WINDOWS参考 local.preview.dir = \D:\\kkFileview\\1\\1.txt (注意前面必须添加反斜杠)
  60. #LINUX参考 local.preview.dir = /opt/1.txt (注意前面必须是正斜杠)
  61. #使用方法 windows file://d:/1/1.txt linux file:/opt/1/1.txt
  62. #file 协议参考:https://datatracker.ietf.org/doc/html/rfc8089
  63. local.preview.dir = ${KK_LOCAL_PREVIEW_DIR:default}
  64. #是否启用缓存
  65. cache.enabled = ${KK_CACHE_ENABLED:true}
  66. #缓存实现类型,不配默认为内嵌RocksDB(type = default)实现,可配置为redis(type = redis)实现(需要配置spring.redisson.address等参数)和 JDK 内置对象实现(type = jdk),
  67. cache.type = ${KK_CACHE_TYPE:redis}
  68. #redis连接,只有当cache.type = redis时才有用
  69. spring.redisson.address = ${KK_SPRING_REDISSON_ADDRESS:127.0.0.1:6379}
  70. spring.redisson.password = ${KK_SPRING_REDISSON_PASSWORD:gCqk8XJ47vnAdG0BDtaZ5mMHIxNfKPrs}
  71. #缓存是否自动清理 true 为开启,注释掉或其他值都为关闭
  72. cache.clean.enabled = ${KK_CACHE_CLEAN_ENABLED:true}
  73. #缓存自动清理时间,cache.clean.enabled = true时才有用,cron表达式,基于Quartz cron
  74. cache.clean.cron = ${KK_CACHE_CLEAN_CRON:0 0 3 * * ?}
  75. #######################################可在运行时动态配置#######################################
  76. #提供预览服务的地址,默认从请求url读,如果使用nginx等反向代理,需要手动设置
  77. #base.url = https://file.keking.cn
  78. base.url = https://www.xxx.com/fileView
  79. #信任站点,多个用','隔开,设置了之后,会限制只能预览来自信任站点列表的文件,默认不限制
  80. #trust.host = kkview.cn
  81. trust.host = ${KK_TRUST_HOST:default}
  82. #不信任站点,多个用','隔开,设置了之后,会限制来自不信任站点列表的文件,默认不限制
  83. #not.trust.host = kkview.cn
  84. not.trust.host= ${KK_NOT_TRUST_HOST:default}
  85. #文本类型,默认如下,可自定义添加
  86. simText = ${KK_SIMTEXT:txt,html,htm,asp,jsp,xml,json,properties,md,gitignore,log,java,py,c,cpp,sql,sh,bat,m,bas,prg,cmd}
  87. #FTP模块设置
  88. #预览源为FTP时 FTP用户名,可在ftp url后面加参数ftp.username=ftpuser指定,不指定默认用配置的
  89. ftp.username = ${KK_FTP_USERNAME:ftpuser}
  90. #预览源为FTP时 FTP密码,可在ftp url后面加参数ftp.password=123456指定,不指定默认用配置的
  91. ftp.password = ${KK_FTP_PASSWORD:123456}
  92. #预览源为FTP时, FTP连接默认ControlEncoding(根据FTP服务器操作系统选择,Linux一般为UTF-8,Windows一般为GBK),可在ftp url后面加参数ftp.control.encoding=UTF-8指定,不指定默认用配置的
  93. ftp.control.encoding = ${KK_FTP_CONTROL_ENCODING:UTF-8}
  94. #视频设置
  95. #多媒体类型,默认如下,可自定义添加
  96. media = ${KK_MEDIA:mp3,wav,mp4,flv,mpd,m3u8,ts,mpeg,m4a}
  97. #是否开启多媒体类型转视频格式转换,目前可转换视频格式有:avi,mov,wmv,3gp,rm
  98. #请谨慎开启此功能,建议异步调用添加到处理队列,并且增加任务队列处理线程,防止视频转换占用完线程资源,转换比较耗费时间,并且控制了只能串行处理转换任务
  99. media.convert.disable = ${KK_MEDIA_CONVERT_DISABLE:false}
  100. #支持转换的视频类型
  101. convertMedias = ${KK_CONVERTMEDIAS:avi,mov,wmv,mkv,3gp,rm}
  102. #PDF预览模块设置
  103. #配置PDF文件生成图片的像素大小,dpi 越高,图片质量越清晰,同时也会消耗更多的计算资源。
  104. pdf2jpg.dpi = ${KK_PDF2JPG_DPI:144}
  105. #是否禁止演示模式
  106. pdf.presentationMode.disable = ${KK_PDF_PRESENTATION_MODE_DISABLE:true}
  107. #是否禁止打开文件
  108. pdf.openFile.disable = ${KK_PDF_OPEN_FILE_DISABLE:true}
  109. #是否禁止打印转换生成的pdf文件
  110. pdf.print.disable = ${KK_PDF_PRINT_DISABLE:true}
  111. #是否禁止下载转换生成的pdf文件
  112. pdf.download.disable = ${KK_PDF_DOWNLOAD_DISABLE:true}
  113. #是否禁止bookmark
  114. pdf.bookmark.disable = ${KK_PDF_BOOKMARK_DISABLE:true}
  115. #是否禁止签名
  116. pdf.disable.editing = ${KK_PDF_DISABLE_EDITING:false}
  117. #office类型文档(word ppt)样式,默认为图片(image),可配置为pdf(预览时也有按钮切换)
  118. office.preview.type = ${KK_OFFICE_PREVIEW_TYPE:image}
  119. #是否关闭office预览切换开关,默认为false,可配置为true关闭
  120. office.preview.switch.disabled = ${KK_OFFICE_PREVIEW_SWITCH_DISABLED:false}
  121. #水印内容
  122. #例:watermark.txt = ${WATERMARK_TXT:凯京科技内部文件,严禁外泄}
  123. #如需取消水印,内容设置为空即可,例:watermark.txt = ${WATERMARK_TXT:}
  124. watermark.txt = ${WATERMARK_TXT:}
  125. #水印x轴间隔
  126. watermark.x.space = ${WATERMARK_X_SPACE:10}
  127. #水印y轴间隔
  128. watermark.y.space = ${WATERMARK_Y_SPACE:10}
  129. #水印字体
  130. watermark.font = ${WATERMARK_FONT:微软雅黑}
  131. #水印字体大小
  132. watermark.fontsize = ${WATERMARK_FONTSIZE:18px}
  133. #水印字体颜色
  134. watermark.color = ${WATERMARK_COLOR:black}
  135. #水印透明度,要求设置在大于等于0.005,小于1
  136. watermark.alpha = ${WATERMARK_ALPHA:0.2}
  137. #水印宽度
  138. watermark.width = ${WATERMARK_WIDTH:180}
  139. #水印高度
  140. watermark.height = ${WATERMARK_HEIGHT:80}
  141. #水印倾斜度数,要求设置在大于等于0,小于90
  142. watermark.angle = ${WATERMARK_ANGLE:10}
  143. #首页功能设置
  144. #是否禁用首页文件上传
  145. file.upload.disable = ${KK_FILE_UPLOAD_ENABLED:false}
  146. # 备案信息,默认为空
  147. beian = ${KK_BEIAN:default}
  148. #禁止上传类型
  149. prohibit = ${KK_PROHIBIT:exe,dll,dat}
  150. #启用验证码删除文件 默认关闭
  151. delete.captcha= ${KK_DELETE_CAPTCHA:false}
  152. #删除密码
  153. delete.password = ${KK_DELETE_PASSWORD:123456}
  154. #删除 转换后OFFICE、CAD、TIFF、压缩包源文件 默认开启 节约磁盘空间
  155. delete.source.file = ${KK_DELETE_SOURCE_FILE:true}
  156. #首页初始化加载第一页
  157. home.pagenumber = ${DEFAULT_HOME_PAGENUMBER:1}
  158. #首页是否分页
  159. home.pagination = ${DEFAULT_HOME_PAGINATION:true}
  160. #首页初始化单页记录数
  161. home.pagesize = ${DEFAULT_HOME_PAGSIZE:15}
  162. #首页显示查询框
  163. home.search = ${DEFAULT_HOME_SEARCH:true}
  164. #Tif类型设置
  165. #Tif类型图片浏览模式:tif(利用前端js插件浏览);jpg(转换为jpg后前端显示);pdf(转换为pdf后显示,便于打印)
  166. tif.preview.type = ${KK_TIF_PREVIEW_TYPE:tif}
  167. #Cad类型设置
  168. #Cad类型图片浏览模式:tif(利用前端js插件浏览);svg(转换为svg显示);pdf(转换为pdf后显示,便于打印)
  169. cad.preview.type = ${KK_CAD_PREVIEW_TYPE:svg}
  170. #Cad转换超时设置
  171. cad.timeout =${KK_CAD_TIMEOUT:90}
  172. #Cad转换线程设置
  173. cad.thread =${KK_CAD_THREAD:5}



自动安装的话 可以不用看 这些内容

也可以提前手动安装所需依赖

Index of /libreoffice/old (documentfoundation.org)

手动安装  LibreOffice 

找到适合的版本号

下载Linux版本的

rpm安装方式

tar -zxvf LibreOffice_7.5.0.2_Linux_x86-64_rpm.tar
  1. cd LibreOffice_7.5.0.2_Linux_x86-64_rpm/
  2. cd RPMS/
  3. yum install -y *.rpm

查看是否安装成功 

  1. cd libreoffice7.5/
  2. cd program/
  3. ./soffice --version

如果有错误提示的话

/opt/libreoffice7.5/program/soffice.bin: error while loading shared libraries: libcups.so.2: cannot open shared object file: No such file or directory

执行以下命令

  1. yum install cairo
  2. ./soffice --version #如果依旧有错误的话,继续往下执行
  3. yum install cups-libs
  4. ./soffice --version #如果依旧有错误的话,继续往下执行
  5. yum install libSM
  6. ./soffice --version

设置linux环境变量

  1. export LibreOffice_PATH=/opt/libreoffice7.5/program
  2. export PATH=$LibreOffice_PATH:$PATH

配置 kkFileView 配置路径

编辑  config/application.properties   文件

修改 office.home 为自己刚安装libreoffice7.5的路径



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/627915
推荐阅读
相关标签
  

闽ICP备14008679号