1. 程式人生 > 其它 >dotnet OpenXML 聊聊文字段落對齊方式

dotnet OpenXML 聊聊文字段落對齊方式

本文來和大家聊聊在 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 的值。執行效果如下:

兩端對齊相對來說比較複雜

JustifiedLow

兩端對齊,和 Justified 的不同在於,這是為阿拉伯語特別做的,對應字串是 justLow 的值。 執行效果如下:

在 ECMA 376 的定義如下

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

可以測試如下的阿拉伯語

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

分別使用 JustifiedLow 和 Justified 進行對齊,可以看到效果如下

最大的不同在於 JustifiedLow 對齊修改的是線條,但 Justified 是通過修改空格的寬度對齊

Left

左對齊,對應字串是 l 的值。執行效果如下:

Center

居中對齊,對應字串是 ctr 的值。執行效果如下:

右對齊,對應字串是 r 的值。執行效果如下:

Distributed

分散對齊,對應字串是 dist 的值。執行效果如下:

和兩端對齊的不同,請參閱本文的參考文件

ThaiDistributed

泰語分散對齊,對應字串是 thaiDist 的值。執行效果如下:

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

程式碼

本文所有程式碼放在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 解析文件部落格目錄

部落格園部落格只做備份,部落格釋出就不再更新,如果想看最新部落格,請到 https://blog.lindexi.com/


本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名[林德熙](http://blog.csdn.net/lindexi_gd)(包含連結:http://blog.csdn.net/lindexi_gd ),不得用於商業目的,基於本文修改後的作品務必以相同的許可釋出。如有任何疑問,請與我[聯絡](mailto:[email protected])。