kkFileView 是一款檔案文件線上預覽解決方案,採用流行的 Spring Boot 框架構建,易於上手和部署。
該專案基本支援主流辦公文件的線上預覽,包括但不限於 doc、docx、xls、xlsx、ppt、pptx、pdf、txt、zip、rar,以及圖片、影片、音訊等格式。
1 Docker 部署
- 拉取映象:
# 網路環境方便訪問docker中央倉庫
docker pull keking/kkfileview:4.1.0
# 網路環境不方便訪問docker中央倉庫
wget https://kkview.cn/resource/kkFileView-4.1.0-docker.tar
docker load -i kkFileView-4.1.0-docker.tar
- 執行容器
docker run -it -p 8012:8012 keking/kkfileview:4.1.0
瀏覽器訪問容器 8012 埠 http://127.0.0.1:8012
即可看到專案演示用首頁。
2 專案接入
上傳一個檔案之後,點選預覽,即可檢視該檔案預覽效果。
專案內需要預覽檔案時,只需要呼叫瀏覽器開啟本專案的預覽介面,並傳入須要預覽檔案的 url ,示例如下:
- 引入 js 檔案
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/js-base64@3.6.0/base64.min.js"></script>
- Js 程式碼
window.open('http://127.0.0.1:8012/onlinePreview?url='+ encodeURIComponent( Base64.encode(url) ) );
3 Mac 本地除錯 & 打包
本節我們介紹如何使用 Mac 電腦本地除錯 ,以及根據配置按照 windows/Linux 打對應的部署包。
從 Github 上下載 kkFileView :
git clone git@github.com:kekingcn/kkFileView.git
kkFileView 強依賴兩點:
- Java 1.8+
- LibreOffice 或 OpenOffice ( Windows下已內建,CentOS 或 Ubuntu 下會自動下載安裝,MacOS 下需要自行安裝)
所以 Mac 本地除錯需要先安裝 LibreOffice ,進入 LibreOffice 首頁,下載對應 Mac 版本即可。
當我們透過 IDEA 開啟 ,進入 Server 模組,執行 ServerMain 類 :
啟動日誌如下:
從日誌我們看到:kkFileView 會啟動兩個 LibreOffice 程序,每個程序有獨立的埠。
當我們執行 maven 的 package 命令, 根據配置 windows/Linux 打對應的部署包。
4 Linux 環境部署
我們將打包好的 kkFileView Linux 部署包,上傳到部署目錄,分別執行:
# 解壓縮
tar -zxvf kkFileView-4.4.0-SNAPSHOT.tar.gz
# 進入 bin 目錄
cd bin
# 啟動
./startup.sh
備註: Linux 環境首次啟動會自動安裝 LibreOffice 預設安裝 7.5 版本。
我們也可以手工安裝 LibreOffice。
#將 LibreOffice_7.5.3.2_Linux_x86-64_rpm.tar.gz上傳到 home 目錄下
cd /home
tar -zxvf LibreOffice_7.5.3.2_Linux_x86-64_rpm.tar.gz
cd LibreOffice_7.5.3.2_Linux_x86-64_rpm/RPMS/
yum -y localinstall *.rpm
手工安裝完成後,可以透過如下的命令驗證是否正確:
libreoffice7.5 --version
啟動 kkFileView 並不意味著配置的結束,因為還需要最後一步:安裝字型。
1、下載字型
wget http://kkfileview.keking.cn/fonts.zip
2、上傳到 /usr/share/fonts , 並解壓縮
unzip fonts.zip
3、重新整理字型索引
mkfontscale
mkfontdir
fc-cache
5 總結
當我們在本地除錯或者 Linux 伺服器執行預覽效果時,我們發現 PPT 文件檔案會轉換成圖片的格式,比如下圖:
kkFileView 本質是將文件檔案轉換為特定的展示檔案,是一個小型的轉碼系統。而且轉碼後的檔案儲存都是單機模式,假如需要分散式部署,可能還是會有效能瓶頸。
最後,kkFileView 相關安裝包,也可以關注勇哥的公眾號,回覆“kk” , 即可獲取 。
如果我的文章對你有所幫助,還請幫忙點贊、在看、轉發一下,你的支援會激勵我輸出更高質量的文章,非常感謝!