java处理ppt方案详解

需求

需要系统中展示的ppt案例有一个动态展示的效果,也就是要有动画的交互,要求支持浏览器直接打开预览

背景

目前已经实现了前端上传pptx文件,后端解析为png的图片,前端掉接口返回对应的图片,模拟播放ppt的效果

各种尝试实践

1、服务器直接存储pptx文件,浏览器直接打开。
 

谷歌,ie直接下载

Micrisoft Edge会转为在线处理pptx文件的一个网站然后打开预览

且谷歌也有这样一个网站,但是打不开,可能需要连外网

https://view.officeapps.live.com/op/view.aspx?src=你的pptx文件地址&wdOrigin=BROWSELINK

预览效果如下,可以有动态交互效果

尝试本地保存为静态页面,未果,遂弃之

2、将每一个ppt页面都手动转化为html页面

        在将pptx文件转化为一个个html页面后,我发现,页面依然是静态的,也就是说,poi的包不支持去解析pptx文件为html后依旧保持原有交互

3、前端寻找插件,或者自己解析pptx文件

        这里我已经精疲力竭了,好像已经没有什么思路了,找了半天资料,感觉前端也不是不能自己解析,这个留在最后没有办法以后再看吧

4、第三方jar包

        第三方jar包,直接转为html,无法达到动态效果,效果大体会比原来转图片的效果好,部分的字体会有溢出,但是依然是静态的图片组成的页面,部分字体溢出的问题,在编辑的时候尽量不要以字符结尾即可解决

5、继续尝试寻找插件,或jar包

未果

6、将pptx转化为svg

        在经历了千辛万苦之后,我发现是真的无法找到满足我的需求的工具了,我想起了借鉴一下微软的做法,我打开了他们在线转化的网站,发现了他们是一大堆的svg图片加css样式去实现的,想到我们也只是需要一些基本的动态交互效果,感觉确实可行,保留一下

7、将pptx转化为ODP格式

        我还想着有没有哪种格式是浏览器可以识别的,pptx可以转化的,且能保留一定的动态交互效果的格式,查找了半天,看到一个说ODP格式有动态效果,且浏览器可以直接打开,抱着激动的心情,我将pptx文件转化为ODP文件,最后拿浏览器访问时,直接又是下载。(这里备注一下,浏览器在遇到自己无法识别的文件,都会去下载)

8、将pptx文件转化为ppt文件

这个时候有点病急乱投医的感觉了,明知道不会有结果的事,还是尝试了,浏览器打开ppt文件依然是下载

小结

        ppt文件不可以在软件内部直接打开,通过解析后又无法保留原有的交互,.ppt和.pptx文件无法通过转化格式的方式在浏览器上直接打开后还能保存动态交互的,但是借鉴微软浏览器的处理方式,当你打开.ppt或.pptx结尾的文件时,它会有一个在线解析的网址,可以支持你在网页直接打开并且保留一定的交互。所以我自己的系统在处理时也可以参照,将每一个ppt都保存为一个svg图,通过css的样式去达到一个动态交互的效果。具体交互方式看自己需求。
        初步方案预想:PPT文件转存为svg格式通过设置样式的方式去实现动态交互

重点分析

1、样式的嵌入方式(如果在svg里直接插入交互样式,后端需要看看怎么具体去实现)
2、svg的动态交互的通用模版具体的实现方式(后端没办法逐一加不同class)

具体实现

1、后端保存pptx文件为svg格式,保存时连同样式名字一起保存,在对应的config配置表中添加不同样式,返回svg的同时返回需要使用的交互样式
2、前端写多套样式模版,存在后台配置中,通过接口获取,动态拼接在页面上

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

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

相关文章

uniapp实现自定义底部tab栏

1、自定义底部导航组件接收一个tabs数组作为参数,每个数组项包含icon和text字段,用于表示每个底部标签的图标和文本。通过遍历tabs数组,渲染每个底部标签项的图标和文本。activeIndex表示当前选中的底部标签的索引。点击底部标签时&#xff0…

树莓派Pico W无线开发板蓝牙通信MicroPython编程

内容提要:2023年6月14日,树莓派官方发布了对树莓派Pico W无线开发板(简称Pico W)MicroPython蓝牙功能的支持。本文首先介绍Pico W接口信号及蓝牙通信协议,然后通过Pico W接口信号扩展连接一只LED和一个按键,并给出Pico W蓝牙通信MicroPython编程示例。 一、Pico W接口信号…

日期函数

目录 显示当前日期 显示当前的时间戳 计算若干天之后的日期 计算每一位员工到今天为止的雇佣天数 计算两个日期间所经历的月数总和 计算每一位员工到今天为止的雇佣总月数 计算每一位员工到今天为止所雇佣的年限 增加若干月之后的日期 测试 add_months() 函数 查询所…

华为数通方向HCIP-DataCom H12-821题库(单选题:401-420)

第401题 R1的配置如图所示,此时在R1查看FIB表时,关于目的网段192.168.1.0/24的下跳是以下哪一项? A、10.0.23.3 B、10.0.12.2 C、10.0.23.2 D、10.0.12.1 【答案】A 【答案解析】 该题目考查的是路由的递归查询和 RIB 以及 FIB 的关系。在 RIB 中,静态路由写的是什么,下…

