上篇說了使用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
可以通過
lsof -i :8012或者 ps -elf | grep kkfile
找到當前正在啟動的kkfileview進程,然后kill干掉它
再執行
./shutdown.sh./startup.sh
這樣就可以了