dotnet OpenXML 文本 EndParagraphRunProperties 的作用
其实我想要记录的仅仅只是 a:endParaRPr 对文本布局的作用
按照 ECMA 376 的说法,此属性的作用是指定用户在此段落后开始输入其他文本时要保留的属性。只有在此段落的样式与段落本身不同时,才应设置此属性
文本的属性会受到页面以及模版和所在段落的影响,而 a:endParaRPr
是一个放在 <a:p>
里面的标记,用来表示这一段的结束,在 OpenXML SDK 的表示是 EndParagraphRunProperties 类,这个类继承 TextCharacterPropertiesType 类
而 TextCharacterPropertiesType 类就包含了 TextRun 的字符属性,如字体字号等信息,详细请看 dotnet OpenXML 简单聊聊 PPT 文本解析
因此可以在 <a:endParaRPr>
添加一些文本属性
<a:endParaRPr lang="zh-CN" altLang="en-US" sz="2400" b="1" dirty="0">
<a:latin typeface="+mn-ea"/>
</a:endParaRPr>
添加了属性之后的作用就是让用户在这一段继续输入的时候,可以找到可以继承的属性。例如用户的整个文本框默认的字体是宋体,而期望一个空段落之后输入的内容是楷体,此时就可以应用上了 <a:endParaRPr>
设置 typeface 属性。此时输入的内容就会继承 <a:endParaRPr>
的属性
当然,在很多不规范的排版软件里面,可以使用 endParaRPr 表示段落结束的功能藏一些文本,如下面代码
<a:p>
<a:pPr fontAlgn="auto">
<a:lnSpc>
<a:spcPts val="3800"/>
</a:lnSpc>
</a:pPr>
<a:r>
<a:rPr lang="en-US" sz="2400" b="1" dirty="0" smtClean="0">
<a:latin typeface="+mn-ea"/>
</a:rPr>
<a:t>1</a:t>
</a:r>
<a:endParaRPr lang="zh-CN" altLang="en-US" sz="2400" b="1" dirty="0">
<a:latin typeface="+mn-ea"/>
</a:endParaRPr>
<a:r>
<a:rPr lang="en-US" altLang="zh-CN" sz="2400" b="1" dirty="0" smtClean="0">
<a:latin typeface="+mn-ea"/>
</a:rPr>
<a:t>2</a:t>
</a:r>
<a:r>
<a:rPr lang="en-US" altLang="zh-CN" sz="2400" b="1" dirty="0" smtClean="0">
<a:latin typeface="+mn-ea"/>
</a:rPr>
<a:t>3</a:t>
</a:r>
</a:p>
可以看到文本里面有三个 TextRun 分别是 1 和 2 和 3 的文本,但是在 1 后面添加了 endParaRPr 标记,那么此时的 PPT 如何显示?其实 只会显示 1 而不会显示后续内容
也就是读取了 a:endParaRPr
将会忽略后续的文本内容,表示这一段结束
在 UWP 使用 XAML 的换行,请看 win10 uwp 在 xaml 让 TextBlock 换行
这个属性和 Text Line Break 有些不同,原因是默认一段就是包含一个换行符,而 <a:br/>
就是让一段内可以包含多个换行
我写了很多 Office 解析相关的博客,请看 Office 使用 OpenXML SDK 解析文档博客目录
本文会经常更新,请阅读原文: https://blog.lindexi.com/post/dotnet-OpenXML-%E6%96%87%E6%9C%AC-EndParagraphRunProperties-%E7%9A%84%E4%BD%9C%E7%94%A8.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
- Web前端开发初级阶段需要学习的知识有哪些?
- 作为TensorFlow的底层语言,你会用C+构建深度神经网络吗?
- 企业应用中使用Silverlight 3
- oracle:db-link使用
- 5个炫酷的Python工具,你都用过么?
- 保护ASP.NET 应用免受 CSRF 攻击
- .NET:Entity Framework 笔记
- redis 学习笔记(1)-编译、启动、停止
- 致研究者:2018 AI研究趋势
- redis 学习笔记(3)-master/slave(主/从模式)
- 解决Chrome或其它WebKit浏览器input和textarea的黄色/蓝色边框问题
- eclipse/intellij Idea集成jetty
- nginx学习(1):编译、安装、启动
- Immutable(不可变)集合
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【redis6.0.6】redis源码慢慢学,慢慢看 -- 第五天:adlist
- redis学习(十一)
- 互联网软件常见开发方法
- 利用Vue实现简易tab切换效果
- 第3天:最近笔试编程题汇总
- 设计模式学习(四)-UML中的类图及类图之间的关系
- 数据结构与算法(一)——学习工具的推荐
- sparc v8架构的异常处理
- 设计模式(五)-工厂方法模式
- html 的div或其他元素监听 resize事件不生效的解决办法
- 基于docker部署skywalking实现全链路监控
- 数据结构与算法(二)——十大排序算法
- VUE项目使用.env文件配置全局环境变量
- 设计模式学习(六)-抽象工厂模式
- 彻底完美解决安卓苹果手机点击输入框网页页面自动放大缩小