《java-使用kkview+libreoffice 实现在线预览ppt、xls、doc、pdf..》

文章目录


前言

提示:想要在手机端和电脑端实现在线预览office文件,之前想的办法是统一把文件转换成pdf的格式,试了一圈网上的方法,要么是收费要么是样式错乱或者是环境问题最终采用了kkview+libreoffice 的实现方式`,这种方式目前支持pdf、ppt、pptx、xlsx、xls、doc、docx等格式,暂时不支持.vsdx,这种方式也有一定概率会出现样式错乱的问题。


正文

  1. 下载和安装 libreoffice 这里我的linux的环境是CentOS 7的 版本

    语言包:LibreOffice_7.4.5.1_Linux_x86-64_rpm_langpack_zh-CN.tar.gz

    libreoffice 包:LibreOffice_7.4.5.1_Linux_x86-64_rpm.tar.gz

    powershell 复制代码
    	tar -zxvf LibreOffice_7.4.5.1_Linux_x86-64_rpm_langpack_zh-CN.tar.gz
    	tar -zxvf LibreOffice_7.4.5.1_Linux_x86-64_rpm.tar.gz
    		
    	cd /LibreOffice_7.4.5.1_Linux_x86-64_rpm/RPMS/
    	yum localinstall *.rpm
    	cd /LibreOffice_7.4.5.1_Linux_x86-64_rpm_langpack_zh-CN/RPMS/
    	yum localinstall *.rpm
    	
    	# 环境变量
    	# libreoffice
    	export LibreOffice_PATH=/opt/libreoffice7.4/program
    	export PATH=$LibreOffice_PATH:$PATH
    	
    	# 验证版本
    	libreoffice7.4 --version
  2. 下载kkview并运行,点击这里跳转官网,我这里使用的是4.4.0的版本,更高的版本对jdk的版本要求更高,目前这套使用的是java1.8的版本。

    kkview配置: kkview需要更改一些配置

    powershell 复制代码
    # 这里配置成我们libreoffice7.4的安装目录
    office.home = ${KK_OFFICE_HOME:/opt/libreoffice7.4}
    
    #信任地址,如果提供文件的地址需要加入到这里 
    trust.host = ${KK_TRUST_HOST:127.0.0.1,xxx.oss-cn-xxx.com,172.16.1.228,xxx.xxx.cn}

    nginx配置: 我用的是nginx转发的所以需要配置nginx,preview为kkview预览请求地址

    powershell 复制代码
                  location  /preview/ {
                            proxy_pass         http://127.0.0.1:8012/;
                            proxy_redirect off;
                            proxy_buffering off;
                            proxy_set_header  Host             $host;
                            proxy_set_header  X-Real-IP        $remote_addr;
                            set $my_proxy_add_x_forwarded_for $proxy_add_x_forwarded_for;
                            if ($proxy_add_x_forwarded_for ~* "127.0.0.1"){
                               set $my_proxy_add_x_forwarded_for $remote_addr;
                            }
                            proxy_set_header   X-Forwarded-For $my_proxy_add_x_forwarded_for;
            }

3.kkview运行后,我们只需要让前端请求我们部署的kkview的路径加上我们文件的在线地址(需要base64加密)就可以实现在线预览

java 复制代码
// 文件地址
String url = "xxx.xx.png";
String  base64Ulr =URLEncoder.encode(Base64.getEncoder().encodeToString(url.getBytes()))

// 文件预览地址onlinePreview前面是kkview的请求地址,后面是base64后的原文件地址,在浏览器输入下面的预览地址就可以实现在线预览
String  previewurl = "https://xxx.xxx.cn/preview/onlinePreview?url="+base64Ulr;

doc在线预览

ppt在线预览

xls在线预览

相关推荐
AC赳赳老秦2 小时前
司法公开数据采集应用:OpenClaw 抓取裁判文书公开信息,批量整理同类参考案例
java·大数据·python·数据挖掘·数据分析·php·openclaw
笑小枫2 小时前
用 Claude Code 推翻重写笑小枫网站
java·人工智能·spring boot·ai编程
霸道流氓气质2 小时前
ApiPost 中配置自动获取 Token 并调用业务接口完整指南
java·服务器·数据库
独隅2 小时前
IntelliJ IDEA 接入多种AI大模型插件终极指南(2026.1 企业合规版)
java·人工智能·intellij-idea
还是奇怪3 小时前
Simon Willison 用 DSPy 优化 Datasette Agent 提示词:提示工程正在变成可测试的软件工程
java·开发语言·软件工程
zfoo-framework3 小时前
1.ansible安装 2.虚拟机克隆
java
码上解惑3 小时前
从 Dify 工作流说起:常用节点怎么选、怎样组合?
java·人工智能·ai·agent·dify·智能体·spring ai
青山木4 小时前
Hot 100 --- 岛屿数量
java·数据结构·算法·leetcode·深度优先·广度优先
程序员-珍5 小时前
报错下载android sdk失败
android·java
糖果店的幽灵5 小时前
langgraph分支之 - 动态分支(Dynamic Branch)
java·前端·javascript·人工智能·langgraph