/// <summary> /// 打印 /// </summary> private void Print() { if (m_streams == null || m_streams.Count == 0) { return; } PrintDocument printDoc = new PrintDocument(); if (m_showPrintDialog) { PrintDialog printDialog = new PrintDialog(); printDialog.Document = printDoc; printDialog.AllowPrintToFile = false; printDialog.AllowCurrentPage = false; printDialog.AllowSelection = false; printDialog.AllowSomePages = false; printDialog.PrinterSettings.Copies = 1; if (printDialog.ShowDialog() != DialogResult.OK) { if (MessageDialog.ShowEnquiryMessage("您是否确定取消当前打印?") == DialogResult.Yes) { return; } } printDialog.PrinterSettings.Copies = 1; } #region 页面设置 PageSetupDialog pageDialog = new PageSetupDialog(); pageDialog.Document = printDoc; pageDialog.PageSettings.PaperSize = new PaperSize("Custom", (int)(100 * m_pageWidth / 2.54 + 0.5), (int)(100 * m_pageHeight / 2.54 + 0.5)); #region 设置为横向打印 //if (m_pageWidth < m_pageHeight) //{ // pageDialog.PageSettings.Landscape = true; //} #endregion printDoc.DefaultPageSettings = pageDialog.PageSettings; #endregion // 指定打印机 //printDoc.PrinterSettings.PrinterName = printDocument1.PrinterSettings.PrinterName; if (!printDoc.PrinterSettings.IsValid) { string msg = String.Format("Can't find printer \"{0}\".", "默认打印机!"); MessageBox.Show(msg, "找不到默认打印机"); return; } #region 判断打印机是否虚拟打印机,不允许打印到P虚拟设备(如打印到PDF文件),否则可能出现多次打印等单据不可控现象 //string error = null; //if (VirtualPrint.IsVirtualPrint(printDoc.PrinterSettings.PrinterName, out error)) //{ // MessageDialog.ShowPromptMessage(error); // return; //} #endregion printDoc.PrintPage += new PrintPageEventHandler(PrintPage); printDoc.Print(); }