springboot:除了OpenOffice还可以用它轻松实现文档在线预览功能【附带源码】

news2024/12/26 23:49:38

0. 引言

我们在项目中常常需要实现文档在线预览的功能,而文档种类繁多,除了pdf,还有word、text、excel、甚至还有mp3,mp4等多媒体文件。常用的手段是通过OpenOffice来将文档转换为pdf实现预览,本期我们就来看如何通过kkFileView实现文档的在线预览功能

1. kkFileView概述

kkFileView本身基于openOffice实现,是一款国产的开源文档在线预览组件。支持的预览文件格式如下:

支持word excel ppt,pdf等办公文档
支持txt,java,php,py,md,js,css等所有纯文本
支持zip,rar,jar,tar,gzip等压缩包
支持jpg,jpeg,png,gif等图片预览(翻转,缩放,镜像)
支持mp3,mp4,flv等多媒体文件预览

本身通过rest接口提供预览服务,即组件部署后,通过将文档url作为入参,以rest接口形式来预览文档。后续我们详细演示

更多介绍可阅读官方文档

2. 搭建

2.1 通过安装包安装

1、因为基于openOffice运行,所以需要提前安装openOffice或者LibreOffice(如果通过docker形式安装kkFileView则不用再单独安装OpenOffice)

window内置openOffice,centos或ubuntu下会自动下载,macOS中需要手动安装

OpenOffice安装包下载

选择对应的系统版本下载即可,langpack是语言包

在这里插入图片描述

下载完成后双击安装,打开如图所示

在这里插入图片描述

当然也可以通过homebrew安装

brew cask install openoffice

2、拉取源码,因为发行版需要付费,我们采取自己编译

4.1.0版本源码

在这里插入图片描述

3、IDEA中引入项目,运行启动类验证下代码完整性,成功启动说明代码没问题

在这里插入图片描述

4、打包项目,在target目录下会找到打包出来的安装包

在这里插入图片描述

在这里插入图片描述

5、将生成的安装包解压

tar -zxvf kkFileView-4.1.0.tar.gz 

6、该项目是通过assembly插件打包的,所以打包出现的项目下会有一个bin目录,通过startup.sh脚本启动

./bin/startup.sh

2.2 通过docker安装

1、拉取镜像

wget http://kkfileview.keking.cn/kkFileView-4.1.0-docker.tar
docker load -i kkFileView-4.1.0-docker.tar

# 如果网络环境可以,可直接通过pull指令拉取镜像
docker pull keking/kkfileview:4.1.0

2、安装docker容器

docker run -it -p 8012:8012 keking/kkfileview:4.1.0

3、访问http://127.0.0.1:8012

在这里插入图片描述

3. 使用

1、创建一个springboot项目,在static下创建文件夹file,存放各种格式的测试文件进去

在这里插入图片描述

2、创建测试页面,代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件预览</title>
    <script src="js/jQuery3.6.1.js"></script>
    <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/js-base64@3.6.0/base64.min.js"></script>
</head>
<body>
<div >
    <a onclick="openWord(1)">预览word</a><br>
    <a onclick="openWord(2)">预览excel</a><br>
    <a onclick="openWord(3)">预览txt</a><br>
    <a onclick="openWord(4)">预览pdf</a><br>
    <a onclick="openWord(5)">预览png</a><br>
    <a onclick="openWord(6)">预览md</a><br>
</div>

</body>
<script>
    // 文件上传
    function openWord(type) {
        var name = "";
        switch (type){
            case 1: name="file.docx";break;
            case 2: name="file.xlsx";break;
            case 3: name="file.txt";break;
            case 4: name="file.pdf";break;
            case 5: name="file.png";break;
            case 6: name="file.md";break;
        }
        var url = 'http://192.168.10.101:8080/file/'+name; //要预览文件的访问地址
        // 192.168.10.101 本机Ip
        window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url)));
    }

</script>
</html>

3、运行项目

在这里插入图片描述

4、点击各类文件预览,显示正常

word:
在这里插入图片描述
excel:
在这里插入图片描述
txt:
在这里插入图片描述

pdf:
在这里插入图片描述

png:
在这里插入图片描述
md:
在这里插入图片描述

项目源码

