1. 程式人生 > >asponse.word 操控word列印內容及列印內容格式錯亂處理

asponse.word 操控word列印內容及列印內容格式錯亂處理

首先我們準備一個空的word文件temp.doc存放列印內容,在文件正文空白處設定書籤PrintTxt:


1

引用using Aspose.Words;
                  //載入word模板
                  var TempDocPath="D://temp.doc"
                  var doc = new Document(TempDocPath);
                  //建立游標
                  var builder = new DocumentBuilder(doc);
                  //移動到書籤
                  builder.MoveToBookmark("PrintTxt");
                  var txt="列印內容";
                  //在書籤位置填入列印內容
                  builder.Writeln(txt);
                  var editSavePath = "D://save.doc";
                  doc.Save(editSavePath);
                  doc = new Document(editSavePath );
                  //列印,Print(printerName)裡printerName可不填,但有時會找不到該印表機,
                  //可在電腦印表機屬性裡找到自己電腦連線的預設印表機名稱
                  doc.Print(printerName);


2到此處基本的列印功能已實現,但當我們需列印的內容有些特殊字元,線條等可能會出現一些格式錯亂,字元顯示不符等,
如當txt=@"
粗線:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
細線:
—————————————————————————————————————————————"


通過asponse.word寫入word檔案後的列印結果:

會發現上圖的組成線條的符號不是我們要的效果。
解決方法是列印內容寫入書籤位置前設定列印文件的字型、段落等格式即可:
                    builder.MoveToBookmark("PrintTxt");
                    //字型屬性
                    Font font = builder.Font;
                    font.Bold = false;
                    font.Color = System.Drawing.Color.Black;
                    font.Italic = false;//斜體
                    font.Name = "宋體";
                    font.Size = 9;//五號:10.5磅 小五:9
                    font.Spacing = 0;//間隔
                    font.Underline = Underline.None;
                    //段落屬性
                    ParagraphFormat paragraphFormat = builder.ParagraphFormat;
                    //paragraphFormat.Alignment = ParagraphAlignment.Center;
                    //paragraphFormat.LeftIndent = 50;
                    //paragraphFormat.RightIndent = 50;
                    //paragraphFormat.SpaceAfter = 25;
                    //段落屬性:“最小值”、“0磅”
                    paragraphFormat.LineSpacingRule = LineSpacingRule.AtLeast;
                    paragraphFormat.LineSpacing = 0;
                    //設定紙張佈局
                    builder.PageSetup.PaperSize = PaperSize.A4;
                    //
                    builder.Writeln(txt);
設定格式後的列印結果:

就像平時在使用office word 軟體編輯文件一樣設定文件格式:

其實word裡的內容我們可以看成是一串帶格式的字符集,而我們在1中直接寫入的一串字元而遺漏了其格式。
在我們使用word軟體編輯文件時,輸入一串字元的時候,word軟體其實已經給這串文字加上了預設的格式,但是
我們通過asponse.word程式寫入字元時卻不會自動加上格式,所以會有如上困惑。