C# dotnet 使用 OpenXml 解析 PPT 里面的视频
本文告诉大家如何从 PPTX 文件里面解析出视频
我期望看到本文的小伙伴是了解 OpenXML 的,如果想要解析 Office 的文档,我推荐使用使用 OpenXML SDK 这个开源的库,更多入门级博客请看 C# dotnet 使用 OpenXml 解析 PPT 文件
我做了一个简单的 PPT 文件,这个文件里面只有一页,这一页上面有一个视频。做这个文件的作用是方便调试,本文将从这个文件里面拿到视频
using (var presentationDocument =DocumentFormat.OpenXml.Packaging.PresentationDocument.Open(@"小视频.pptx", false)){var presentationPart = presentationDocument.PresentationPart;var slidePart = presentationPart.SlideParts.FirstOrDefault();// 忽略代码}
上面代码是打开解析文件,我拿到第一页,而获取页面的元素需要了解一点是 PPT 将所有元素存放 ShapeTree 而视频是不存在元素的,在 PPT 里面用 Picture 存放视频
<p:pic><p:nvpicpr><p:cnvpr id="4" name="视频"><a:hlinkclick action="ppaction://media" r:id=""></a:hlinkclick></p:cnvpr><p:cnvpicpr><a:piclocks nochangeaspect="1"></a:piclocks></p:cnvpicpr><p:nvpr><a:videofile r:link="rId2"></a:videofile><p:extlst><p:ext uri="{DAA4B4D4-6D71-4841-9C94-3DE7FCFB9230}"><p14:media r:embed="rId1" xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main"></p14:media></p:ext></p:extlst></p:nvpr></p:nvpicpr>
</p:pic>
如上面代码,这就是视频元素其实也就是 Picture 元素,可以在 picture.NonVisualPictureProperties.ApplicationNonVisualDrawingProperties 找到 VideoFromFile 解析视频
var picture = slidePart.Slide.CommonSlideData.ShapeTree.OfType<Picture>().FirstOrDefault();var videoFromFile = picture.NonVisualPictureProperties.ApplicationNonVisualDrawingProperties.GetFirstChild<VideoFromFile>();
而视频用的是 r:link
拿到对应的资源,在 PPT 里面,用 GetPartById 获取 ChildrenRelationshipParts 的资源,用 GetReferenceRelationship 拿到 ReferenceRelationshipList 的资源
在 PPT 里面的视频放在 ReferenceRelationshipList 使用下面代码拿到
var openXmlPart = (DataPartReferenceRelationship) slidePart.GetReferenceRelationship(videoFromFile.Link.Value);
通过 GetStream 方法可以拿到压缩包里面的文件,此时不需要解压缩,新建文件写入就可以
var stream = openXmlPart.DataPart.GetStream();var file = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "林德熙是逗比.mp4");File.WriteAllBytes(file, ReadAllBytes(stream));
代码放在 github 欢迎小伙伴访问
我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新
如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入
如有不方便在博客评论的问题,可以加我 QQ 2844808902 交流
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
相关文章:
- 在PPT中加入视频
- Python中将numpy Int16类型的音频阵列转换为Float32类型
- Golang中Int32转换为int16丢失精度的具体过程
- C语言int16_t和uint16_t的区别
- Linux系统点歌机
- 电机的S型曲线加速
- 立式离心泵的工作原理与维护
- 离心泵级间导叶的设计计算
- nvme固态必须uefi启动吗_离心泵启动时,出口阀门必须关闭吗?
- 离心泵的使用注意事项-泄露或未排气造成扬程不够
- 化工离心泵
- 采用平均系数法计算机泵,离心泵流体论文(33页)-原创力文档
- 离心泵启动时,出口阀门必须关闭吗?
- 离心泵水力设计——蜗壳设计
- 计算机软件与理论英文怎么说,西安电子科技大学计算机软件与理论怎么样
- ConvNeXt理论讲解
- (简单详细)uniapp实现自定义海报内容并生成海报二维码图片(可拖拽,可调节大小)
- java绘制海报,使用BufferedImage,Graphics2D,drawString方法在图片上写文字,中文不显示;drawString写文字为空问题
- 微信小程序-生成保存图文海报-canvas生成图片、二维码、自定义文字样式
- 微信小程序webview页面使用painter生成海报
- 小程序生成分享海报php配置,小程序生成海报保存分享图片完全指南(包括:头像,文字)...
- php 文字水印换行,php实现文字换行以及thinphp5.1水印自定义位置
- 第7周 CSV格式清洗与转换
- NIRX、Shimadzu2nirs的格式转换.nirs格式,供Homer2、3、FC-nirs进行分析方法
- 2020-03-29-近红外数据格式转换
- 【Git】从远程库克隆
- matlab光谱数据,matlab生成光谱仿真数据
- 用Matlab和SPM批量处理被试的经验总结
- 近红外光谱实验新手指南
- Gretna计算网络指标操作
C# dotnet 使用 OpenXml 解析 PPT 里面的视频相关推荐
- C# dotnet 使用 OpenXml 解析 PPT 元素的坐标和宽度高度
在阅读本文之前,我期望你能了解基础的 PPT 解析内容,或看我的入门级博客.本文将告诉大家如何从 PPT 里面解析出通用元素的 x 和 y 的值,以及元素的宽度和高度的值 在开始之前请看 C# dot ...
- dotnet OpenXML 读取 PPT 形状边框定义在 Style 的颜色画刷
本文来和大家聊聊在 PPT 形状使用了 Style 样式的颜色画刷读取方法 在开始之前,期望大家已了解如何在 dotnet 应用里面读取 PPT 文件,如果还不了解读取方法,请参阅 C# dotnet ...
- dotnet OpenXML 读取 PPT 内嵌 ole 格式 Excel 表格的信息
在 Office 中,可以在 PPT 里面插入表格,插入表格有好多不同的方法,对应 OpenXML 文档存储的更多不同的方式.本文来介绍如何读取 PPT 内嵌 ole 格式的 xls+ 表格的方法 在 ...
- dotnet core TargetFramework 解析顺序探索
dotnet core TargetFramework 解析顺序测试 Intro 现在 dotnet 的 TargetFramework 越来越多,抛开 .NET Framework 不谈,如果一个类 ...
- 【DotNet加密方式解析】-- 好文收藏
索引: 目录索引 By -- 彭泽 一. DotNet加密方式解析--散列加密 笔记: 散列加密种类: 1.MD5 128位 2.SHA-1 160位 3.SHA-256 256位 4.SHA- ...
- python递归算法案例教案_Python电子教案2-1-Python程序实例解析.ppt
Python电子教案2-1-Python程序实例解析.ppt 简单说,eval()的作用是将输入的字符串内容变成Python语句,并执行这个语句.实例代码1.1使用eval()函数将用户的部分输入(T ...
- 【JAVA_POI】解析PPT文档(ppt和pptx)4.1.2版本
一.ppt和pptx区别 二.java中对PPT文档的解析 2.1引入的jar包 <dependency><groupId>org.apache.poi</groupId ...
- 出行者信息服务器,出行者信息服务系统解析.ppt
出行者信息服务系统解析.ppt ppt 制作 陈倩 ppt 审查 侯湘怡 讲解人 张怀韧 引言 出行者信息服务系统 一.出行者信息服务系统综述 二.出行者信息系统的系统构成及结构框架 三.出行者信息系 ...
- 传智播客 java ppt_传智播客XML解析ppt课件
PPT内容 这是传智播客XML解析ppt课件下载,主要介绍了java解析xml四种方式:Java技术 + XML:基于树的处理:DOM 的问题:SAX的行为:SAX代码例子:SAX的优势:DOM4J, ...
最新文章
- 半导体物理与器件_上海交通大学874半导体物理2班开课啦!
- JVM内存管理机制线上问题排查
- python安装包_在python官网打不开的情况下获取获取官方最新安装包
- 全网最全 Python 操作 Excel 教程,建议收藏!
- Java获取系统文件类型图标并显示在JSP上
- MacOs桌面自动被打乱的原因
- kakfa中的ISR解释
- P1040,jzoj1167-加分二叉树【树形dp】
- 移动前端框架重构几个关键问题
- 一步步编写操作系统 66 浅析c库函数与系统调用1
- 基于JAVA+SpringMVC+Mybatis+MYSQL的进销存管理系统
- 21个php常用方法汇总
- c51单片机时钟程序汇编语言,51单片机汇编语言--延时程序的延时时间
- 如何配置cocos2d-x安卓开发环境?
- SysUtils.Trim、SysUtils.TrimLeft、SysUtils.TrimRight - 删除空格
- LLVM之clang
- linux symbol字体下载,解决:WPS for Linux提示“系统缺失字体symbol、wingdings、wingdings 2、wingdings 3、webding”...
- 咪咕音乐客户端免费版
- c语言课程设计作业,c语言课程设计心得体会
- SAP 生产成本明细报表
热门文章
- 【Linux】腾讯云服务器Linux环境搭载
- 双钥密钥密码算法RSA解析与短密钥实现
- Mendix入门教程第一篇-demo实例
- LeetCode Top 100 Liked Questions 221. Maximal Square (Java版; Medium)
- 电脑去水印工具哪个好用?
- 大象数据库postgresql服务无法启动
- android 开发 移动网络优化,基于Android手机的移动通信网络优化数据采集与处理...
- python实现通讯录管理系统
- Python:实现perfect cube完全立方数算法(附完整源码)
- 前端vue3项目中百度地图的使用api及实例