详细请看 ECMA 376 的 L.4.8.3 文档和 20.1.2.3 Colors 文档 上面的所有标记了百分比的值的单位都是千倍百分比,也就是在 OpenXML 文档里写的值如下面代码,这里的 lumMod 65000" /> </a:schemeClr> 这里的 65000 就是千倍百分比,每 1000 表示百分之一,关于单位请看Office Open XML 的测量单位 更多请看 Office 使用 OpenXML
开放式的OpenXML文件格式一直广为关注,昨天一份最终版的格式定义文档在Ecma-International's上出现,这是一个里程碑式的文档,标志着Office的文档格式定型,这里提供资料链接,开发员朋友们请关注 具体参看Ecma International approves Office Open XML standard.( 但是, 对手 IBM 对OpenXML 投了反对票- 具体参看 这里.) .加之 OpenXML开发者网站 :http://openxmldeveloper.org/ ODF Add-in for Microsoft Word :http://sourceforge.net/projects /odf-converter Novell Adds OpenXML Support to OpenOffice :http://www.linuxinsider.com/story/54586.html Office 2000/XP/2003 OpenXML插件:http://www.microsoft.com/downloads/details.aspx?
Openxml的颜色变化属性 目前Openxml存在颜色变化属性如下: 参数 说明 Hue 色调(色相) HueModulate 色调调制,百分比 HueOffset 色调偏移量,角度值 Saturation 255); color.B = (byte) ((b + m) * 255); return color; } 然后我们来写真正处理Openxml Percentage.Zero : lum; return HslToColor(hue, sat, lum, alpha); } 处理RGB相关属性 涉及到RGB相关的Openxml Correction)与sRGB RGB to HSL converter | color conversion HSL to RGB conversion | color conversion dotnet OpenXML
注释很详细,不做解释了,有疑问可以提问
using System.IO;
using System.Text;
namespace iLIS.Common
{
///
在 OpenXML 定义了 Scheme Color (schemeClr) 是用来表示主题的颜色,可以跟随主题的更改而更改颜色。 例如我的文本设置为主题的文本颜色,那么在我更改文档主题的文本色就可以更改我的文本颜色 在 OpenXML 的颜色里面,其中 Scheme Color (a:schemeClr) 是十分强大的,可以用来作为模版发布 也提供了给智能排版协助更换主题色的方法 在填充笔刷里,本文说的颜色是放在 SolidColorBrush 里面,也就是在 OpenXML 的 a:solidFill 里面的颜色,大概的文档代码请看下面 ColorMapOverride 重写颜色表,因此在 OpenXML SDK 里面需要这样获取,在拿到 SlidePart, SlideLayoutPart, SlideMasterPart 三个变量 如果没有 OpenXML SDK 的定义辅助,也许这里的逻辑能坑你很久 更多请看 Office 使用 OpenXML SDK 解析文档博客目录
本文将介绍如何将OpenXml的actTo转为Svg的弧线(a) OpenXml的artTo 首先下面是一段OpenXml的arcTo弧线 <arcTo wR="152403" hR="152403" 单位换算为Pixel的库和矩阵运算用到的库: 通过nuget包的控制台执行以下命令: Openxml单位换算库 Install-Package dotnetCampus.OpenXmlUnitConverter Window> 后端cs代码: public MainWindow() { InitializeComponent(); //Openxml , double swAng, Point currentPoint) { const string comma = ","; //将Openxml 】Pptx的形状转为WPF的Geometry - RyzenAdorer - 博客园 dotnet OpenXML SDK 形状几何 Geometry 的计算公式含义
只有在此段落的样式与段落本身不同时,才应设置此属性 文本的属性会受到页面以及模版和所在段落的影响,而 a:endParaRPr 是一个放在 <a:p> 里面的标记,用来表示这一段的结束,在 OpenXML TextCharacterPropertiesType 类 而 TextCharacterPropertiesType 类就包含了 TextRun 的字符属性,如字体字号等信息,详细请看 dotnet OpenXML 这个属性和 Text Line Break 有些不同,原因是默认一段就是包含一个换行符,而 <a:br/> 就是让一段内可以包含多个换行 我写了很多 Office 解析相关的博客,请看 Office 使用 OpenXML SDK 解析文档博客目录 ---- 本文会经常更新,请阅读原文: https://blog.lindexi.com/post/dotnet-OpenXML-%E6%96%87%E6%
本文来告诉大家如何解析读取在 OpenXML 里面存放的文本删除线,本文使用 PowerPoint 作为例子来告诉大家如何读取然后在 WPF 应用里面显示 在开始之前,期望大家已了解如何在 dotnet 应用里面读取 PPT 文件,如果还不了解读取方法,请参阅 C# dotnet 使用 OpenXml 解析 PPT 文件 期望在阅读本文之前,先阅读 dotnet OpenXML 简单聊聊 PPT 文本解析 以下是本文效果 在 OpenXML 文档,将文本的删除线放在了文本的 Run 属性里面,大概内容如下 <a:r> <a:rPr lang="en-US 同时下划线和删除线的样式也是特别多的 如删除线的 TextStrikeValues 的枚举,在 ECMA 376 的第 20.1.10.78 章可以了解到有单线条的删除线和双线条的删除线,在 <em>OpenXML</em> SDK 解析文档博客目录 ---- 本文会经常更新,请阅读原文: https://blog.lindexi.com/post/dotnet-<em>OpenXML</em>-%E6%96%87%E6%
SDK 的 DocumentFormat.OpenXml.Drawing.BodyProperties 类。 SDK 里面使用 DocumentFormat.OpenXml.Drawing.Paragraph 类。 在 OpenXML SDK 里面使用 DocumentFormat.OpenXml.Drawing.ParagraphProperties 类 ? 这里的 <a:rPr> 在 OpenXML SDK 里面使用 DocumentFormat.OpenXml.Drawing.RunProperties 类。 的 Slide Master 和 Slide Layout 是什么 第二点就是属性的数量本身,在 OpenXML 里面定义了大量的文本可以被设置的属性,光是定义这些属性就需要大量的代码。
a:bodyPr 文本框属性 BodyProperties 的属性的作用 根据 ECMA-376 文档 21.1.2.1.1 bodyPr (Body Properties) 在 Office 的 OpenXML BodyProperties textBodyProperties) { } 本文会不断更新,因为属性太多了 文本自适应宽度 文本框默认是固定宽度,使用 wrap (Text Wrapping Type) 属性,对应 OpenXML 右边距和 bIns 下边距表示 <a:bodyPr lIns="108000" tIns="180000" rIns="108000" bIns="180000"> </a:bodyPr> 在 OpenXML
当然,想要理解这一点,还需要了解 Tab 的规则 latinLnBrk Latin Line Break OpenXML SDK: var latinLineBreak = paragraphProperties.LatinLineBreak eaLnBrk East Asian Line Break OpenXML SDK: var eastAsianLineBreak = paragraphProperties.EastAsianLineBreak fontAlgn Font Alignment OpenXML SDK: var fontAlignment = paragraphProperties.FontAlignment; 作用:设置字体比较小的文本对齐方法 可以作出上标下标的效果 更多请看 Office 使用 OpenXML SDK 解析文档博客目录 ---- 本文会经常更新,请阅读原文: https://blog.lindexi.com /post/dotnet-OpenXML-%E6%96%87%E6%9C%AC-ParagraphProperties-%E7%9A%84%E5%B1%9E%E6%80%A7%E4%BD%9C%E7%94%
本文记录在 OpenXML SDK 2.15 版本下,为 PPTX 文件添加 CoreFilePropertiesPart 的方法,通过本文的方法可以正确且简单的添加 core.xml 文件到 PPTX 文件里 当前的 OpenXML SDK 存在已知问题,那就是默认情况下生成不包含 core.xml 文件,请参阅 https://github.com/dotnet/Open-XML-SDK/issues /1093 在 OpenXML SDK 里面提供了 AddCoreFilePropertiesPart 方法可以用来添加 CoreFilePropertiesPart 的内容。 f4a8f9c5265f3e52f3b9f93bb6570c9e73dc41c4 获取代码之后,进入 WefejurkawFekejiyi 文件夹 更多关于 CoreFilePropertiesPart 请参阅 ECMA 376 文档的 15.2.12.1 章内容 更多关于 OpenXML 相关知识,请参阅 Office 使用 OpenXML SDK 解析文档博客目录
在 OpenXml 预设形状,有一些形状设置了 PathFillModeValues 枚举,此枚举提供了亮暗的蒙层特效。具体的特效是让形状选择一个画刷,在画刷上加上特效。 如立体几何 Cube 形状,在 Cube 不同的面有不同的颜色,颜色的亮度不同 接下来通过 OpenXML SDK 实现读取 PPTX 文件,解析 Cube 预设形状,在界面绘制,让填充和 PowerPoint </lnTo> </path> </pathLst> 可以看到在 Path 元素上,有 Fill 属性,分别设置了 darkenLess 和 lightenLess 的值,对应到 OpenXML 以下代码的 EmuSize 和 Emu 都是采用 OpenXML 单位库,详细请看 Office Open XML 的测量单位 var elementSize = new EmuSize Path字符串</param> /// <param name="fillMode">OpenXml的Path Fill Mode </param> /// <param
本文聊的 Word 是 docx 格式,这个格式遵循 ECAM 376 全球标准,使用的格式是 OpenXML 格式,在 2013 微软开源了 OpenXml 解析库。 UIElement_OnDragEnter"></Border> </Grid> 在 WPF 中通过设置 AllowDrop=”True” 就可以让控件支持接收拖放的文件 接着通过 NuGet 安装 Openxml 的 .NET Core 版本,此时可以在 csproj 添加下面代码进行安装 <ItemGroup> <PackageReference Include="DocumentFormat.<em>OpenXml</em> " Version="2.11.3" /> </ItemGroup> 这个版本的 DocumentFormat.OpenXml 库包含了我的垃圾代码,这是一个在 GitHub 上开源的库,所有的小伙伴都可以参与开发
本文将从 OpenXML 方面聊 PPT 的动画框架,本文是属于编程方面而不是 PPT 动画制作教程 开始之前,还请掌握一些基础知识,如阅读以下博客 C# dotnet 使用 OpenXml 解析 PPT 文件 Office 文档解析 文档格式和协议 dotnet OpenXML 解析 PPT 页面元素文档格式 本文不讨论 Slide Master 和 Slide Layout 的动画,关于这两个请参阅 dotnet OpenXML 的 Slide Master 和 Slide Layout 是什么 本文只讨论 Slide 页面里面的动画 元素主序列动画 在 OpenXML 中,如果一个动画是依靠翻页或点击页面进行触发的 ,那么这些动画有顺序的触发,这部分就是主序列动画,也叫 主动画序列 在 OpenXML 的 PPTX 文件里面的存放大概如下 <p:timing> <p:tnLst> <p:par 工具协助测试的,这个工具是开源免费的工具,欢迎使用 更多请看 Office 使用 OpenXML SDK 解析文档博客目录
在使用 OpenXML SDK 解析 PPT 文档的文本占位符的时候,需要对 PPT 的格式有一定的了解,尽管整个 OpenXML SDK 包括文档等都很详细。 - 知乎 想要解析占位符还需要先学会如何使用占位符才好理解占位符是如何做的 在 OpenXML 里面文本是形状,也就是 DocumentFormat.OpenXml.Presentation.Shape 元素,可以使用下面代码获取页面的形状 using (var presentationDocument = DocumentFormat.OpenXml.Packaging.PresentationDocument.Open layoutPlaceholder 获取,如果获取不到从 masterPlaceholder 获取 注释里面的 文本占位符没有type和id的值.pptx 我就不放出来了,有需要的小伙伴发邮件给我 更多的 OpenXML 相关博客,还请自行百度 OpenXML 林德熙 就能找到我的博客了 如果你想持续阅读我的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker订阅博客,或者前往 CSDN
在 2013 微软开源了 OpenXml 解析库,在微软的 PPTX 文档,使用的文档格式就是国际规范的 OpenXml 格式。这个格式有很多版本,详细请看百度。 因为演示文稿使用的是 OpenXml 在 .NET 开发可以非常简单将 PowerPointer 文档进行解析,大概只需要两句话 解析 PPT 文件不等于显示 PPT 文件,只是可以拿到 PPT 里面的数据 第一步是通过 NuGet 安装 Openxml 库,这个库支持跨平台,因为只是解析数据 第二步就是传入 PPT 文件解析 using (var presentationDocument = DocumentFormat.OpenXml.Packaging.PresentationDocument.Open("测试.pptx", false)) 这样就完成了 PPT 文件的解析,在调试添加断点 in slidePart.Slide .Descendants<DocumentFormat.OpenXml.Drawing.Paragraph
在 OpenXML 格式里面,其实不存在文本这个元素,所有都是形状。但是在 PPT 界面看到的文本框是什么呢?其实他是特别的形状。 而几乎所有的形状都可以输入文本,因此区分形状和文本的意义不会特别大,只是在做解析的时候才会碰到 在 OpenXML 的 PML 也就是 PPT 使用的格式里面,在 dotnet OpenXML 解析 PPT 其实文本框是特别的形状 在 PPT 里面拖入文本框,然后使用 OpenXML 解压缩文档为文件夹工具 解压缩,此时可以看到在页面里的元素大概内容如下 <p:sp> <p:nvSpPr> Value is true; 在 OpenXML SDK 的帮助下,可以解析很多 PPT 文档的缩写,可以提升可读性。 如 nvSpPr 其实就是 Non(n) Visual(v) Shape(Sp) Properties(pr) 的意思 更多请看 Office 使用 OpenXML SDK 解析文档博客目录 ----
本文告诉大家在 OpenXML 里面的 PPT 页面 Slide 的元素文档格式 是否小伙伴还记得如何使用 OpenXML SDK 获取一份 PPTX 文件的某一个页面? 如果不记得,请看 C# dotnet 使用 OpenXml 解析 PPT 文件 如下是一个简单的 PPTX 的 Slide 页面 ? 大概的主结构如下 ? 虽然 ShapeTree 命名是形状,但实际上所有元素都可以当成形状使用 例如在 ShapeTree 里面放一个文本,文本本身就是 DocumentFormat.OpenXml.Presentation.Shape shape 添加断点就可以看到断点进入 在 VS 的帮助下,其实咱可以不理会PPT文档本身,直接使用 OpenXML 解析完成的值,这样做的优势在于不需要频繁去找文档。 而表格是 Excel 的简化版 基本上完成一个元素的完全解析,基本上也就完成 Office 系列软件某个元素的解析 本文说的解析其实是不对的,因为使用 OpenXML SDK 库就是瞬间完成了内存模型解析
在 OpenXML 的 PPT 元素,形状的翻转与旋转是有逻辑关系,本文来和大家聊聊形状的翻转和形状的旋转的关系 本文来和小伙伴聊聊最复杂的 ConnectionShape 形状的方向,这个 ConnectionShape flipV="1"> <a:off x="952500" y="952500" /> <a:ext cx="952500" cy="952500" /> </a:xfrm> 在 OpenXML 在翻转之后的箭头是 45 度,而加上旋转是在翻转之后加上的,此时加上 45 度也是 90 度 所以可以看到上面代码的箭头是 90 度的 关于元素的宽度高度等请看 C# dotnet 使用 OpenXml dotnetCampus.OfficeDocumentZipper 打开工具可以在命令行输入下面代码 OfficeDocumentZipper 这个工具在 GitHub 完全开源,请看 dotnet OpenXML 解压缩文档为文件夹工具 更多请看 Office 使用 OpenXML SDK 解析文档博客目录