C# dotnet 使用 OpenXml 解析 PPT 元素的坐标和宽度高度
在阅读本文之前,我期望你能了解基础的 PPT 解析内容,或看我的入门级博客。本文将告诉大家如何从 PPT 里面解析出通用元素的 x 和 y 的值,以及元素的宽度和高度的值
在开始之前请看 C# dotnet 使用 OpenXml 解析 PPT 文件 在拿到 slidePart.Slide.CommonSlideData.ShapeTree 里面的元素,几乎所有元素都存在坐标和宽度高度,这里的元素我称为通用元素,也就是不是特定的如形状、图片元素
此时的元素应该是继承 OpenXmlElement 类,在这个类里面可以通过 GetFirstChild 找到 ShapeProperties 的值
var shapeProperties = element.GetFirstChild<ShapeProperties>();
上面代码的 element 是 OpenXmlElement 类
拿到了 ShapeProperties 实际上就是 PPT 文件的 p:sppr 内容,在 PPT 里面将会用如下格式设置元素里面的值中 a:xfrm 就是 Transform2D 请看下面
<p:sppr><a:xfrm><a:off x="3292475" y="1300390"></a:off><a:ext cx="6096000" cy="3429000"></a:ext></a:xfrm><a:prstgeom prst="rect"><a:avlst></a:avlst></a:prstgeom>
</p:sppr>
此时通过 var transform2D = shapeProperties.GetFirstChild<Drawing.Transform2D>();
就能拿到 a:xfrm
的值
等等,这里的 Drawing.Transform2D 是什么意思,我在命名空间里面添加这个代码
using Presentation = DocumentFormat.OpenXml.Presentation;
using Drawing = DocumentFormat.OpenXml.Drawing;
using ShapeProperties = DocumentFormat.OpenXml.Presentation.ShapeProperties;
拿到 Transform2D 可以再获取 Offset 也就是 a:off
拿到 x 和 y 的大小
var offset = transform2D.GetFirstChild<Drawing.Offset>();var offsetX = new Emu(offset.X.Value);var offsetY = new Emu(offset.Y.Value);
在 PPT 里面,通用元素的 x 和 y 值单位是 Emu 上面的类是我自己定义的,有可以抄的代码,请看 C# dontet Office Open XML Unit Converter 我定义了和像素转换的代码
可以通过 Extents 也就是 a:ext
获取元素的宽度和高度,请看代码
var extents = transform2D.GetFirstChild<Drawing.Extents>();var extentWidth = new Emu(extents.Cx);var extentHeight = new Emu(extents.Cy);
ShapeProperties Class (DocumentFormat.OpenXml.Drawing.Pictures)
知道了元素的坐标如何在 UWP 中设置元素的坐标请看 win10 uwp 拖动控件
我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新
如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入
如有不方便在博客评论的问题,可以加我 QQ 2844808902 交流
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
http://www.taodudu.cc/news/show-2888648.html
相关文章:
- GO Strings-and-runes
- Dart学习3、数据类型详解
- Go语言学习(十)bytes包处理字节切片
- Runes - 神符一览
- golang:字符类型(byte和rune)
- Flutter 核心编程二:Dart基础语法之基本数据类型,数组,方法,Runs,函数闭包,typedef,操作符
- Flutter必备——Dart入门(上)
- Flutter 开发中最实用的 Dart 语法知识
- Go中rune类型浅析
- Golang bytes源码分析
- Strings、bytes and runes -- 就要学习 Go 语言
- Gym - 101653T Runes [模拟]
- Gym 101653T Runes (模拟)
- GYM 100827 A.Runes(水~)
- GYM 101653 T.Runes(水~)
- Strings、bytes and runes -- 就要学习Go语言
- Dart笔记(10):Runes
- Strings, bytes, runes and characters in Go
- Strings and Runes
- codeforces gym 100827A Runes
- Runes——Dart
- Dart(5)-内置类型
- Flutter学习之Dart语言基础(内置类型)
- Dart基础语言 — Runes
- SANGFOR SCSA——Windows系统基础
- SANGFOR SCSA——信息安全概述
- SANGFOR SCSA——linux系统基础
- SCSA❀基础信息安全概述
- SANGFOR SCSA——协议基础
- 微博插件-微博图片全显示(页面样式本人优化版)
C# dotnet 使用 OpenXml 解析 PPT 元素的坐标和宽度高度相关推荐
- C# dotnet 使用 OpenXml 解析 PPT 里面的视频
本文告诉大家如何从 PPTX 文件里面解析出视频 我期望看到本文的小伙伴是了解 OpenXML 的,如果想要解析 Office 的文档,我推荐使用使用 OpenXML SDK 这个开源的库,更多入门级 ...
- dotnet OpenXML 读取 PPT 形状边框定义在 Style 的颜色画刷
本文来和大家聊聊在 PPT 形状使用了 Style 样式的颜色画刷读取方法 在开始之前,期望大家已了解如何在 dotnet 应用里面读取 PPT 文件,如果还不了解读取方法,请参阅 C# dotnet ...
- dotnet OpenXML 读取 PPT 内嵌 ole 格式 Excel 表格的信息
在 Office 中,可以在 PPT 里面插入表格,插入表格有好多不同的方法,对应 OpenXML 文档存储的更多不同的方式.本文来介绍如何读取 PPT 内嵌 ole 格式的 xls+ 表格的方法 在 ...
- python递归算法案例教案_Python电子教案2-1-Python程序实例解析.ppt
Python电子教案2-1-Python程序实例解析.ppt 简单说,eval()的作用是将输入的字符串内容变成Python语句,并执行这个语句.实例代码1.1使用eval()函数将用户的部分输入(T ...
- 计算机算法讲解的ppt,智能计算几种经典算法解析.ppt
<智能计算几种经典算法解析.ppt>由会员分享,可在线阅读,更多相关<智能计算几种经典算法解析.ppt(20页珍藏版)>请在装配图网上搜索. 1.智能计算几种经典算法解析,制作 ...
- dotnet core TargetFramework 解析顺序探索
dotnet core TargetFramework 解析顺序测试 Intro 现在 dotnet 的 TargetFramework 越来越多,抛开 .NET Framework 不谈,如果一个类 ...
- jaxb 解析list元素_JAXB和根元素
jaxb 解析list元素 @XmlRootElement是人们习惯于与JAXB(JSR-222)一起使用的注释. 目的是将根元素与类唯一关联. 由于JAXB类映射到复杂类型,因此一个类有可能对应于多 ...
- 【DotNet加密方式解析】-- 好文收藏
索引: 目录索引 By -- 彭泽 一. DotNet加密方式解析--散列加密 笔记: 散列加密种类: 1.MD5 128位 2.SHA-1 160位 3.SHA-256 256位 4.SHA- ...
- 【JAVA_POI】解析PPT文档(ppt和pptx)4.1.2版本
一.ppt和pptx区别 二.java中对PPT文档的解析 2.1引入的jar包 <dependency><groupId>org.apache.poi</groupId ...
最新文章
- 制作ui设计作品集要注意哪些
- NC:应对干旱 细菌崩了 真菌依然很稳(纯网络分析发Nature子刊)
- linux 查看锁机时间,3分钟短文|Linux 登陆痕迹查看,last 锁定所有可疑对象
- dubbo学习笔记 第四章构建dubbo的web应用 上
- 【转】HTML5 本地存储五种方案
- shiro spring boot thymeleaf
- S3C2440 中断相关寄存器小探
- 社区奖品之原木双面记事板
- [WPF系列]-Deep Zoom
- 【树链剖分】春季大扫除(P6805)
- mysql 横向扩展 中间件_mysql-proxy数据库中间件架构 | 架构师之路
- ECMAScript基础(三)-关键字
- Codeforces Round #564 (Div. 2) C. Nauuo and Cards
- ubuntu mate 开机自动启动ssh服务
- 【Spring笔记】Spring介绍IOC理论推导
- 大数据时代移动营销的十大趋势
- 微信表情存入mysql
- Open vSwitch: Provider 网络
- 201万年薪,华为天才少年路径可以复制吗
- 帮助你提高排版技巧的18个 PS 文字特效教程