Integration Guide

5 分钟把 kkFileView 接进你的业务项目。

这里按常见接入场景提供示例,方便你直接按需选用。默认假设服务地址为 https://preview.luokuiai.com:443/。

HTTP / HTTPS FTP AES-GCM 附加参数
URL 所有预览能力统一汇总到 `onlinePreview` 入口。
Base64 普通接入默认对原始文件地址做 Base64 编码后再传入。
参数扩展 支持页码、高亮、水印、密码、跨域、AES-GCM 和秘钥等控制项。
Quick Start

接入思路

推荐入口

前端只需要拿到可访问的文件 URL,然后把它编码后拼到 `https://preview.luokuiai.com:443/onlinePreview` 上即可。对于大多数业务系统,这是最快的落地路径。

  • 普通 HTTP/HTTPS 文件地址:直接 Base64 编码后传入。
  • 下载流接口没有后缀名:补充 `fullfilename=xxx.xxx`。
  • 鉴权或加密场景:附加 Basic、FTP、AES-GCM 等参数。
HTTP / HTTPS

普通文件地址预览

适用于系统已经直接暴露出可下载文件地址的情况。前端只需要编码后打开新窗口。

var url = 'http://127.0.0.1:8080/file/test.txt'; window.open('https://preview.luokuiai.com:443/onlinePreview?url=' + encodeURIComponent(base64Encode(url)));
Streaming

流式接口预览

很多业务系统通过 `fileId`、`code` 等参数走统一下载接口,此时原始 URL 没有后缀名,需要额外指定完整文件名。

var originUrl = 'http://127.0.0.1:8080/filedownload?fileId=1'; var previewUrl = originUrl + '&fullfilename=test.txt'; window.open('https://preview.luokuiai.com:443/onlinePreview?url=' + encodeURIComponent(Base64.encode(previewUrl)));
FTP

FTP 资源预览

FTP 如果允许匿名访问,可以直接预览;如果需要认证,则把连接参数拼到 URL 后面传入。

// 匿名 FTP var url = 'ftp://127.0.0.1/file/test.txt'; window.open('https://preview.luokuiai.com:443/onlinePreview?url=' + encodeURIComponent(Base64.encode(url))); // 认证 FTP var originUrl = 'ftp://127.0.0.1/file/test.txt'; var previewUrl = originUrl + '?ftp.control.port=21&ftp.username=admin&ftp.password=123456&ftp.control.encoding=utf8'; window.open('https://preview.luokuiai.com:443/onlinePreview?url=' + encodeURIComponent(Base64.encode(previewUrl)));
Basic Auth

带 Basic 鉴权的 HTTP 资源

如果文件源本身需要用户名和密码,可以直接把 Basic 鉴权参数拼到地址中,再交给 kkFileView。

var originUrl = 'http://127.0.0.1/file/test.txt'; var previewUrl = originUrl + '?basic.name=admin&basic.pass=123456'; window.open('https://preview.luokuiai.com:443/onlinePreview?url=' + encodeURIComponent(Base64.encode(previewUrl)));
AES-GCM

业务后端加密接入

共享密钥只保存在业务后端和 kkFileView。密文格式为 Base64URL(12字节随机IV || 密文 || 16字节认证标签),配置的密钥先用 SHA-256 派生 AES-256 密钥。不要在业务前端保存共享密钥。

