本文告诉大家如何从 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 ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

http://www.taodudu.cc/news/show-5365753.html

相关文章:

  • 在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 里面的视频相关推荐

  1. C# dotnet 使用 OpenXml 解析 PPT 元素的坐标和宽度高度

    在阅读本文之前,我期望你能了解基础的 PPT 解析内容,或看我的入门级博客.本文将告诉大家如何从 PPT 里面解析出通用元素的 x 和 y 的值,以及元素的宽度和高度的值 在开始之前请看 C# dot ...

  2. dotnet OpenXML 读取 PPT 形状边框定义在 Style 的颜色画刷

    本文来和大家聊聊在 PPT 形状使用了 Style 样式的颜色画刷读取方法 在开始之前,期望大家已了解如何在 dotnet 应用里面读取 PPT 文件,如果还不了解读取方法,请参阅 C# dotnet ...

  3. dotnet OpenXML 读取 PPT 内嵌 ole 格式 Excel 表格的信息

    在 Office 中,可以在 PPT 里面插入表格,插入表格有好多不同的方法,对应 OpenXML 文档存储的更多不同的方式.本文来介绍如何读取 PPT 内嵌 ole 格式的 xls+ 表格的方法 在 ...

  4. dotnet core TargetFramework 解析顺序探索

    dotnet core TargetFramework 解析顺序测试 Intro 现在 dotnet 的 TargetFramework 越来越多,抛开 .NET Framework 不谈,如果一个类 ...

  5. 【DotNet加密方式解析】-- 好文收藏

    索引: 目录索引 By -- 彭泽 一. DotNet加密方式解析--散列加密 笔记: 散列加密种类: 1.MD5  128位 2.SHA-1  160位 3.SHA-256  256位 4.SHA- ...

  6. python递归算法案例教案_Python电子教案2-1-Python程序实例解析.ppt

    Python电子教案2-1-Python程序实例解析.ppt 简单说,eval()的作用是将输入的字符串内容变成Python语句,并执行这个语句.实例代码1.1使用eval()函数将用户的部分输入(T ...

  7. 【JAVA_POI】解析PPT文档(ppt和pptx)4.1.2版本

    一.ppt和pptx区别 二.java中对PPT文档的解析 2.1引入的jar包 <dependency><groupId>org.apache.poi</groupId ...

  8. 出行者信息服务器,出行者信息服务系统解析.ppt

    出行者信息服务系统解析.ppt ppt 制作 陈倩 ppt 审查 侯湘怡 讲解人 张怀韧 引言 出行者信息服务系统 一.出行者信息服务系统综述 二.出行者信息系统的系统构成及结构框架 三.出行者信息系 ...

  9. 传智播客 java ppt_传智播客XML解析ppt课件

    PPT内容 这是传智播客XML解析ppt课件下载,主要介绍了java解析xml四种方式:Java技术 + XML:基于树的处理:DOM 的问题:SAX的行为:SAX代码例子:SAX的优势:DOM4J, ...

最新文章

  1. 半导体物理与器件_上海交通大学874半导体物理2班开课啦!
  2. JVM内存管理机制线上问题排查
  3. python安装包_在python官网打不开的情况下获取获取官方最新安装包
  4. 全网最全 Python 操作 Excel 教程,建议收藏!
  5. Java获取系统文件类型图标并显示在JSP上
  6. MacOs桌面自动被打乱的原因
  7. kakfa中的ISR解释
  8. P1040,jzoj1167-加分二叉树【树形dp】
  9. 移动前端框架重构几个关键问题
  10. 一步步编写操作系统 66 浅析c库函数与系统调用1
  11. 基于JAVA+SpringMVC+Mybatis+MYSQL的进销存管理系统
  12. 21个php常用方法汇总
  13. c51单片机时钟程序汇编语言,51单片机汇编语言--延时程序的延时时间
  14. 如何配置cocos2d-x安卓开发环境?
  15. SysUtils.Trim、SysUtils.TrimLeft、SysUtils.TrimRight - 删除空格
  16. LLVM之clang
  17. linux symbol字体下载,解决:WPS for Linux提示“系统缺失字体symbol、wingdings、wingdings 2、wingdings 3、webding”...
  18. 咪咕音乐客户端免费版
  19. c语言课程设计作业,c语言课程设计心得体会
  20. SAP 生产成本明细报表

热门文章

  1. 【Linux】腾讯云服务器Linux环境搭载
  2. 双钥密钥密码算法RSA解析与短密钥实现
  3. Mendix入门教程第一篇-demo实例
  4. LeetCode Top 100 Liked Questions 221. Maximal Square (Java版; Medium)
  5. 电脑去水印工具哪个好用?
  6. 大象数据库postgresql服务无法启动
  7. android 开发 移动网络优化,基于Android手机的移动通信网络优化数据采集与处理...
  8. python实现通讯录管理系统
  9. Python:实现perfect cube完全立方数算法(附完整源码)
  10. 前端vue3项目中百度地图的使用api及实例