zoukankan      html  css  js  c++  java
  • silverlight 调用默认打印机

    打印辅助类。

    首先添加

    using System.Windows.Printing;

    命名空间

     1 public class SilverPrint
     2     {
     3         //设置每一项之间的间距
     4         int listPrintIndex = 0;
     5         private List<PrintStr> listStr = null;
     6         public void Print(List<PrintStr> strs)
     7         {
     8             listStr = strs;
     9             PrintDocument printDoc = new PrintDocument();
    10             printDoc.PrintPage += OnPrintPage;
    11             PrinterFallbackSettings settings = new PrinterFallbackSettings();
    12             settings.ForceVector = true;
    13             printDoc.Print("dd", settings, true);//dd是文档的名字
    14         }
    15         public void OnPrintPage(object sender, PrintPageEventArgs e)
    16         {
    17             Canvas printSurface = new Canvas();
    18             //得到最顶端位置
    19             double topPosition = e.PageMargins.Top;
    20             //遍历当前的ListBox.Items
    21             while (listPrintIndex < listStr.Count)
    22             {
    23                 //实例化TextBlock用来存放每一行的值
    24                 TextBlock txt = new TextBlock();
    25                 txt.FontSize = listStr[listPrintIndex].FontSize;
    26                 txt.Text = listStr[listPrintIndex].Content;
    27                 double measuredHeight = txt.ActualHeight;
    28                 //如果打印的当前行高度不合适的话,则进行分页
    29                 if (measuredHeight > (e.PrintableArea.Height - topPosition))
    30                 {
    31                     e.HasMorePages = true;
    32                     topPosition = e.PageMargins.Top;
    33                     break;
    34                 }
    35                 //设置TextBlock在Canvas中的位置
    36                 txt.SetValue(Canvas.TopProperty, topPosition);
    37                 txt.SetValue(Canvas.LeftProperty, e.PageMargins.Left);
    38                 //将TextBlock添加到打印的元素中去
    39                 printSurface.Children.Add(txt);
    40                 listPrintIndex++;
    41                 //追加高度
    42                 topPosition = topPosition + measuredHeight;
    43             }
    44             e.PageVisual = printSurface;
    45         }
    46     }
    47     //打印内容类
    48     public class PrintStr
    49     {
    50        public string Content { set; get; }
    51        public int FontSize { set; get; }
    52        public PrintStr(string str,int size=10)
    53        {
    54            this.Content = str;
    55            this.FontSize = size;
    56        }
    57     }

    打印直接调用

    new SilverPrint().Print(printStrs);

    如果是silverlight5.0之前会弹出打印预览。。。如果是silverlight5.0 允许浏览器外允许 增加权限。就可以不用弹出打印预览,直接打印了

    作者:Bonker
    出处:http://www.cnblogs.com/Bonker
    QQ:519841366
           
    本页版权归作者和博客园所有,欢迎转载,但未经作者同意必须保留此段声明, 且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利
  • 相关阅读:
    [单调栈] Jzoj P4260 最大子矩阵
    [前缀和] Jzoj P4259 矩形
    [欧拉回路][状压dp] Jzoj P3290 吃货JYY
    [组合数][枚举] Jzoj P3332 棋盘游戏
    [欧拉函数][dp][快速幂] Jzoj P1161 机器人M号
    [exgcd] Jzoj P1158 荒岛野人
    [带权并查集] Jzoj P1503 体育场
    [dfs][树的直径] Jzoj P1737 删边
    [差分][倍增lca][tarjan] Jzoj P3325 压力
    [dfs] Jzoj P1497 景点中心
  • 原文地址:https://www.cnblogs.com/Bonker/p/2756762.html
Copyright © 2011-2022 走看看