import javax.crypto.Cipher; import javax.crypto.spec.GCMParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.net.URLEncoder; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.SecureRandom; import java.util.Base64; private static final SecureRandom RANDOM = new SecureRandom(); static String aesGcmEncrypt(String url, String secret) throws Exception { byte[] iv = new byte[12]; RANDOM.nextBytes(iv); byte[] key = MessageDigest.getInstance("SHA-256") .digest(secret.getBytes(StandardCharsets.UTF_8)); Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(key, "AES"), new GCMParameterSpec(128, iv)); byte[] encrypted = cipher.doFinal(url.getBytes(StandardCharsets.UTF_8)); return Base64.getUrlEncoder().withoutPadding().encodeToString( ByteBuffer.allocate(iv.length + encrypted.length).put(iv).put(encrypted).array()); } String url = "http://127.0.0.1/file/test.txt"; String encrypted = aesGcmEncrypt(url, System.getenv("KK_SOURCE_URL_SECRET")); String previewUrl = "https://preview.luokuiai.com:443/onlinePreview?url=" + URLEncoder.encode(encrypted, StandardCharsets.UTF_8) + "&encryption=aes";
Parameters

预览参数

下面列出 onlinePreview 当前实际读取的公开参数。除“源地址参数”外,均附加在预览地址上。

预览入口

url
必填。Base64 或 AES-GCM 编码后的原始文件地址。
key
实例启用访问秘钥后传入。
encryption=aes
声明 url 使用 AES-256-GCM 加密;未传时按 Base64 解码。
officePreviewType
Office/PDF 渲染模式:pdf、image、allImages 或 html。
forceUpdatedCache=true
忽略已有转换缓存并重新生成。
filePassword
加密 PDF 或 Office 文件的打开密码。
usePasswordCache=true
允许加密文件复用转换缓存。
highlightall
PDF、文本、Markdown 和源码预览的高亮关键字。
kkagent=true
由 kkFileView 代理读取跨域文件。

动态水印

watermarkTxt
水印文本。
watermarkFullScreen=true
PDF 模式下,水印覆盖整个预览区及背景;默认只覆盖 PDF 页面。
watermarkXSpace / watermarkYSpace
水印横向、纵向间距。
watermarkFont
字体名称。
watermarkFontsize
字号,例如 18px。
watermarkColor
文字颜色。
watermarkAlpha
透明度。
watermarkWidth / watermarkHeight
单个水印区域的宽度、高度。
watermarkAngle
旋转角度。

源地址参数(Base64/AES-GCM 编码前拼接)

fullfilename
下载流 URL 没有扩展名时指定完整文件名。
basic.name / basic.pass
源文件 HTTP Basic 鉴权账号和密码。
ftp.control.port
FTP 控制端口。
ftp.username / ftp.password
FTP 账号和密码。
ftp.control.encoding
FTP 文件名编码,例如 UTF-8 或 GBK。

请求头

kk-proxy-authorization
JSON 对象;代理下载源文件时,将其中的键值作为请求头转发。

page 和请求级 tifPreviewType 在当前版本没有完整生效,不建议业务接入依赖。

var url = 'http://127.0.0.1:8080/file/test.txt'; window.open( 'https://preview.luokuiai.com:443/onlinePreview?url=' + encodeURIComponent(base64Encode(url)) + '&filePassword=123' + '&highlightall=kkfileview' + '&watermarkTxt=kkfileview' + '&kkagent=false' + '&key=123' );
Configuration

环境变量配置

只列出当前版本明确支持的环境变量,并关联对应的配置项与默认值;未映射环境变量的内部配置不在这里展示。

这里只展示配置结构和仓库默认值,不读取运行环境中的真实值;密钥、密码等敏感默认值已隐藏。

