当前位置: 首页 > news >正文

文档在线预览:keking/kkFileView踩坑记

文章目录

  • 一、概述
    • 1、官方文档
    • 2、使用
  • 二、部署服务
    • 1、传统部署方式
      • (1)环境要求
      • (2)生成部署包
    • 2、docker部署方式
  • 三、踩坑
    • 1、预览并发问题&预览首次打开慢
    • 2、字体问题乱码
    • 3、水印问题
    • 4、使用nginx代理
    • 5、docker部署指定配置

一、概述

1、官方文档

gitee源码:https://gitee.com/kekingcn/file-online-preview#5-pdf%E6%96%87%E6%A1%A3%E9%A2%84%E8%A7%88
官方文档:https://kkview.cn/zh-cn/index.html

2、使用

当您的项目内需要预览文件时,只需要调用浏览器打开本项目的预览接口,并传入须要预览文件的url,示例如下:

<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/js-base64@3.6.0/base64.min.js"></script>var url = 'http://127.0.0.1:8080/file/test.txt'; //要预览文件的访问地址
window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url)));

二、部署服务

1、传统部署方式

(1)环境要求

Java: 1.8+
LibreOffice或OpenOffice(Windows下已内置,CentOS或Ubuntu下会自动下载安装,MacOS下需要自行安装)

(2)生成部署包

可以从官网下,但是需要加入知识星球(付费)。
也可以下载源码自己进行构建:
在这里插入图片描述
在这里插入图片描述
解压kkFileView-x.x.x文件(Windows用.zip包,Linux/MacOS用.tar.gz包)
打开解压后文件夹的bin目录,运行startup脚本(Windows下以管理员身份运行startup.bat,Linux以root用户运行startup.sh)
浏览器访问本机8012端口 http://127.0.0.1:8012 即可看到项目演示用首页

2、docker部署方式

官网说的是直接可以拉取镜像,但是我一直拉不下来,或许需要自己进行构建。

在这里插入图片描述
把fonts和Dockerfile都拷贝到docker服务器,然后运行dockerbuild.txt中的命令即可构建基础镜像。

后续打出jar包进行构建即可。

三、踩坑

1、预览并发问题&预览首次打开慢

可使用预览转码队列,将需要预览的文件url放入队列中,提前进行转码,本地访问接口为:http://127.0.0.1:8012/addTask?url=http://xxx/test.txt (url参数为需要需要的文件访问地址,GET请求)

2、字体问题乱码

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

3、水印问题

在预览url后面加上参数&watermarkTxt即可
例如:

var url = 'http://127.0.0.1:8080/file/test.txt'; //要预览文件的访问地址
window.open('http://127.0.0.1:8012/onlinePreview?url=' + encodeURIComponent(Base64.encode(url)) + '&watermarkTxt=' + encodeURIComponent('动态水印'));

4、使用nginx代理

例如nginx的访问地址为 https://file.keking.cn 想要使用 https://file.keking.cn/preview/来做预览,kkFileView部署在内网192.168.1.233服务器上,需要在nginx中添加反向代理如下:

location /preview {proxy_pass http://192.168.1.233:8012/;
}

修改kkFileView的配置文件如下两项

server.servlet.context-path = /preview
base.url = https://file.keking.cn/preview

使用如下地址来访问预览页面

<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/js-base64@3.6.0/base64.min.js"></script>var url = 'https://file.keking.cn/file/test.txt'; //要预览文件的访问地址
window.open('https://file.keking.cn/preview/onlinePreview?url='+encodeURIComponent(Base64.encode(url)));

5、docker部署指定配置

针对docker运行的用户,所有配置项可以使用设置相应的环境变量来配置
环境变量的KEY为配置文件中每个配置项后${}中的KEY
例如,使用docker运行要指定base.url为http://file.keking.cn,docker运行命令如下

docker run -it -d -p 8012:8012 -e KK_BASE_URL="http://file.keking.cn" keking/kkfileview:v2.2.1

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 精通Perl代码优化:释放自定义优化技术的力量
  • 微软蓝屏事件:全球网络安全与系统稳定性的警示
  • Unity获取Animator动画播放完成事件
  • 第三十一天 chrome调试工具
  • 2023-2024年 Java开发岗面试题经验分享
  • ESP32是什么?
  • C++函数详解:全面指南
  • 什么是API 网关?为什么要 API网关?
  • AI应用开发前景与目标
  • vitis (eclipse) 的Indexer不能搜索、不能跳转到函数和变量定义和声明不能打开调用层次的解决方法
  • iOS ------RunLoop
  • [Spring] SpringBoot统一功能处理与图书管理系统
  • Rust的运行时多态
  • 打卡第31天------贪心算法
  • 基于深度学习的面部表情分类识别系统
  • 《剑指offer》分解让复杂问题更简单
  • css布局,左右固定中间自适应实现
  • CSS相对定位
  • C学习-枚举(九)
  • ECMAScript入门(七)--Module语法
  • go append函数以及写入
  • JavaScript 基本功--面试宝典
  • javascript从右向左截取指定位数字符的3种方法
  • Js基础知识(四) - js运行原理与机制
  • Koa2 之文件上传下载
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Spark学习笔记之相关记录
  • Vim Clutch | 面向脚踏板编程……
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 软件开发学习的5大技巧,你知道吗?
  • 什么是Javascript函数节流?
  • 实习面试笔记
  • 数据仓库的几种建模方法
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 与 ConTeXt MkIV 官方文档的接驳
  • ​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #define,static,const,三种常量的区别
  • #laravel 通过手动安装依赖PHPExcel#
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (11)MSP430F5529 定时器B
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (2.2w字)前端单元测试之Jest详解篇
  • (2015)JS ES6 必知的十个 特性
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (三)mysql_MYSQL(三)
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解