kkFileView实现文档在线预览、加水印

本文最后更新于:May 13, 2023 pm

文档在线预览项目解决方案,项目使用流行的spring boot搭建,易上手和部署。万能的文件预览开源项目,基本支持主流文档格式预览

目录

官方文档

自 v4.1.0 版本开始 kkFileView 不再免费提供 Windows 和 Linux 的发行安装包了,以前旧版本的安装包也取消了下载入口,要下载安装包还要花99块钱进那个KK开源社区群获取。

安装包

v4.0.0 安装包

本文版本V4.2.1,以自行拉取运行为例。

拉取

1
git clone https://gitee.com/kekingcn/file-online-preview.git

或者直接在发行版中下载源码。再导入IDEA中。

运行

在IDEA中找到主类并运行:

1
src/main/java/cn/keking/ServerMain.java

成功运行后,控制台上会打印前端网页地址:http://127.0.0.1:8012 (默认)

访问该地址会有一个kkFileView的前端控制界面。在此页面中可以上传预览文件。

集成SpringBoot

无需任何依赖。

在线预览

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.tothefor.demo.kk;

import org.apache.commons.codec.binary.Base64;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
* @Author DragonOne
* @Date 2023/5/4 15:19
*/

@RestController
@RequestMapping("/kk")
public class KkFileViewCtr {

// 需要预览的文件地址,这里是做例子所以写死了
final String URL = "http://192.168.199.105:9000/test/test-upload.pdf";

// kkFileView的启动地址,这里是以上面启动的默认为例
final String BASE_URL = "http://127.0.0.1:8012/";

@RequestMapping("/get")
public String look() {
return BASE_URL+"onlinePreview?url="+Base64.encodeBase64String(URL.getBytes());
}

}

添加水印

根据官方文档,只需要在链接后拼接一个watermarkTxt参数即可。

1
2
3
4
5
@RequestMapping("/get")
public String look() {
String text= "tothefor.com%20"+ LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd%20HH:mm:ss"));
return BASE_URL+"onlinePreview?url="+Base64.encodeBase64String(URL.getBytes())+"&watermarkTxt=" + text;
}

注意,如果要预览的url里包含需要转义的特殊字符,如下表格,请使用encodeURIComponent(url)转义。

符号 url中转义结果 转义码
+ URL 中+号表示空格 %2B
空格 URL中的空格可以用+号或者编码 %20
/ 分隔目录和子目录 %2F
分隔实际的URL和参数 %3F
% 指定特殊字符 %25
# 表示书签 %23
& URL 中指定的参数间的分隔符 %26
= URL 中指定参数的值 %3D

自定义路径

即可以将在线预览地址改为:http://127.0.0.1:8012/view/

只需要在kkFileView源码项目中的配置文件修改为:

1
2
3
4
# 将
server.servlet.context-path= ${KK_CONTEXT_PATH:/}
# 修改为
server.servlet.context-path= ${KK_CONTEXT_PATH:/view}

然后在使用的地方也需要加上对应的路径:

1
2
3
4
5
6
7
final String URL = "http://192.168.199.105:9000/test/test-upload.pdf";
final String BASE_URL = "http://127.0.0.1:8012/view/";

@RequestMapping("/get")
public String look() {
return BASE_URL+"onlinePreview?url="+Base64.encodeBase64String(URL.getBytes());
}

本文作者: 墨水记忆
本文链接: https://tothefor.com/DragonOne/66502bd5.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!