本文演示源码可在如下地址下载:

文档在线预览演示源码

总结

综上,我们的文档在线预览功能就完成了,更多功能大家可以亲自动手,实际体验体验!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/140345.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rabbitmq基础10——消息追踪、Shovel插件的web端使用和命令使用

文章目录一、消息追踪1.1 Firehose功能1.1.1 开启与关闭1.1.2 测试1.1.3 总结1.2 rabbitmq_tracing 插件1.2.1 定义trace规则1.2.2 测试1.2.2.1 与Firehose之间的优先级二、Shovel插件2.1 实现原理2.1.1 从队列到交换器2.1.2 从队列到队列2.1.3 交换器到交换器2.2 Shovel 插件使…

大小端转换

一、名词解释首先解释一下大端模式和小端模式。小端模式&#xff0c;也叫小端存储&#xff1a;Little-Endian就是低位字节排放在内存的低地址端&#xff0c;高位字节排放在内存的高地址端。大端模式&#xff0c;也叫大端存储&#xff1a;Big-Endian就是高位字节排放在内存的低地…

2022年度技术总结

2022 年度总结 本年收获 计算机网络 2022年2月&#xff0c;系统学习巩固了计算机网络课程&#xff08;本科&#xff09;&#xff0c;基本的七层模式&#xff0c;四层模式&#xff0c;重点是与前端开发相关的 TCP UDP HTTP HTTPS 等协议。 现在有一个整体的认识&#xff1a;…

@Transactional事务处理解决方案的看法

Transactional事务处理解决方案的看法前言一.声明式事务二.编程式事务三.事务粒度优化方法四.缓存和事务的一致性五.介绍--延时双删总结前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 本文就是了解一下声明式事务和编程式事务的优缺点和事务一致性的一…

怎样阅读NLP论文

经典的论文也是需要读的。并不是所有的论文都值得细读。论文不是从头赶着朝下读。 目录收集和组织论文收集组织1.通过会议的方式分类2.是否是arXiv上的文章分类&#xff08;preprint or not&#xff09;3.根据问题&#xff08;推荐&#xff09;&#xff0c;方法和数据集分类选择…

Ka波段卫星通信小尺寸无线电设计

传统Ka波段地面站卫星通信系统依赖于室内到室外配置。室外单元包含天线和块下变频接收机&#xff0c;接收机输出L波段的模拟信号。该信号随后被传送到室内单元&#xff0c;室内单元包含滤波、数字化和处理系统。Ka波段的干扰信号通常较少&#xff0c;因此室外单元的主要任务是以…

微信小程序开发整体过程整理

目录1微信开发相关介绍1.1微信公众平台1.2微信开放平台1.3注意事项2微信小程序开发整体介绍2.1微信小程序简介2.2小程序接入流程3框架简介3.1uni-app简介3.2学习使用uni-app3.3学习微信小程序开发4开发规范5开发示例5.1开发工具5.2开发调试5.2.1导入代码5.2.2项目运行5.2.3在微…

第三篇 - 对象的单层劫持

一&#xff0c;前言 上篇&#xff0c;介绍了 Vue 使用及数据初始化的流程 回顾一下&#xff0c;主要涉及以下几个核心点&#xff1a; initMixin 方法&#xff1a; 原型方法 Vue.prototype._initvm.$options&#xff1a;使 options 选项在 vm 实例上被共享initState 方法&…

c#入门-匿名函数,多播委托

匿名函数 如果一个函数的参数是一个委托类型。而你此刻没有合适的方法组使用&#xff0c;也不想为他专门声明一个局部函数。 则可以使用匿名函数。匿名函数的创建更为简单&#xff0c;语法为&#xff1a;返回类型 参数列表 > 函数主体 Func<int, string> func str…

人工智能OCR文字识别研究

1 研究背景 人工智能是研究开发能够模拟、延伸和扩展人类智能的理论、方法、技术及应用系统的一门新的技术科学&#xff0c;研究目的是促使智能机器会听&#xff08;语音识别、机器翻译等&#xff09;、会看&#xff08;图像识别、文字识别等&#xff09;、会说&#xff08;语音…

使用Jiralert实现AlertManager告警对接Jira