服务器基础配置 3 项
配置项 环境变量 默认值 说明
server.port KK_SERVER_PORT 8012 服务器端口号,默认8012
server.servlet.context-path KK_CONTEXT_PATH / 应用上下文路径,默认为根路径 /
html.cache.max-age KK_HTML_CACHE_MAX_AGE 0 静态HTML页面缓存时间(秒),0表示每次使用前向服务器校验,修改后需重启
首页与文件管理配置 9 项
配置项 环境变量 默认值 说明
home.page.enabled KK_HOME_PAGE_ENABLED true 是否展示首页、接入说明、版本记录等门户页面,默认为true(展示)
file.upload.disable KK_FILE_UPLOAD_DISABLE true 是否禁用首页文件上传功能,默认为true(禁用)
file.download.max-size KK_FILE_DOWNLOAD_MAX_SIZE 1GB 远程文件下载大小上限,支持 B、KB、MB、GB;默认1GB
beian KK_BEIAN default 网站备案信息,显示在首页底部,默认为空
home.pagenumber DEFAULT_HOME_PAGENUMBER 1 首页初始化加载的页码,默认为1(第一页)
home.pagesize DEFAULT_HOME_PAGSIZE 20 首页每页显示的文件数量,默认为20
delete.captcha KK_DELETE_CAPTCHA false 文件删除验证配置
delete.password KK_DELETE_PASSWORD false 删除文件密码,默认为false(禁用删除接口)
delete.source.file KK_DELETE_SOURCE_FILE true 是否删除转换后的源文件,默认为true(删除)
Office文档处理配置 11 项
配置项 环境变量 默认值 说明
office.home KK_OFFICE_HOME default Office组件安装路径,默认为自动查找
office.pagerange KK_OFFICE_PAGERANGE false Office文档分页范围,支持动态配置
office.watermark KK_OFFICE_WATERMARK false Office文档水印功能,支持动态配置
office.quality KK_OFFICE_QUALITY 80 Office图片质量,1-100,默认80
office.maximageresolution KK_OFFICE_MAXIMAGERESOLUTION 150 Office图片最大分辨率,默认150
office.exportbookmarks KK_OFFICE_EXPORTBOOKMARKS true 导出Office书签,支持动态配置
office.exportnotes KK_OFFICE_EXPORTNOTES true 是否将Office文档中的批注作为PDF注释导出,默认为true(导出)
office.documentopenpasswords KK_OFFICE_DOCUMENTOPENPASSWORD true 加密文档生成的PDF是否添加密码,默认为true(添加)
office.type.web KK_OFFICE_TYPE_WEB web Excel文档(xlsx)的前端解析方式,默认为web(Web端解析)
office.preview.type KK_OFFICE_PREVIEW_TYPE pdf Office文档预览类型
office.preview.switch.disabled KK_OFFICE_PREVIEW_SWITCH_DISABLED true 是否关闭Office预览模式切换开关,默认为true(关闭切换)
CAD文件处理配置 3 项
配置项 环境变量 默认值 说明
cad.preview.type KK_CAD_PREVIEW_TYPE svg CAD文件预览类型
cad.thread KK_CAD_THREAD 5 CAD文件处理线程数
cad.timeout KK_CAD_TIMEOUT 90 CAD文件处理超时时间(秒)
PDF文件处理配置 8 项
配置项 环境变量 默认值 说明
pdf.presentationMode.disable KK_PDF_PRESENTATION_MODE_DISABLE true 是否禁止PDF演示模式,默认为true(禁止)
pdf.openFile.disable KK_PDF_OPEN_FILE_DISABLE true 是否禁止PDF文件菜单中的"打开文件"选项,默认为true(禁止)
pdf.print.disable KK_PDF_PRINT_DISABLE true 是否禁止PDF打印功能,默认为true(禁止)
pdf.download.disable KK_PDF_DOWNLOAD_DISABLE true 是否禁止PDF下载功能,默认为true(禁止)
pdf.bookmark.disable KK_PDF_BOOKMARK_DISABLE true 是否禁止PDF书签/大纲功能,默认为true(禁止)
pdf.disable.editing KK_PDF_DISABLE_EDITING false 是否禁止PDF编辑功能(注释、表单等),默认为false(允许编辑)
pdf.sidebar.open KK_PDF_SIDEBAR_OPEN false 是否默认打开PDF侧边栏(缩略图面板),默认为false(关闭)
pdf2jpg.dpi KK_PDF2JPG_DPI 144 PDF转图片的基准DPI,默认为144
TIF文件处理配置 1 项
配置项 环境变量 默认值 说明
tif.preview.type KK_TIF_PREVIEW_TYPE tif TIF文件预览类型
媒体文件处理配置 3 项
配置项 环境变量 默认值 说明
media KK_MEDIA mp3,wav,mp4,flv,mpd,m3u8,ts,mpeg,m4a 媒体文件类型(音频、视频)
convertMedias KK_CONVERTMEDIAS avi,mov,wmv,mkv,3gp,rm,mpeg 需要转换的媒体文件类型
media.convert.disable KK_MEDIA_CONVERT_DISABLE false 是否禁用视频格式转换功能,默认为false(禁用)
文件存储与缓存配置 10 项
配置项 环境变量 默认值 说明
file.dir KK_FILE_DIR default 预览生成资源的存储路径,默认为应用根路径下的file目录
local.preview.dir KK_LOCAL_PREVIEW_DIR default 允许预览的本地文件夹路径,默认为default(禁止所有本地文件预览)
cache.enabled KK_CACHE_ENABLED true 是否启用缓存,支持动态配置
cache.type KK_CACHE_TYPE jdk 缓存实现类型,默认为jdk(使用JDK内置对象实现)
preview.token.secret KK_PREVIEW_TOKEN_SECRET (空) 预览资源令牌无有效期;多实例部署必须配置相同密钥,轮换密钥可使全部旧令牌失效
spring.redisson.address KK_SPRING_REDISSON_ADDRESS redis://127.0.0.1:6379 Redis连接地址,支持多种格式:
spring.redisson.password KK_SPRING_REDISSON_PASSWORD (空) Redis连接密码,无密码时留空
spring.redisson.database KK_SPRING_REDISSON_DATABASE 0 Redis数据库索引,默认为0(0-15)
cache.clean.enabled KK_CACHE_CLEAN_ENABLED true 缓存清理配置
cache.clean.cron KK_CACHE_CLEAN_CRON 0 0 3 * * ? 缓存自动清理时间,使用Quartz cron表达式,默认为每天凌晨3点执行
安全与访问控制配置 4 项
配置项 环境变量 默认值 说明
base.url KK_BASE_URL default 提供预览服务的地址,默认从请求url读,如果使用nginx等反向代理,需要手动设置
trust.host KK_TRUST_HOST default 信任站点白名单配置,多个用','隔开
not.trust.host KK_NOT_TRUST_HOST default 不信任站点黑名单配置,多个用逗号隔开
prohibit KK_PROHIBIT exe,dll,dat 禁止访问的文件类型,安全限制
水印配置 10 项
配置项 环境变量 默认值 说明
watermark.txt WATERMARK_TXT (空) 水印文本内容
watermark.x.space WATERMARK_X_SPACE 160 水印X轴间距
watermark.y.space WATERMARK_Y_SPACE 130 水印Y轴间距
watermark.font WATERMARK_FONT 微软雅黑 水印字体
watermark.fontsize WATERMARK_FONTSIZE 18px 水印字体大小
watermark.color WATERMARK_COLOR black 水印颜色
watermark.alpha WATERMARK_ALPHA 0.06 水印透明度,0.0-1.0
watermark.width WATERMARK_WIDTH 180 水印宽度
watermark.height WATERMARK_HEIGHT 80 水印高度
watermark.angle WATERMARK_ANGLE 10 水印旋转角度
权限与认证配置 1 项
配置项 环境变量 默认值 说明
source.url.secret KK_SOURCE_URL_SECRET false 源地址 AES-256-GCM 共享密钥,false 表示禁用,请使用足够长的随机字符串
文件类型分类配置 1 项
配置项 环境变量 默认值 说明
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 纯文本文件类型,直接显示
运行路径 1 项
配置项 环境变量 默认值 说明
运行目录 KKFILEVIEW_BIN_FOLDER 当前工作目录 指定安装或运行目录,用于定位程序的 bin、config 等目录。