本文来和大家聊聊在 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
的值。运行效果如下:
两端对齐相对来说比较复杂
JustifiedLow
两端对齐,和 Justified 的不同在于,这是为阿拉伯语特别做的,对应字符串是 justLow
的值。 运行效果如下:
在 ECMA 376 的定义如下
Aligns the text with an adjusted kashida length for Arabic text.
可以测试如下的阿拉伯语
كرام بتحويل الكتابة العربي الى كتابة مفهومة من قب
分别使用 JustifiedLow 和 Justified 进行对齐,可以看到效果如下
最大的不同在于 JustifiedLow 对齐修改的是线条,但 Justified 是通过修改空格的宽度对齐
Left
左对齐,对应字符串是 l
的值。运行效果如下:
Center
居中对齐,对应字符串是 ctr
的值。运行效果如下:
Right
右对齐,对应字符串是 r
的值。运行效果如下:
Distributed
分散对齐,对应字符串是 dist
的值。运行效果如下:
和两端对齐的不同,请参阅本文的参考文档
ThaiDistributed
泰语分散对齐,对应字符串是 thaiDist
的值。运行效果如下:
Distributes Thai text specially, because each character is treated as a word.
代码
可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 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) 实现文本对齐