简介 Alertmanager 处理由客户端应用程序&#xff08;如 Prometheus server&#xff09;发送的警报。它负责去重(deduplicating)&#xff0c;分组(grouping)&#xff0c;并将它们路由(routing)到正确的接收器(receiver)集成&#xff0c;如电子邮件&#xff0c;微信&#xff0c…

MMYOLO 自定义数据集从标注到部署保姆级教程

theme: juejin 来自社区 PeterH0323 投稿 AI 已经被应用到各行各业&#xff0c;现如今任何人都可以轻松基于开源框架快速搭建符合自身需求的 AI 应用。本文将基于 MMYOLO 开源框架&#xff0c;基于生活中收集的猫猫数据集&#xff0c;教你如何从零开始训练一个可部署检测模型…

TiCDC 源码阅读(二)TiKV CDC 模块介绍

内容概要 TiCDC 是一款 TiDB 增量数据同步工具&#xff0c;通过拉取上游 TiKV 的数据变更日志&#xff0c;TiCDC 可以将数据解析为有序的行级变更数据输出到下游。 本文是 TiCDC 源码解读的第二篇&#xff0c;将于大家介绍 TiCDC 的重要组成部分&#xff0c;TiKV 中的 CDC 模…

【C++】命名空间(namespace) 以及理解using namespace std

命名空间1.命名空间使用的背景1.背景2.命名空间的定义&#xff08;namespace&#xff09;2.1正常的定义2.2 命名空间可以嵌套定义2.3允许命名空间相同3.域作用限定符&#xff08;&#xff1a;&#xff1a;&#xff09;和命名空间的使用3.1域作用限定符&#xff08;&#xff1a;…

【nodejs】模块化

一、概念 1、模块化 编程领域中的模块化&#xff0c;就是遵守固定的规则&#xff0c;把一个大文件拆成独立并相互依赖的多个小模块 把代码进行模块化拆分的好处&#xff1a; 1、提高代码的复用性 2、提高代码的可维护性 3、可以实现按需加载 2、模块化规范 对代码进行模块化…

《CSS新世界》读书笔记

前言 本文为《CSS新世界》的读书笔记。推荐去读原著。 《CSS新世界》微信读书APP链接&#xff1a;CSS新世界-张鑫旭-微信读书 (qq.com) 1. 尺寸属性值&#xff1a;fit-content 描述 fit-content 不是一个属性&#xff0c;它是 css 尺寸系列属性的一个新属性值。可用在 wid…

lammps教程:旋转模型的技巧

大家好&#xff0c;我是小马老师。 本文介绍lammps翻转模型的方法。 在进行分子动力学模拟时&#xff0c;可能需要特定的面位于设定的方向。 如Al2O3的力学性能模拟中&#xff0c;需要分别对A、B、C面进行压痕或者摩擦模拟。 按照研究界面垂直z轴&#xff0c;并且面法线沿着z轴…

转转测试环境治理的高效能实践

文章目录1. 背景及需求1.1 系统架构的发展1.2 测试环境的需求2. 传统的测试环境解决方案-物理隔离3. 转转测试环境V1-改进的物理隔离3.1 稳定环境3.2 动态环境3.3 优缺点3.3.1 优点3.3.2 缺点4. 转转测试环境V2-基于自动IP标签的流量路由5. 转转测试环境V3-基于手动标签的流量路…

大数据挖掘-伤寒论和金匮要略(COVID-19用药启示录,1.4万字收藏)

来自Toby老师&#xff0c;大数据挖掘-伤寒论和金匮要略 大家好&#xff0c;我是Toby老师&#xff0c;三年来新冠病毒肆虐全球&#xff0c;带来一些列症状&#xff0c;例如发热&#xff0c;恶寒&#xff0c;咳嗽&#xff0c;咽喉痛&#xff0c;腹泻&#xff0c;心脑血管疾病等…

C语言_动态内存管理

目录 1. 为什么存在动态内存管理 2. 动态内存函数介绍 2.1 开辟内存块函数_malloc 2.2 动态内存释放和回收函数_free 2.3 开辟空间初始化元素为0的函数_calloc 2.4 调整动态内存开辟大小的函数_realloc 3. 常见的动态内存错误 3.1 对NULL进行解引用操作 3.2 对动态开辟…