kkFileView安装及使用——文件预览解决方案

article/2025/9/6 0:53:46

目录

    • 一、前言
    • 二、kkFileView介绍
    • 三、kkFileView安装
    • 四、kkFileView的配置和使用

一、前言

网页端一般会遇到各种文件,比如:txt、doc、docx、pdf、xml、xls、xlsx、ppt、pptx、zip、png、jpg等等。

有时候我们不想要把文件下载下来,而是想在线打开文件预览 ,这个时候如果每一种格式都需要我们去写代码造轮子去实现预览功能就太复杂了,并且自己实现的话会有很多兼容性问题。
这个时候 kkFileView 的出现就解决了我们的问题。

二、kkFileView介绍

kkFileView 为文件文档在线预览解决方案,该项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,xls,xlsx,ppt,pptx,pdf,txt,zip,rar,图片,视频,音频等等

kkFileView 官网
kkFileView 码云地址官网
kkFileView github地址官网

三、kkFileView安装

自 v4.1.0 版本开始 kkFileView 不再免费提供 Windows 和 Linux 的发行安装包了,以前旧版本的安装包也取消了下载入口,要下载安装包还要花99块钱进那个KK开源社区群获取。不过我之前下载过 v4.0.0 版,也够用了,为了方便大家我已经上传百度云了,你可以通过下面文章中的链接进行下载,本文的安装使用教程也是基于 v4.0.0 版本进行操作 。

