本文來和大家聊聊在 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) 實現文本對齊