asponse.word 操控word打印内容及打印内容格式错乱处理

来源:互联网 发布:学编程用不用面面俱到 编辑:程序博客网 时间:2024/05/18 06:30

首先我们准备一个空的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程序写入字符时却不会自动加上格式,所以会有如上困惑。



原创粉丝点击