dotnet OpenXML 聊聊文本段落对齐方式

  • A+
所属分类:.NET技术
摘要

本文来和大家聊聊在 OpenXML 里面,文本段落对齐方式。在 Word 和 PPT 的文本段落对齐规则是相同的,对齐的规则比较多,本文将一一告诉大家

本文来和大家聊聊在 OpenXML 里面,文本段落对齐方式。在 Word 和 PPT 的文本段落对齐规则是相同的,对齐的规则比较多,本文将一一告诉大家

文本的段落对齐,需要设置给段落属性上,在 OpenXML SDK 里,使用 TextAlignmentTypeValues 枚举设置,如以下代码

using A = DocumentFormat.OpenXml.Drawing;   A.ParagraphProperties paragraphProperties = new A.ParagraphProperties() { Alignment = A.TextAlignmentTypeValues.Left }; 

我通过 OpenXML SDK 工具 将一份简单的 PPT 进行代码生成,然后修改里面的属性,用来测试不同的枚举值的效果。此 OpenXML SDK 工具 我放在 CSDN 下载 ,如果你想要但是不想从 CSDN 下载,还请发邮件给我

在 ECMA 376 文档,可以从 20.1.10.58 章找到具体的定义

我新建一个空 WPF 项目,添加如下代码用来测试

        private void MainWindow_Loaded(object sender, RoutedEventArgs e)         {             foreach (var textAlignmentTypeValue in Enum.GetValues<textalignmenttypevalues>())             {                 var generatedClass = new GeneratedClass()                 {                     TextAlignment = textAlignmentTypeValue                 };                  var file = $"{textAlignmentTypeValue}.pptx";                 generatedClass.CreatePackage(file);                  Process.Start("explorer.exe", file);             }         } 

上面的 GeneratedClass 就是使用 OpenXML SDK 工具 生成的

测试效果如下:

Justified

两端对齐,在 OpenXML 文档里面写入的字符串是 just 的值。运行效果如下:

dotnet OpenXML 聊聊文本段落对齐方式

两端对齐相对来说比较复杂

JustifiedLow

两端对齐,和 Justified 的不同在于,这是为阿拉伯语特别做的,对应字符串是 justLow 的值。 运行效果如下:

dotnet OpenXML 聊聊文本段落对齐方式

在 ECMA 376 的定义如下

Aligns the text with an adjusted kashida length for Arabic text.

可以测试如下的阿拉伯语

كرام بتحويل الكتابة العربي الى كتابة مفهومة من قب 

分别使用 JustifiedLow 和 Justified 进行对齐,可以看到效果如下

dotnet OpenXML 聊聊文本段落对齐方式

最大的不同在于 JustifiedLow 对齐修改的是线条,但 Justified 是通过修改空格的宽度对齐

Left

左对齐,对应字符串是 l 的值。运行效果如下:

dotnet OpenXML 聊聊文本段落对齐方式

Center

居中对齐,对应字符串是 ctr 的值。运行效果如下:

dotnet OpenXML 聊聊文本段落对齐方式

Right

右对齐,对应字符串是 r 的值。运行效果如下:

dotnet OpenXML 聊聊文本段落对齐方式

Distributed

分散对齐,对应字符串是 dist 的值。运行效果如下:

dotnet OpenXML 聊聊文本段落对齐方式

和两端对齐的不同,请参阅本文的参考文档

ThaiDistributed

泰语分散对齐,对应字符串是 thaiDist 的值。运行效果如下:

Distributes Thai text specially, because each character is treated as a word.

dotnet OpenXML 聊聊文本段落对齐方式

代码

本文所有代码放在githubgitee 欢迎访问

可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码

git init git remote add origin https://gitee.com/lindexi/lindexi_gd.git git pull origin cd98a7a6b29e9297864aad9d7326a635b6b68e5b 

以上使用的是 gitee 的源,如果 gitee 不能访问,请替换为 github 的源

git remote remove origin git remote add origin https://github.com/lindexi/lindexi_gd.git 

获取代码之后,进入 Pptx 文件夹

在 WPF 里面,可以参考 TextBlock.TextAlignment Property (System.Windows.Controls) 实现文本对齐

参考

更多请看 Office 使用 OpenXML SDK 解析文档博客目录