部署指南参考kkFileView - 在线文件预览 下面介绍Windows、Linux、docker三种安装方式。

  • 1.下载Windows或Linux的 v4.0.0 安装包 :

    • 1.1 windows安装包下载 (链接:https://pan.baidu.com/s/1hZCP5jcD5cKd-xCsMHfYxg 提取码:7uwd)

    • 1.2 linux安装包下载 (链接:https://pan.baidu.com/s/1grhyoIQ_Tr2NHyCZPFYDWg 提取码:13hj)

  • 2.Windows上安装

    • 2.1 下载的 zip 压缩包解压后进入 bin 目录,双击 startup.bat 启动 kkFileView

    • 2.2 30秒后进入 log 目录查看 kkFileView.log 日志,打印【kkFileView 服务启动完成,耗时:26.8350973s,演示页请访问: http://127.0.0.1:8012 】则说明启动成功。

  • 3.Linux上安装(centos为例)

    • 3.1 root用户下将 kkFileView-4.0.0.tar.gz 上传到服务器 ,使用命令 tar -zxvf kkFileView-4.0.0.tar.gz 解压,开放 8012 端口。

    • 3.2 root用户下解压后进入 kkFileView-4.0.0/bin 目录,执行 ./startup.sh 开始安装和启动,安装过程中会下载需要的组件需要输入y

    • 3.3 安装字体。若不安装字体转化出的pdf文件可能会因为缺少字体乱码。
      字体下载(链接:http://kkfileview.keking.cn/fonts.zip)
      或者 百度云下载(链接:https://pan.baidu.com/s/1VMGERMHAI7W_Ys-MZC_YTQ 提取码:p6hq)

      将下载的字体fonts.zip上传到 /usr/share/fonts 目录解压后执行命令 mkfontscale
      若 mkfontscale 提示没有命令则先 yum install mkfontscale 安装命令
      再分别依次执行 mkfontscale、mkfontdir、fc-cache 命令。

    • 3.4 安装完成后 kkFileView-4.0.0/bin/ 目录下使用命令 ./showlog.sh 查看日志
      如果出现: 【kkFileView 服务启动完成,耗时:5.99157928s,演示页请访问: http://127.0.0.1:8012 】,则表示安装启动成功。

    • 3.5 如果日志提示报错信息【找不到office组件,请确认’office.home’配置是否有误 】。

    • (1)可能是 install.sh 中脚本有问题,尝试将脚本中的:

    • wget https://kkfileview.keking.cn/LibreOffice_7.1.4_Linux_x86-64_deb.tar.gz -cO LibreOffice_7_deb.gz && tar -zxf /tmp/LibreOffice_7_deb.tar.gz && cd /tmp/LibreOffice_7.1.4.2_Linux_x86-deb/RPMS

    • 改为如下:

    • wget https://kkfileview.keking.cn/LibreOffice_7.1.4_Linux_x86-64_deb.tar.gz -cO LibreOffice_7_deb.tar.gz && tar -zxf /tmp/LibreOffice_7_deb.tar.gz && cd /tmp/LibreOffice_7.1.4.2_Linux_x86-64_deb/DEBS

    • 然后重启 kkFileView 看问题是否还存在

    • (2) 若 install.sh 修改后问题依然存在,则需要下载 LibreOffice 组件安装。 LibreOffice下载 (链接:https://downloadarchive.documentfoundation.org/libreoffice/old/7.1.4.2/rpm/x86_64/)
      或者:
      百度云下载(链接:https://pan.baidu.com/s/18tLufbFQCOm11R7-U2f0-Q 提取码:0npj)将 LibreOffice_7.1.4.2_Linux_x86-64_rpm.tar.gz 上传服务器,然后解压后进入RPMS目录执行 yum localinstall *.rpm 进行安装。

    • 3.6 如果日志提示报错信息【Caused by: java.lang.IllegalStateException: a process with acceptString ‘socket,host=127.0.0.1,port=2001’ is already running】

      (1)用 ps -ef|grep java 命令查询出Java相关运行的进程,然后关闭kkFileView相关的进程,
      并查看2001和2002端口的进程并关闭该进程。然后再执行 ./startup.sh 启动并查看日志。

      (2)如果是安装在Linux上并且关闭了kkFileView相关的进程以及2001和2002端口,启动日志任
      然存在该问题,那么可能是你远程连接服务器的软件导致的这个问题,改用window的cmd,
      用ssh连接服务器启动程序尝试。

    • 3.7 如果日志提示报错信息【Caused by: org.artofsolving.jodconverter.office.OfficeException: could not establish connection】,可参考 centos下启动失败:启动office组件失败,请检查office组件是否可用

  • 4.通过docker安装

    • 4.1 拉取镜像: docker pull keking/kkfileview

    • 4.2 运行: docker run -dit -p 8012:8012 keking/kkfileview

    • 4.3 进入运行起来的容器中,然后可以进入 /opt/kkFileView-4.1.0-SNAPSHOT/bin 安装目录,
      运行命令 ./showlog.sh 查看日志

四、kkFileView的配置和使用

1.修改启动脚本
测试发现如果 kkfileview 安装在 Windows 上预览 txt 文件会乱码,所以需要修改 kkfileview 的 bin 目录下的 startup.bat 脚本。
在最后一行的 java 后添加 -Dfile.encoding=UTF-8
修改后如下:

@echo off
set "KKFILEVIEW_BIN_FOLDER=%cd%"
cd "%KKFILEVIEW_BIN_FOLDER%"
echo Using KKFILEVIEW_BIN_FOLDER %KKFILEVIEW_BIN_FOLDER%
echo Starting kkFileView...
echo Please check log file in ../log/kkFileView.log for more information
echo You can get help in our official homesite: https://kkFileView.keking.cn
echo If this project is helpful to you, please star it on https://gitee.com/kekingcn/file-online-preview/stargazers
java -Dfile.encoding=UTF-8 -Dspring.config.location=..\config\application.properties -jar kkFileView-4.0.0.jar -> ..\log\kkFileView.log

2.关闭演示页面

kkFileView安装启动成功后可以打开 http://安装的ip:8012 (或者本机 http://127.0.0.1:8012) 查看演示页面上传文件以及查看预览效果。

在这里插入图片描述

如果项目上线后为了安全要关闭演示页面,可以在修改kkFileView安装目录的config文件夹中的 application.properties配置文件,将file.upload.disable设置为false禁用演示首页文件上传。

其他配置可根据 官网配置说明 进行配置。

2.kkFileView的使用

参照官网使用说明:使用说明

<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/js-base64@3.6.0/base64.min.js"></script>var originUrl = 'http://127.0.0.1:8080/filedownload?fileId=1'; //要预览文件的访问地址,该接口返回文件流
var previewUrl = originUrl + '&fullfilename=test.txt'//fullfilename是必须的,有了该参数kkFileView才知道文件名是什么
//kkFileView的onlinePreview接口就会拿着参数去请求http://127.0.0.1:8080/filedownload接口,把文件下载到安装目录的file/demo文件夹下,然后转换后把预览界面展示到浏览器。
window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(previewUrl)));

当然,为了文件安全和实效性,你可以在你的接口中加入token或者其他校验参数,满足了才能下载文件。

比如:

<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/js-base64@3.6.0/base64.min.js"></script>var originUrl = 'http://127.0.0.1:8080/filedownload?token=sgdfhkkmlk&time=1659006176&fileID=4564sfd&filename=test.xls'; //要预览文件的访问地址,该接口返回文件流
var previewUrl = originUrl + '&fullfilename=test.xls'//fullfilename是必须的,该参数是kkFileView保存的文件名
window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(previewUrl)));

注意:

encodeURIComponent(Base64.encode(previewUrl))

这里因为编码问题我踩过坑,所以需要注意下当使用 base64 对 previewUrl 进行编码时,如果采用MIME友好型 base64 加密会导致长度每大于 76 就会加入\r 或者 \n 这样的换行控制符,这样再使用encodeURIComponent进行编码就会产生 %0A 这样的字符,就会导致预览不了。解决办法就是base64编码后去除 \r 和 \n 然后再使用 encodeURIComponent 编码,encodeURIComponent 编码后再去除 %0A


参考:
gitee开源程序kkFileView踩坑及解决方案
kkFileView LibreOffice文件预览
kkfileView 使用问题年终答疑篇
centos下启动失败:启动office组件失败,请检查office组件是否可用
java实现(如:WORD、EXCEL、PPT、ZIP 等)文件在线预览功能


http://chatgpt.dhexx.cn/article/aF7apfWq.shtml

相关文章

基于若依前后端分离版(Springboot+Vue)的文件预览

主要介绍两种方式实现文件预览的方式&#xff0c;一种是通过前端插件匹配不同的文件&#xff0c;另一种就是使用已经完善的文件预览系统。我更推荐使用第二种方式&#xff0c;因为这样会少去很多工作量。本文主要介绍第一种方式&#xff0c;第二种方式会出现在另外一篇文章中。…

Java中如何实现文件预览的功能

文件预览方法总结 前言一、kkfileview 文件在线预览二、officetohtml纯前端的方式三、JODConverter四、Aspose总结 前言 日常开发中常见的文件格式有pdf&#xff0c;word&#xff0c;Excel&#xff0c;PPT&#xff0c;Html&#xff0c;txt&#xff0c;图片等。pdf&#xff0c;…

前端技术实现文件预览(word、excel、pdf、ppt、mp4、图片、文本)

前言 因为业务需要&#xff0c;很多文件需要在前端实现预览&#xff0c;今天就来了解一下吧。 Demo地址[1]&#xff1a;https://zhuye1993.github.io/file-view/dist/index.html 实现方案 找了网上的实现方案&#xff0c;效果看起来不错&#xff0c;放在下面的表格里&#xff0…

localStorage怎样存取数据 怎样清除localStorage存储的数据

localStorage很多时候用来存储数据非常好&#xff0c;方便在页面中使用某些数据的时候调用 首先&#xff0c;通过setItem(key,value)即可存储数据 然后用getItem(key)的方式即可取得数据 可以看到&#xff0c;设置之后在浏览器的localStorage中看到存储的数据 使用localStoage…

Android App清除数据的方案

前言 最近MIUI13上出了个未经应用商店安装&#xff0c;算是未知来源。AndroidID&#xff0c;通知&#xff0c;网络权限没授权则默认关闭。 安装app时允许虚拟身份ID&#xff1a; 允许允许虚拟身份ID前获取一次AndroidId&#xff1a; attachBaseContext获取AndroidId, 此时还没…

kafka清理数据

由于项目原因&#xff0c;最近经常碰到Kafka消息队列拥堵的情况。碰到这种情况为了不影响在线系统的正常使用&#xff0c;需要大家手动的清理Kafka Log。但是清理Kafka Log又不能单纯的去删除中间环节产生的日志&#xff0c;中间关联的很多东西需要手动同时去清理&#xff0c;否…

Kafka数据清理

目录 kafka数据清理日志删除&#xff08;Log Deletion&#xff09;1. 基于时间的保留策略2. 基于日志大小的保留策略3. 基于日志起始偏移量保留策略 日志压缩&#xff08;Log Compaction&#xff09; 原文地址&#xff1a;https://program-park.github.io/2021/09/18/kafka_11/…

mysql数据库要定期清除吗_数据库mysql定时清除数据

数据库mysql定时清除数据 数据库mysql定时清除数据 https://www.jiangweishan.com/article/2384238490809808.html 作者&#xff1a;andy0012019.11.22来源&#xff1a;Web前端之家浏览&#xff1a;2081评论:0 关键词&#xff1a;jsmysql 一个项目如果规划不合理&#xff0c;每…

SDN是什么,与传统分布式网络有什么区别

传统的的分布式网络 分布式网络也叫网状网络&#xff0c;它是由分布在不同地点的计算机系统互连而成&#xff0c;网中无中心节点。通信子网是封闭式结构&#xff0c;通信控制功能分布在各节点上。 分布式网络的特点是&#xff1a;可靠性高&#xff1b;网内节点共享资源容易&am…

软件定义网络(SDN)

SDN基本概述 参考文章&#xff1a;SDN基本概述、解读SDN的东西、南北向接口 传统网络数据控制与转发 传统网络是分布式控制的架构&#xff0c;每台设备都包含独立的控制平面&#xff0c;数据平面。 传统网络是分布式控制的架构&#xff1a; 这里的分布式控制指在传统IP网络…

sdn通俗介绍

拼客学院服务号 前言 SDN&#xff08;Software Defined Network&#xff09;即软件定义网络&#xff0c;是一种网络设计理念&#xff0c;或者一种推倒重来的设计思想。只要网络硬件可以集中式软件管理&#xff0c;可编程化&#xff0c;控制转发层面分开&#xff0c;则可以认为这…

SDN — Google B4 SDN WAN 网络架构

目录 文章目录 目录Google B4 SDN WAN 网络B4 网络架构物理设备层局部网络控制层全局控制层Google B4 SDN WAN 网络 Google 的 WAN 有 2 张网络(Two Backbones): B2(Internet-facing WAN,I-Scale Network):数据中心互联 Internet(POP)的网络,用于面向 Internet 用户…

SDN基础理解

1. 何为SDN 1) 为什么需要一个全新的网络架构&#xff0c;比如SDN&#xff1f; 在传统的架构中&#xff0c;交换机和路由器不得不在操作6000种分布式协议的控制下实施整个网络的智能。这就意味着&#xff0c;即使只有一个网元增加了一种新的协议&#xff0c;也需要所有其他网元…

SDN概述

SDN概述1 SDN是什么 ONRC是 SDN创始人斯坦福大学教授Nick McKeown和加州大学伯克利分校教授 Scott Shenker&#xff0c;以 Larry Peterson教授 共同创建的研究架构。ONRC对SDN的定义是&#xff1a;“SDN是一种逻辑集中控制的新网络架构&#xff0c;其关键属性包括&#xff1a…

SDN网络架构简述

SDN的特点之一就是控制平面与数据平面分离&#xff0c;其主张通过集中式的控制器平台实现网络的控制。在SDN架构中&#xff0c;控制平面是逻辑集中的&#xff0c;通过某种协议将控制信息下发至底层的数据平面去执行。所以&#xff0c;控制平面被称为SDN的大脑&#xff0c;指挥整…

什么是SDN

为什么要推出SDN&#xff1f; SDN的起源 • SDN ( Software Defined Networking &#xff09;即软件定义网络。是由斯坦福大学Clean Slate研究组提出的一种新型网络创新架构。 真核心理念通过将网络设备控制平面与数据平面分离&#xff0c;从而实现了网络控制平面的集中 控制&…

SDN概述,SDN是什么?

软件定义网络(Software Defined Network, SDN)在InfoWorld于2011年11月公布的将影响未来10年的十项新技术中排名第二。2012年7月&#xff0c;SDN代表厂商Nicira被 VMware以12.6亿美元收购&#xff0c;随后Google宣布成功在其全球10个IDC网络中部署SDN&#xff0c;这促使SDN引起…

SDN网络概述

SDN是一种存在逻辑上集中控制的新型网络结构&#xff0c;其主要特征是数据平面与控制平面分离。数据平面与控制平面之间通过标准的开放接口OpenFlow实现信息交互。 一、SDN的主要内容 SDN在数据平面、控制平面、应用平面的研究内容主要涉及以下方面&#xff1a; 1&#xff0…

SDN基本概念

文章目录 SDN基本概念SDN的概念与体系结构背景传统网络数据控制与转发传统网络结构体系传统网络缺点 SDN概述SDN网络体系架构SDN架构下的接口SDN基本原理OpenFlow的思想和功能OpenFLow网络交换模型 SDN价值网络业务快速创新简化网络网络设备白牌化业务自动化网络路径流量优化 传…

SDN技术概述

1.SDN架构定义 软件定义网络&#xff08;Software Defined Networking&#xff0c;SDN&#xff09;是一种数据平面与控制分离、软件可编程的新型网络体系架构&#xff0c;开放网络基金会&#xff08;Open Network Foundation&#xff0c;ONF&#xff09;作为目前SDN最重…