【教程】Linux 安裝 kkFileView 文檔在線預覽項目 及優化

【教程】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的路徑



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/14389.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14389.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/14389.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Nginx R31 doc-09-Serving Static Content 靜態內容

提供靜態內容 配置 NGINX 和 NGINX Plus 以提供靜態內容,使用類型特定的根目錄,檢查文件存在性,并進行性能優化。 本節介紹如何配置 NGINX 和 NGINX Plus 以提供靜態內容,如何定義搜索請求文件的路徑,如何設置索引文…

WordPress插件Disable WP REST API,可根據是否登錄來禁用REST API

前面跟大家分享了代碼版禁用WordPress REST API的方法(詳見『WordPress4.7以上版本如何禁用JSON REST API?』),不過有些站長不太敢折騰自己的網站代碼,那么建議試試這款Disable WP REST API,它可以&#xf…

小結5:朗讀練習第二段

五、朗讀練習2 2024-5-6始,5-14終,5-15寫。 我漸漸體會到一些朗讀的樂趣。但我還要考研,要寫作業、期末考試。如果是在大一該多好。我可以就這樣一天一天的寫下去,慢慢地有一些自己的作品,還能錄視頻發到b站上。 上一篇…

通過修改物理內存實現跨進程內存讀寫

習一下利用修改物理內存來跨進程內存讀寫 系統:win10 21h1 x64 編譯環境: vs2022 詳情見附錄 基礎 虛擬地址轉物理地址 虛擬地址也稱線性地址,一個線性地址進程的DirBase地址可以轉換成物理地址。先來看線性地址的含義 在x64體系中只實現了48位的virtu…

刀片式服務器的主要組件有哪些?

刀片式服務器是專門為特殊應用行業跟高密度計算環境設計的,是高可用高密度低成本的服務器平臺,刀片服務器這個名稱主要是根據產品的形狀,刀片式服務器的組成單元外形扁平,就像刀片一樣,整體設計的比較緊湊,…

C#和C++有什么區別?

C#和C都是廣泛使用的編程語言,但它們在設計理念、應用場景和語法上有許多顯著的區別。以下是一些關鍵區別的詳細介紹: 1. 設計理念和目的 C: 設計目的:C是一種面向系統編程和應用程序開發的語言,具有高效性和靈活性…

電工杯b題

