解决方案 »

  1.   

            private string stringToPrint;   //打印内容
            private System.Drawing.Printing.PrintDocument ticketPrintDocument = new System.Drawing.Printing.PrintDocument();    //打印文档实例        /// <summary>
            /// 初始化打印机
            /// </summary>
            private void InitPrint()
            {
                try
                {
                    PrintDocument printdocument = new PrintDocument();
                    string stringdefault = printdocument.PrinterSettings.PrinterName;                CbPrint.Items.Clear();//ComboBox控件
                    CbPrint.Text = stringdefault;
                    foreach (string str in PrinterSettings.InstalledPrinters)
                    {
                        CbPrint.Items.Add(str);//如果只需要公司的打印机,这里只ADD一次就好
                    }
                    ticketPrintDocument.PrintPage += new PrintPageEventHandler(PrinterPage);
                }
                catch (System.Exception ex)
                {
                    System.Windows.MessageBox.Show(ex.ToString());
                }
            }

            /// <summary>
            /// 打印页面配置
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void PrinterPage(object sender, PrintPageEventArgs e)
            {
                int charactersOnPage = 0;
                int linesPerPage = 0;            e.Graphics.MeasureString(stringToPrint, System.Drawing.SystemFonts.DefaultFont, e.MarginBounds.Size, StringFormat.GenericTypographic, out charactersOnPage, out linesPerPage);
                e.Graphics.DrawString(stringToPrint, System.Drawing.SystemFonts.DefaultFont, System.Drawing.Brushes.Black, e.MarginBounds, StringFormat.GenericTypographic);   //打印东西
            }

            /// <summary>
            /// 打印
            /// </summary>
            /// <param name="name"></param>
            /// <param name="path"></param>
            private void Print(string name, string path)
            {
                try
                {
                    ticketPrintDocument.DocumentName = name;
                    if (CbPrint.Text != "")
                    {
                        ticketPrintDocument.PrinterSettings.PrinterName = CbPrint.Text;
                    }
                    if (printpath == null)
                    {
                        return;
                    }                FileStream fs = new FileStream(@path, FileMode.Open);
                    StreamReader sr = new StreamReader(fs, Encoding.GetEncoding("gb2312"));
                    StandardPrintController spc = new StandardPrintController();                stringToPrint = sr.ReadToEnd();
                    ticketPrintDocument.PrintController = spc;
                    ticketPrintDocument.Print();                sr.Close();
                    fs.Close();
                }
                catch
                {
                    ;
                }
            }
      

  2.   

    web没有办法直接打印,间接的方法有:
    (1)在服务器端生成pdf或者word文档,下载让用户自己打开、打印。
    (2)制作一个对打印来说友好的网页,并且调用js用浏览器内置的打印网页方式打印。
    (3)使用ActiveX控件,在客户端本地调用打印机。