asponse.word 操控word列印內容及列印內容格式錯亂處理
阿新 • • 發佈:2019-02-18
首先我們準備一個空的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程式寫入字元時卻不會自動加上格式,所以會有如上困惑。