雖然這次休息不打,但是看了一下,我比較傾向于機器學習灌水(doge

刷題之從前序遍歷與中序遍歷序列構造二叉樹(leetcode)

從前序遍歷與中序遍歷序列構造二叉樹 前序遍歷&#xff1a;中左右 中序遍歷&#xff1a;左中右 前序遍歷的第一個數必定為根節點&#xff0c;再到中序遍歷中找到該數&#xff0c;數的左邊是左子樹&#xff0c;右邊是右子樹&#xff0c;進行遞歸即可。 #include<vector>…

Juniper查看并調整策略順序

1.查看安全策略 >show security policies 順序就是按照顯示出來的順序&#xff0c;與Index無關&#xff0c;從上到下匹配 2. 調整防火墻策略 #insert security policies from-zone CAMERAS to-zone INTERNET policy CAMERAS-to-NTP before policy CAMERAS-to-INTERNET …

操作系統3_作業與處理機調度

操作系統3_作業與處理機調度 文章目錄 操作系統3_作業與處理機調度1. 作業的概念與組成2. 作業的建立及狀態3. 處理機調度相關概念3.1 調度級別3.2 調度隊列模型3.3 選擇準則4. 作業調度與進程調度5. 典型處理機調度算法5.1 先來先服務算法FCFS5.2 短作業優先算法SJF5.3 優先級…

【力扣一輪】字符串異位 數組并集

先驗知識記錄&#xff1a; 遇到哈希問題&#xff0c;想到三種數據結構&#xff1a; ①數組&#xff1a;適用于哈希值比較小&#xff0c;范圍較小&#xff0c; ②set&#xff1a;適用于哈希值較大。 ③map&#xff1a;如果需要用到鍵值對&#xff0c;則用之。 242.有效的字母…

撥云見日,ATFX七場研討會揭秘投資先機

財經先機&#xff0c;一手掌握。近期&#xff0c;隨著國際金價持續走高&#xff0c;避險情緒高漲&#xff0c;由此激發新一輪投資熱潮。作為業界領先的金融創新品牌&#xff0c;ATFX深受投資者認可和信賴&#xff0c;為助力廣大投資者了解市場運行規律&#xff0c;捕捉財經脈絡…

C++通過讀取二進制流的方式來解析PE(靜態文件讀取法)

步驟解讀 先選擇文件讀取文件二進制流從二進制流讀取DOS頭&#xff08;DOS_HEADER&#xff09;&#xff0c;長度64字節讀取DOS殼&#xff08;DOS_STUB&#xff09;&#xff0c;DOS頭開始&#xff0c;長度至到dosHeader->e_lfanew偏移量讀取PE標識&#xff08;Signature&…

520節日特別篇:構建浪漫互動網站實戰技巧

520節日特別篇&#xff1a;構建浪漫互動網站實戰技巧 一、非零分積分資源概覽二、基礎概念與作用說明HTML5 Canvas & SVGCSS3 動畫與過渡JavaScript 動態交互 三、實戰代碼示例&#xff1a;打造浪漫愛心雨HTML 結構CSS 樣式JavaScript 邏輯 四、實際開發應用思路1. 個性化祝…

怎么畫思維導圖?方法介紹

怎么畫思維導圖&#xff1f;在數字化時代&#xff0c;思維導圖已成為我們工作、學習和生活中的得力助手。它不僅能幫助我們更好地組織和表達思想&#xff0c;還能提升我們的思維能力和創造力。那么&#xff0c;哪些軟件可以畫思維導圖呢&#xff1f;本文將為你揭秘幾款功能強大…

Linux 應用入門(一)

1. 交叉編譯 概念&#xff1a;在當前編譯平臺下&#xff0c;編譯出來的程序能運行在體系結構不同的另一種目標平臺上&#xff0c;但是編譯平臺本身卻不能運行該程序。 為什么需要交叉編譯&#xff1f; 速度&#xff1a;目標平臺得運行速度比主機往往慢得多&#xff0c;因為許多…

Docker+nginx部署SpringBoot+vue前后端分離項目(保姆及入門指南)

前后分離項目部署 項目回顧工具上線準備1、win1.1、前端1.2、后端 2、linux環境2.1、安裝docker2.2、安裝docker compose2.3、編寫Dockerfile文件2.4、編寫docker-compose.yml文件2.5、修改application-pro.yml2.6、準備好nginx的掛載目錄和配置2.7、部署后端服務 項目回顧 書…

數據挖掘實戰-基于內容協同過濾算法的電影推薦系統

&#x1f935;?♂? 個人主頁&#xff1a;艾派森的個人主頁 ?&#x1f3fb;作者簡介&#xff1a;Python學習者 &#x1f40b; 希望大家多多支持&#xff0c;我們一起進步&#xff01;&#x1f604; 如果文章對你有幫助的話&#xff0c; 歡迎評論 &#x1f4ac;點贊&#x1f4…

【從C++到Java一周速成】章節9:構造器

章節9&#xff1a;構造器 對于一個類來說&#xff0c;一般有三種常見的成員&#xff1a;屬性、方法、構造器。 這三種成員都可以定義零個或多個。 構造方法也叫構造器&#xff0c;是一個創建對象時被自動調用的特殊方法&#xff0c;用于對象的初始化。 Java通過new關鍵字來調用…

OpenHarmony集成OCR三方庫實現文字提取

1. 簡介 Tesseract(Apache 2.0 License)是一個可以進行圖像OCR識別的C庫&#xff0c;可以跨平臺運行 。本樣例基于Tesseract庫進行適配&#xff0c;使其可以運行在OpenAtom OpenHarmony&#xff08;以下簡稱“OpenHarmony”&#xff09;上&#xff0c;并新增N-API接口供上層應…