时间序列预测 —— TCN模型

时间序列预测 —— TCN模型 卷积神经网络(Convolutional Neural Network,CNN)在图像处理等领域取得了显著的成就,一般认为在处理时序数据上不如RNN模型,而TCN(Temporal Convolutional Network)…

十分钟上手vue!

Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。 一 vue.js的导入及使用 vue安装…

微服务框架go-zero集成swagger在线接口文档

go-zero(收录于 CNCF 云原生技术全景图:CNCF Landscape)是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。 go-zero 包含极简的 API 定义和生成工具 goctl,可以根据定义的 api 文件一键生成 Go, iOS, Android…

PostgreSQL从小白到高手教程 - 第44讲:pg流复制部署

PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。 第44讲&#…

AJAX-入门

定义 概念:AJAX是浏览器与服务器进行数据通信的技术 使用 1.先使用axios库,与服务器进行数据通信 1)基于XMLHttpRequest封装、代码简单、月下载量在14亿次 2)Vue、React项目中都会用到axios 2.再学习XMLHttpRequest对象的使用…

高宇辰:打造“π”型人才 | 提升之路系列(七)

导读 为了发挥清华大学多学科优势,搭建跨学科交叉融合平台,创新跨学科交叉培养模式,培养具有大数据思维和应用创新的“π”型人才,由清华大学研究生院、清华大学大数据研究中心及相关院系共同设计组织的“清华大学大数据能力提升项…

ElementUI Form:Upload 上传

ElementUI安装与使用指南 Upload 上传 点击下载learnelementuispringboot项目源码 效果图 el-upload.vue(Upload上传)页面效果图 el-upload.vue代码 import Vue from vue import VueRouter from vue-router import HomeView from ../views/HomeV…

【论文阅读笔记】Taming Transformers for High-Resolution Image Synthesis

Taming Transformers for High-Resolution Image Synthesis 记录前置知识AbstractIntroductionRelated WorkMethodLearning an Effective Codebook of Image Constituents for Use in TransformersLearning the Composition of Images with Transformers条件合成合成高分辨率图…

Interpolator:在Android中方便使用一些常见的CubicBezier贝塞尔曲线动画效果

说明 方便在Android中使用Interpolator一些常见的CubicBezier贝塞尔曲线动画效果。 示意图如下 import android.view.animation.Interpolator import androidx.core.view.animation.PathInterpolatorCompat/*** 参考* android https://yisibl.github.io/cubic-bezier* 实现常…

操作系统真象还原---系列笔记总结

闲话 最开始知道这本书是在校内论坛上,有同学通过这本书里的项目拿到大厂的ssp offer,于是就从网上订购了这本较为大部头的书,想要在简历上添加一个足够底层并且有意思的项目经历,从而帮助自己在秋招时赢得一个好的offer。 第一遍…

个人网站如何让搜索引擎收录

当我们花费功夫搭建好个人网站,如何能让搜索引擎搜索到个人网站呢?比如百度,根本百度不到自己网站的内容。这时候就要使用到搜索引擎提供的站点收录功能了,但是点开百度的搜索资源平台,添加自己的站点时,就…

Java/Python/Go不同开发语言基础数据结构和相关操作总结-Map篇

Java/Python/Go不同开发语言基础数据结构和相关操作总结 1. Java1.1 基础操作1.1.1 数据结构和定义方式1.1.2 增加1.1.3 修改1.1.4 查询1.1.5 删除1.1.6 获取总长度1.1.7 按key排序1.1.8 按value排序1.1.9 遍历 1.2 常用其他方法1.2.1 几种数据结构的对比 2. Go2.1基础操作2.1.…

C# 反射详解:动态编程的利器

文章目录 前言一、反射的原理二、反射的基本概念三、反射的主要API1、Type类:2、MemberInfo类:3、PropertyInfo类:4、MethodInfo类:5、Assembly类:6、EventInfo 类7、FieldInfo 类 四、使用场景五、使用方法1. 获取类型…

详解C++中auto关键字

auto关键字 auto关键字(C11)类型别名思考auto简介auto的使用细则auto与指针和引用结合起来使用在同一行定义多个变量 auto不能推导的场景1.auto不能作为函数的参数2.auto不能直接用来声明数组 auto关键字(C11) 类型别名思考 随着程序越来越复杂,程序中用到的类型也…

山东淄博刑侦大队利用无人机抓获盗窃团伙

山东淄博刑侦大队利用无人机抓获盗窃团伙 近期,山东淄博临淄区发生多起盗窃案件。通过视频追踪和调查访问,推断临淄区某村可能为嫌疑人藏匿地点。刑侦大队无人机应急小组迅速到达现场,经无人机高空侦查,发现并锁定了嫌疑人的藏匿…

vue使用pdf.js实现在线查看pdf文件

需求&#xff1a;有一个列表页&#xff0c;用户点击查看&#xff0c;弹层展示后台接口返回的pdf内容(不是文件、地址之类的&#xff0c;乱码的pdf铭文(二进制文件流)) 1、pdf.js安装 npm install --save vue-pdf2、正文代码 <template><div><el-table :data&q…