【教程】Linux 安裝 kkFileView 文檔在線預覽項目
官網
kkFileView - 在線文件預覽 (keking.cn)
安裝包? 可以直接下載成品? 也可以下載source 源碼 自己編譯
kkFileView 發行版 - Gitee.com
打開IDEA
然后先clear 再install
然后在?file-online-preview\server\target 目錄下會生成編譯后的文件
這是編譯之后的文件
.tar.gz? Linux版本
上傳到linux服務器? 并解壓
需要安裝 JDK1.8+ 并設置環境變量?
安裝kkfileview之前,需要在linux上面安裝LibreOffice? 或者 讓kkfileview自動安裝
進入bin目錄? 執行? ./startup.sh? ? 會自動安裝所需的依賴
cd /usr/local/kkfileview/tar -zxvf kkFileView-4.4.0.tar.gzcd kkFileView-4.4.0cd bin/./startup.shcd ../cd log/cat kkFileView.log
訪問路徑
127.0.0.1:8012
進階
配置文件
配置 kkFileView 配置路徑
編輯? config/application.properties? ?文件
配置域名 并設置 context-path 路徑
比如域名是? www.xxx.com
想通過? www.xxx.com/fileView 去訪問 可以這樣設置
server.servlet.context-path= /fileView
base.url = http://www.xxx.com/fileView
重啟項目
cd ../bin
#執行
./startup.sh
#第一次執行完畢后建議再執行查看日志腳本
./showlog.sh
前端集成開發
const Base64 = {encode(str) {// 首先,我們使用 encodeURIComponent 來獲得百分比編碼的UTF-8,然后我們將百分比編碼轉換為原始字節,最后存儲到btoa里面return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,function toSolidBytes(match, p1) {return String.fromCharCode(Number('0x' + p1));}));},decode(str) {// 過程:從字節流到百分比編碼,再到原始字符串return decodeURIComponent(atob(str).split('').map(function (c) {return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);}).join(''));}
}//文件路徑
let url = 'www.xxx.com/表格.xls'//通過 kkfileView 在線打開
window.open('https://www.xxx.com/fileView/onlinePreview?url=' + Base64.encode(url));
優化 使用redis緩存
#是否啟用緩存
cache.enabled = ${KK_CACHE_ENABLED:true}
#緩存實現類型,不配默認為內嵌RocksDB(type = default)實現,可配置為redis(type = redis)實現(需要配置spring.redisson.address等參數)和 JDK 內置對象實現(type = jdk),
cache.type = ?${KK_CACHE_TYPE:redis}
#文本類型,默認如下,可自定義添加
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}
?
字體
安裝Libreoffice所需的中文字體
由于Libreoffice默認不支持中文,需手動安裝字體。
1.下載中文字體包
http://kkfileview.keking.cn/fonts.zip
字體問題
大部分Linux系統上并沒有預裝中文字體或字體不全,需要把常用字體拷貝到Linux服務器上,具體操作如下: 下載如下字體包?https://kkfileview.keking.cn/fonts.zip?文件解壓完整拷貝到Linux下的 /usr/share/fonts目錄。然后依次執行mkfontscale 、mkfontdir 、fc-cache使字體生效?
2.上傳服務器至目錄/usr/share/fonts
3.執行命令
unzip fonts.zip
再依次執行
mkfontscale
mkfontdir
fc-cache
如果報錯命令沒有找到,則安裝對應命令,例如
yum install -y mkfontscale
4.賦予字體權限
cd /usr/share/fonts/zhFonts
chmod -R 755 *.TTF
chmod -R 755 *.ttf
chmod -R 755 *.ttc
5.生效
source /etc/profile
將之前kkfileview服務和office服務都停止重啟
#######################################不可動態配置,需要重啟生效#######################################
server.port = ${KK_SERVER_PORT:8012}
server.servlet.context-path= /fileView
server.servlet.encoding.charset = utf-8
#啟用GZIP壓縮功能
server.compression.enable= true
#允許壓縮的響應緩沖區最小字節數,默認2048
server.compression.min-response-size = 2048
#壓縮格式
server.compression.mime-types=application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain,font/woff,application/font-woff,font/eot,image/svg+xml,image/x-icon
# 文件上傳限制前端
spring.servlet.multipart.max-file-size=500MB
#文件上傳限制
spring.servlet.multipart.max-request-size=500MB
## Freemarker 配置
spring.freemarker.template-loader-path = classpath:/web/
spring.freemarker.cache = false
spring.freemarker.charset = UTF-8
spring.freemarker.check-template-location = true
spring.freemarker.content-type = text/html
spring.freemarker.expose-request-attributes = true
spring.freemarker.expose-session-attributes = true
spring.freemarker.request-context-attribute = request
spring.freemarker.suffix = .ftl# office設置
#openoffice或LibreOffice home路徑
#office.home = C:\\Program Files (x86)\\OpenOffice 4
# office.home = ${KK_OFFICE_HOME:default}
office.home = /opt/libreoffice7.5
## office轉換服務的端口,默認開啟兩個進程
office.plugin.server.ports = 2001,2002
## office 轉換服務 task 超時時間,默認五分鐘
office.plugin.task.timeout = 5m
#此屬性設置office進程在重新啟動之前可以執行的最大任務數。0表示無限數量的任務(永遠不會重新啟動)
office.plugin.task.maxtasksperprocess = 200
#此屬性設置處理任務所允許的最長時間。如果任務的處理時間長于此超時,則此任務將中止,并處理下一個任務。
office.plugin.task.taskexecutiontimeout = 5m
#生成限制 默認不限制 使用方法 (1-5)
office.pagerange = ${KK_OFFICE_PAGERANGE:false}
#生成水印 默認不啟用 使用方法 (kkFileView)
office.watermark = ${KK_OFFICE_WATERMARK:false}
#OFFICE JPEG圖片壓縮
office.quality = ${KK_OFFICE_QUALITY:80}
#圖像分辨率限制
office.maximageresolution = ${KK_OFFICE_MAXIMAGERESOLUTION:150}
#導出書簽
office.exportbookmarks = ${KK_OFFICE_EXPORTBOOKMARKS:true}
#批注作為PDF的注釋
office.exportnotes = ${KK_OFFICE_EXPORTNOTES:true}
#加密文檔 生成的PDF文檔 添加密碼(密碼為加密文檔的密碼)
office.documentopenpasswords = ${KK_OFFICE_DOCUMENTOPENPASSWORD:true}
#xlsx格式前端解析
office.type.web = ${KK_OFFICE_TYPE_WEB:web}# 其他核心設置
#預覽生成資源路徑(默認為打包根路徑下的file目錄下)
#file.dir = D:\\kkFileview\\
file.dir = ${KK_FILE_DIR:default}
#允許預覽的本地文件夾 默認不允許任何本地文件被預覽
#WINDOWS參考 local.preview.dir = \D:\\kkFileview\\1\\1.txt (注意前面必須添加反斜杠)
#LINUX參考 local.preview.dir = /opt/1.txt (注意前面必須是正斜杠)
#使用方法 windows file://d:/1/1.txt linux file:/opt/1/1.txt
#file 協議參考:https://datatracker.ietf.org/doc/html/rfc8089
local.preview.dir = ${KK_LOCAL_PREVIEW_DIR:default}
#是否啟用緩存
cache.enabled = ${KK_CACHE_ENABLED:true}
#緩存實現類型,不配默認為內嵌RocksDB(type = default)實現,可配置為redis(type = redis)實現(需要配置spring.redisson.address等參數)和 JDK 內置對象實現(type = jdk),
cache.type = ${KK_CACHE_TYPE:redis}
#redis連接,只有當cache.type = redis時才有用
spring.redisson.address = ${KK_SPRING_REDISSON_ADDRESS:127.0.0.1:6379}
spring.redisson.password = ${KK_SPRING_REDISSON_PASSWORD:gCqk8XJ47vnAdG0BDtaZ5mMHIxNfKPrs}
#緩存是否自動清理 true 為開啟,注釋掉或其他值都為關閉
cache.clean.enabled = ${KK_CACHE_CLEAN_ENABLED:true}
#緩存自動清理時間,cache.clean.enabled = true時才有用,cron表達式,基于Quartz cron
cache.clean.cron = ${KK_CACHE_CLEAN_CRON:0 0 3 * * ?}
#######################################可在運行時動態配置#######################################
#提供預覽服務的地址,默認從請求url讀,如果使用nginx等反向代理,需要手動設置
#base.url = https://file.keking.cn
base.url = https://www.xxx.com/fileView
#信任站點,多個用','隔開,設置了之后,會限制只能預覽來自信任站點列表的文件,默認不限制
#trust.host = kkview.cn
trust.host = ${KK_TRUST_HOST:default}
#不信任站點,多個用','隔開,設置了之后,會限制來自不信任站點列表的文件,默認不限制
#not.trust.host = kkview.cn
not.trust.host= ${KK_NOT_TRUST_HOST:default}
#文本類型,默認如下,可自定義添加
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}#FTP模塊設置
#預覽源為FTP時 FTP用戶名,可在ftp url后面加參數ftp.username=ftpuser指定,不指定默認用配置的
ftp.username = ${KK_FTP_USERNAME:ftpuser}
#預覽源為FTP時 FTP密碼,可在ftp url后面加參數ftp.password=123456指定,不指定默認用配置的
ftp.password = ${KK_FTP_PASSWORD:123456}
#預覽源為FTP時, FTP連接默認ControlEncoding(根據FTP服務器操作系統選擇,Linux一般為UTF-8,Windows一般為GBK),可在ftp url后面加參數ftp.control.encoding=UTF-8指定,不指定默認用配置的
ftp.control.encoding = ${KK_FTP_CONTROL_ENCODING:UTF-8}#視頻設置
#多媒體類型,默認如下,可自定義添加
media = ${KK_MEDIA:mp3,wav,mp4,flv,mpd,m3u8,ts,mpeg,m4a}
#是否開啟多媒體類型轉視頻格式轉換,目前可轉換視頻格式有:avi,mov,wmv,3gp,rm
#請謹慎開啟此功能,建議異步調用添加到處理隊列,并且增加任務隊列處理線程,防止視頻轉換占用完線程資源,轉換比較耗費時間,并且控制了只能串行處理轉換任務
media.convert.disable = ${KK_MEDIA_CONVERT_DISABLE:false}
#支持轉換的視頻類型
convertMedias = ${KK_CONVERTMEDIAS:avi,mov,wmv,mkv,3gp,rm}#PDF預覽模塊設置
#配置PDF文件生成圖片的像素大小,dpi 越高,圖片質量越清晰,同時也會消耗更多的計算資源。
pdf2jpg.dpi = ${KK_PDF2JPG_DPI:144}
#是否禁止演示模式
pdf.presentationMode.disable = ${KK_PDF_PRESENTATION_MODE_DISABLE:true}
#是否禁止打開文件
pdf.openFile.disable = ${KK_PDF_OPEN_FILE_DISABLE:true}
#是否禁止打印轉換生成的pdf文件
pdf.print.disable = ${KK_PDF_PRINT_DISABLE:true}
#是否禁止下載轉換生成的pdf文件
pdf.download.disable = ${KK_PDF_DOWNLOAD_DISABLE:true}
#是否禁止bookmark
pdf.bookmark.disable = ${KK_PDF_BOOKMARK_DISABLE:true}
#是否禁止簽名
pdf.disable.editing = ${KK_PDF_DISABLE_EDITING:false}
#office類型文檔(word ppt)樣式,默認為圖片(image),可配置為pdf(預覽時也有按鈕切換)
office.preview.type = ${KK_OFFICE_PREVIEW_TYPE:image}
#是否關閉office預覽切換開關,默認為false,可配置為true關閉
office.preview.switch.disabled = ${KK_OFFICE_PREVIEW_SWITCH_DISABLED:false}#水印內容
#例:watermark.txt = ${WATERMARK_TXT:凱京科技內部文件,嚴禁外泄}
#如需取消水印,內容設置為空即可,例:watermark.txt = ${WATERMARK_TXT:}
watermark.txt = ${WATERMARK_TXT:}
#水印x軸間隔
watermark.x.space = ${WATERMARK_X_SPACE:10}
#水印y軸間隔
watermark.y.space = ${WATERMARK_Y_SPACE:10}
#水印字體
watermark.font = ${WATERMARK_FONT:微軟雅黑}
#水印字體大小
watermark.fontsize = ${WATERMARK_FONTSIZE:18px}
#水印字體顏色
watermark.color = ${WATERMARK_COLOR:black}
#水印透明度,要求設置在大于等于0.005,小于1
watermark.alpha = ${WATERMARK_ALPHA:0.2}
#水印寬度
watermark.width = ${WATERMARK_WIDTH:180}
#水印高度
watermark.height = ${WATERMARK_HEIGHT:80}
#水印傾斜度數,要求設置在大于等于0,小于90
watermark.angle = ${WATERMARK_ANGLE:10}#首頁功能設置
#是否禁用首頁文件上傳
file.upload.disable = ${KK_FILE_UPLOAD_ENABLED:false}
# 備案信息,默認為空
beian = ${KK_BEIAN:default}
#禁止上傳類型
prohibit = ${KK_PROHIBIT:exe,dll,dat}
#啟用驗證碼刪除文件 默認關閉
delete.captcha= ${KK_DELETE_CAPTCHA:false}
#刪除密碼
delete.password = ${KK_DELETE_PASSWORD:123456}
#刪除 轉換后OFFICE、CAD、TIFF、壓縮包源文件 默認開啟 節約磁盤空間
delete.source.file = ${KK_DELETE_SOURCE_FILE:true}
#首頁初始化加載第一頁
home.pagenumber = ${DEFAULT_HOME_PAGENUMBER:1}
#首頁是否分頁
home.pagination = ${DEFAULT_HOME_PAGINATION:true}
#首頁初始化單頁記錄數
home.pagesize = ${DEFAULT_HOME_PAGSIZE:15}
#首頁顯示查詢框
home.search = ${DEFAULT_HOME_SEARCH:true}#Tif類型設置
#Tif類型圖片瀏覽模式:tif(利用前端js插件瀏覽);jpg(轉換為jpg后前端顯示);pdf(轉換為pdf后顯示,便于打印)
tif.preview.type = ${KK_TIF_PREVIEW_TYPE:tif}#Cad類型設置
#Cad類型圖片瀏覽模式:tif(利用前端js插件瀏覽);svg(轉換為svg顯示);pdf(轉換為pdf后顯示,便于打印)
cad.preview.type = ${KK_CAD_PREVIEW_TYPE:svg}
#Cad轉換超時設置
cad.timeout =${KK_CAD_TIMEOUT:90}
#Cad轉換線程設置
cad.thread =${KK_CAD_THREAD:5}
自動安裝的話 可以不用看 這些內容
也可以提前手動安裝所需依賴
Index of /libreoffice/old (documentfoundation.org)
手動安裝??LibreOffice?
找到適合的版本號
下載Linux版本的
rpm安裝方式
tar -zxvf LibreOffice_7.5.0.2_Linux_x86-64_rpm.tar
cd LibreOffice_7.5.0.2_Linux_x86-64_rpm/cd RPMS/yum install -y *.rpm
查看是否安裝成功?
cd libreoffice7.5/cd program/./soffice --version
如果有錯誤提示的話
/opt/libreoffice7.5/program/soffice.bin: error while loading shared libraries: libcups.so.2: cannot open shared object file: No such file or directory
執行以下命令
yum install cairo./soffice --version #如果依舊有錯誤的話,繼續往下執行yum install cups-libs./soffice --version #如果依舊有錯誤的話,繼續往下執行yum install libSM./soffice --version
設置linux環境變量
export LibreOffice_PATH=/opt/libreoffice7.5/programexport PATH=$LibreOffice_PATH:$PATH
配置 kkFileView 配置路徑
編輯? config/application.properties? ?文件
修改 office.home 為自己剛安裝libreoffice7.5的路徑