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

kkfileview预览Excel文件去掉左上角的跳转HTM预览、打印按钮

上篇说了使用nginx代理kkfile预览文件,但是又发现个新问题,预览其他文件时都正常,但是预览.xlsx格式的时候,在左上角会有【跳转HTML预览】【打印】两个按钮,如下所示:

这篇就来说一下如何去掉。

首先这个跟kkfile的版本有关系,别管哪个版本,下面的方法都试一下即可,最后有个终极方案,实在不行就使用终极方案。

尝试方案:通过 URL 参数控制显示行为

KKFileView 支持通过 URL 参数来自定义预览界面的显示行为。虽然官方文档可能不完善,但根据社区实践和源码分析,你可以尝试以下参数来隐藏工具栏或特定按钮

方法一:使用 office.viewState=hide 参数(推荐尝试)

这是 KKFileView 支持的一个隐藏参数,用于控制预览界面的显示状态。

修改你的预览 URL,加入:

&office.viewState=hide

完整示例:

http://kkfile-server:8012/onlinePreview?url=http://file-server/test.xlsx&office.viewState=hide

或者在kkfile的配置文件application.properties中:

改完保存之后,记得重启一下kkfile服务。

这个参数的作用是隐藏工具栏和操作按钮,进入“纯净查看模式”。

⚠ 注意:该参数在某些版本的 KKFileView 中有效(尤其是基于 Vue 或 React 重构的前端),但不是所有版本都支持。

方法二:使用 showMenu=false 或 showToolbar=false

尝试以下参数组合:

&showMenu=false&showToolbar=false

完整 URL 示例:

http://kkfile-server:8012/onlinePreview?url=http://file-server/test.xlsx&showMenu=false&showToolbar=false

这些参数会告诉前端不要显示菜单和工具栏。

方法三:使用 previewType=embed 或类似参数(嵌入模式)

有些部署会支持嵌入式预览模式,减少 UI 元素:

&previewType=embed

或者

&view=embed

终极方案:修改kkfileview服务端的前端代码

接下来就以我的例子来讲了哈,因为我们修改kkfileview jar包中的代码,所以需要先解压jar包

第一步:首先进入到kkFileView的服务中,找到.jar包的目录(/opt/kkfileview/kkFileView-4.4.0/bin/下)

以上是我的目录。

第二步:备份kkFileView-4.4.0.jar

// 换成自己的文件名
cp -r kkFileView-4.4.0.jar ./kkFileView-4.4.0.jar.bak

以上目录可以看到,我已经备份过了。

第三步:创建kkfileview-unpacked文件夹用于存放解压后的jar包

mkdir kkfileview-unpacked

第四步:解压jar包

注意:要先进入刚创建的 kkfileview-unpacked 目录中,然后执行:

jar -xf ../kkFileView-4.4.0.jar

解压完之后就可以看到如下目录中的文件:

第五步:修改kkfileview服务中的前端代码:

首先进入:cd BOOT-INF/classes/web/

然后看一下下面的文件:

officeweb.ftl比较像奥,就是它!!!

然后我们可以先看一下改文件:

这里就是我们要找的那两个按钮,给它干掉即可,然后保存

第六步:删除原来的jar包

回到我们的/opt/kkfileview/kkFileView-4.4.0/bin/ 下  执行:

rm -rf kkFileView-4.4.0.jar

第六步:重新打jar包

然后再回到我们的 kkfileview-unpacked 目录下,执行如下命令打jar包:

jar -cfm0 ../kkFileView-4.4.0.jar META-INF/MANIFEST.MF .

注意:上面的 -cfm0 中的0很重要,一开始没加0启动不起来

第七步:重新启动kkfileview

./shutdown.sh./startup.sh

这样就可以了

http://www.dtcms.com/a/338835.html

相关文章:

  • Python爬虫第一课:爬取HTML静态网页小说章节
  • 国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—ARM + FPGA通信案例
  • PicoShare 文件共享教程:cpolar 内网穿透服务实现跨设备极速传输
  • Simulink库文件创建及使用方法
  • 4.Kotlin 集合 Map 所有方法
  • CVPR 2025 | 具身智能 | HOLODECK:一句话召唤3D世界,智能体的“元宇宙练功房”来了
  • 库卡机器人tag焊接保护气体流量控制系统
  • (第五篇)spring cloud之Ribbon负载均衡
  • 主流 3D 模型格式(FBX/OBJ/DAE/GLTF)材质支持与转换操作指南
  • 云存储的高效安全助手:阿里云国际站 OSS
  • ICCV 2025 | 首个3D动作游戏专用VLA模型,打黑神话只狼超越人类玩家
  • iOS 性能监控实践,如何构建从开发到运维的持续优化体系
  • 面试题储备-MQ篇 3-说说你对Kafka的理解
  • 如何用给各种IDE配置R语言环境
  • Halcon联合C# 添加工具类让winform自动根据窗体大小自适应缩放所有控件
  • 知行社黄剑杰:金融跨界,重塑震区救援新章
  • 《基于大数据的全球用水量数据可视化分析系统》用Python+Django开发,为什么导师却推荐用Java+Spring Boot?真相揭秘……
  • sqli-labs通关笔记-第55关 GET数值型注入(括号闭合 限制14次探测机会)
  • 今日行情明日机会——20250819
  • 20.2 QLoRA微调全局参数实战:高点击率配置模板+显存节省50%技巧
  • Linux下Nginx安装及负载均衡配置
  • Python 3.14深度解析:革命性特性与性能优化实践
  • Go高效复用对象:sync.Pool详解
  • Windows内核开发笔记
  • 免费导航规划API接口详解:调用指南与实战示例
  • 一个基于前端技术的小狗寿命阶段计算网站,帮助用户了解狗狗在不同年龄阶段的特点和需求。
  • 数据链路层-网络层-传输层
  • js 值转换boolean方式
  • AutoSAR实战:DCM配置之Response On Event (0x86)事件响应配置指导
  • 【深度学习计算性能】06:多GPU的简洁实现