274 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			274 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | //using System; | |||
|  | //using System.Collections.Generic; | |||
|  | //using System.Linq; | |||
|  | //using System.Text; | |||
|  | using System; | |||
|  | using System.Collections.Generic; | |||
|  | using System.ComponentModel; | |||
|  | using System.Data; | |||
|  | using System.Drawing; | |||
|  | using System.Linq; | |||
|  | using System.Text; | |||
|  | using System.Windows.Forms; | |||
|  | using Microsoft.Reporting.WinForms; | |||
|  | using System.IO; | |||
|  | using System.Drawing.Printing; | |||
|  | using System.Drawing.Imaging; | |||
|  | 
 | |||
|  | namespace DeiNiu.wms.Logical | |||
|  | { | |||
|  |     public class printUtils | |||
|  |     { | |||
|  | 
 | |||
|  |        public static string printerName = ""; | |||
|  | 
 | |||
|  |         private IList<Stream> m_streams; | |||
|  |         private int m_currentPageIndex; | |||
|  |         DataTable dt = new DataTable(); | |||
|  |         private string _errormessage = ""; | |||
|  |         private string m_ReportName = string.Empty; | |||
|  | 
 | |||
|  | 
 | |||
|  |         public void print_reportImage(DataTable dt, string report_paths, string[] Parameter, string print_type) | |||
|  |         { | |||
|  |             LocalReport report = new LocalReport(); | |||
|  |             report.ReportEmbeddedResource = report_paths; | |||
|  |             report.EnableExternalImages = true; | |||
|  |             //report.ReportEmbeddedResource = "Bll.Report1.rdlc"; | |||
|  |             if (Parameter != null) | |||
|  |             { | |||
|  |                 ReportParameter[] Paramet = new ReportParameter[Parameter.Length / 2]; | |||
|  |                 for (int i = 0; i < Parameter.Length / 2; i++) | |||
|  |                 { | |||
|  |                     Paramet[i] = new ReportParameter(Parameter[i * 2], Parameter[i * 2 + 1]); | |||
|  |                 } | |||
|  |                 if (Paramet.Length == 1) | |||
|  |                 { | |||
|  |                     report.SetParameters(new ReportParameter[] { Paramet[0] }); | |||
|  |                 } | |||
|  |                 else if (Paramet.Length == 2) | |||
|  |                 { | |||
|  |                     report.SetParameters(new ReportParameter[] { Paramet[0], Paramet[1] }); | |||
|  |                 } | |||
|  |                 else if (Paramet.Length == 3) | |||
|  |                 { | |||
|  |                     report.SetParameters(new ReportParameter[] { Paramet[0], Paramet[1], Paramet[2] }); | |||
|  |                 } | |||
|  |                 else if (Paramet.Length == 4) | |||
|  |                 { | |||
|  |                     report.SetParameters(new ReportParameter[] { Paramet[0], Paramet[1], Paramet[2], Paramet[3] }); | |||
|  |                 } | |||
|  |                 else if (Paramet.Length == 5) | |||
|  |                 { | |||
|  |                     report.SetParameters(new ReportParameter[] { Paramet[0], Paramet[1], Paramet[2], Paramet[3], Paramet[4] }); | |||
|  |                 } | |||
|  |                 else if (Paramet.Length == 6) | |||
|  |                 { | |||
|  |                     report.SetParameters(new ReportParameter[] { Paramet[0], Paramet[1], Paramet[2], Paramet[3], Paramet[4], Paramet[5] }); | |||
|  |                 } | |||
|  |             } | |||
|  |             report.DataSources.Clear(); | |||
|  |             report.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("DataSet1", dt)); | |||
|  |             PPrint(report, print_type); | |||
|  |         } | |||
|  | 
 | |||
|  | 
 | |||
|  |         public bool PPrint(LocalReport report,string print_type) | |||
|  |         { | |||
|  |             try | |||
|  |             { | |||
|  |                 Export(report, print_type); | |||
|  |                 m_currentPageIndex = 0; | |||
|  |                 if (!NBPrint()) | |||
|  |                 { | |||
|  |                     return false; | |||
|  |                 } | |||
|  |                 if (m_streams != null) | |||
|  |                 { | |||
|  |                     foreach (Stream stream in m_streams) | |||
|  |                     { | |||
|  |                         stream.Close(); | |||
|  |                         stream.Dispose(); | |||
|  |                        | |||
|  |                     } | |||
|  |                     m_streams = null; | |||
|  |                 } | |||
|  |                 return true; | |||
|  |             } | |||
|  |             catch (Exception ex) | |||
|  |             { | |||
|  |                 _errormessage = "在打印过程中出现异常!"; | |||
|  |                 return false; | |||
|  |             } | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         public bool NBPrint() | |||
|  |         { | |||
|  |             if (m_streams == null || m_streams.Count == 0) | |||
|  |             { | |||
|  |                 _errormessage = "在打印过程中出现异常!"; | |||
|  |                 return false; | |||
|  |             } | |||
|  |             PrintDocument printDoc = new PrintDocument(); | |||
|  |             //printDoc.PrinterSettings. | |||
|  |             printDoc.DocumentName = "世纪清鸿测试报表"; | |||
|  |             // | |||
|  |             //const string printerName = @"\\127.0.0.1\ZDesigner GT800 (EPL) (副本 1)"; | |||
|  |         //    const string printerName = @"\\127.0.0.1\ZDesigner GT800 (EPL) (副本 2)"; | |||
|  |             //const string printerName = @"\\127.0.0.1\ZDesigner GT800 (EPL) (副本 3)"; | |||
|  | 
 | |||
|  | 
 | |||
|  |             const string printerName = "ZDesigner GT800 (EPL)"; //@"\\127.0.0.1\Microsoft XPS Document Writer"; | |||
|  |             // \\127.0.0.1\ZDesigner GT800 (EPL) (副本 1) | |||
|  |            // MainForm.code_print_name = "\\\\127.0.0.1\\ZDesigner GT800 (EPL) (副本 6)"; | |||
|  |             //if (Bll.print_code.printerName != "") | |||
|  |             //{ | |||
|  |             //    printDoc.PrinterSettings.PrinterName = Bll.print_code.printerName;//printerName;//MainForm.code_print_name; | |||
|  |             //} | |||
|  |             printDoc.PrinterSettings.PrinterName = printerName; | |||
|  |             //printDoc.PrinterSettings.PrinterName = @"\\192.168.1.152\Microsoft XPS Document Writer"; | |||
|  |             //printDoc.pri | |||
|  |             if (!printDoc.PrinterSettings.IsValid) | |||
|  |             { | |||
|  |                 _errormessage = "请添加默认打印机!"; | |||
|  |                 return false; | |||
|  |             } | |||
|  | 
 | |||
|  |             printDoc.PrintPage += new PrintPageEventHandler(PrintPage); | |||
|  |             printDoc.Print(); | |||
|  |             return true; | |||
|  |         } | |||
|  |         public void PrintPage(object sender, PrintPageEventArgs ev) | |||
|  |         { | |||
|  |             Metafile pageImage = new Metafile(m_streams[m_currentPageIndex]); | |||
|  |             //ev.PageSettings.Landscape = false; | |||
|  |             ev.Graphics.DrawImage(pageImage, ev.PageBounds); | |||
|  |             m_currentPageIndex++; | |||
|  |             ev.HasMorePages = (m_currentPageIndex < m_streams.Count); | |||
|  |         } | |||
|  |         public void Export(LocalReport report,string print_type) | |||
|  |         { | |||
|  |             string deviceInfo = ""; | |||
|  |             if (print_type == "") | |||
|  |             { | |||
|  |                 deviceInfo = | |||
|  |                       "<DeviceInfo>" + | |||
|  |                     "  <OutputFormat>EMF</OutputFormat>" + | |||
|  |                     "  <PageWidth>21.0cm</PageWidth>" + | |||
|  |                     "  <PageHeight>29.7.0cm</PageHeight>" + | |||
|  |                     "  <MarginTop>0.5cm</MarginTop>" + | |||
|  |                     "  <MarginLeft>0.5cm</MarginLeft>" + | |||
|  |                     "  <MarginRight>0.5cm</MarginRight>" + | |||
|  |                     "  <MarginBottom>0.5cm</MarginBottom>" + | |||
|  |                     "</DeviceInfo>"; | |||
|  |             } | |||
|  |             else if (print_type == "A4") | |||
|  |             { | |||
|  |                 deviceInfo = | |||
|  |                       "<DeviceInfo>" + | |||
|  |                     "  <OutputFormat>EMF</OutputFormat>" + | |||
|  |                     "  <PageWidth>21.0cm</PageWidth>" + | |||
|  |                     "  <PageHeight>29.7.0cm</PageHeight>" + | |||
|  |                     "  <MarginTop>0.5cm</MarginTop>" + | |||
|  |                     "  <MarginLeft>0.5cm</MarginLeft>" + | |||
|  |                     "  <MarginRight>0.5cm</MarginRight>" + | |||
|  |                     "  <MarginBottom>0.5cm</MarginBottom>" + | |||
|  |                     "</DeviceInfo>"; | |||
|  |             } | |||
|  |             else if (print_type == "code") | |||
|  |             { | |||
|  |                 deviceInfo = | |||
|  |                                      "<DeviceInfo>" + | |||
|  |                                    "  <OutputFormat>EMF</OutputFormat>" + | |||
|  |                                    "  <PageWidth>10.0cm</PageWidth>" + | |||
|  |                                    "  <PageHeight>5.0cm</PageHeight>" + | |||
|  |                                    "  <MarginTop>0.0cm</MarginTop>" + | |||
|  |                                    "  <MarginLeft>0.0cm</MarginLeft>" + | |||
|  |                                    "  <MarginRight>0.0cm</MarginRight>" + | |||
|  |                                    "  <MarginBottom>0.0cm</MarginBottom>" + | |||
|  |                                    "</DeviceInfo>"; | |||
|  |             } | |||
|  | 
 | |||
|  |             Warning[] warnings; | |||
|  |             m_streams = new List<Stream>(); | |||
|  |             report.Render("Image", deviceInfo, CreateStream, out warnings); | |||
|  |             //report.Render("EXCEL", deviceInfo, CreateStream, out warnings); | |||
|  |             foreach (Stream stream in m_streams) | |||
|  |             { | |||
|  |                 stream.Position = 0; | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |   | |||
|  | 
 | |||
|  |         private Stream CreateStream(string name, string fileNameExtension, | |||
|  |       Encoding encoding, string mimeType, bool willSeek) | |||
|  |         { | |||
|  |             Stream stream = new FileStream(name + "." + fileNameExtension, | |||
|  |          FileMode.Create); | |||
|  |             try | |||
|  |             { | |||
|  |                | |||
|  |                 m_streams.Add(stream); | |||
|  |                | |||
|  |             } | |||
|  |             catch (Exception) | |||
|  |             { | |||
|  |                  | |||
|  |                | |||
|  |             } | |||
|  |             return stream; | |||
|  |         } | |||
|  |         public void print_report(DataTable dt, string report_paths, string[] Parameter,string print_type) | |||
|  |         { | |||
|  |             LocalReport report = new LocalReport(); | |||
|  |             report.ReportEmbeddedResource = report_paths; | |||
|  |             if (Parameter != null) | |||
|  |             { | |||
|  |                 ReportParameter[] Paramet = new ReportParameter[Parameter.Length / 2]; | |||
|  |                 for (int i = 0; i < Parameter.Length / 2; i++) | |||
|  |                 { | |||
|  |                     Paramet[i] = new ReportParameter(Parameter[i * 2], Parameter[i * 2 + 1]); | |||
|  |                 } | |||
|  |                 if (Paramet.Length == 1) | |||
|  |                     report.SetParameters(new ReportParameter[] { Paramet[0] }); | |||
|  |                 else if (Paramet.Length == 2) | |||
|  |                     report.SetParameters(new ReportParameter[] { Paramet[0], Paramet[1] }); | |||
|  |                 else if (Paramet.Length == 3) | |||
|  |                     report.SetParameters(new ReportParameter[] { Paramet[0], Paramet[1], Paramet[2] }); | |||
|  |                 else if (Paramet.Length == 4) | |||
|  |                     report.SetParameters(new ReportParameter[] { Paramet[0], Paramet[1], Paramet[2], Paramet[3] }); | |||
|  |                 else if (Paramet.Length == 5) | |||
|  |                     report.SetParameters(new ReportParameter[] { Paramet[0], Paramet[1], Paramet[2], Paramet[3], Paramet[4] }); | |||
|  |                 else if (Paramet.Length == 6) | |||
|  |                     report.SetParameters(new ReportParameter[] { Paramet[0], Paramet[1], Paramet[2], Paramet[3], Paramet[4], Paramet[5] }); | |||
|  |                 else if (Paramet.Length == 7) | |||
|  |                     report.SetParameters(new ReportParameter[] { Paramet[0], Paramet[1], Paramet[2], Paramet[3], Paramet[4], Paramet[5], Paramet[6] }); | |||
|  |                 else if (Paramet.Length == 33) | |||
|  |                     report.SetParameters(new ReportParameter[] { Paramet[0],Paramet[1],Paramet[2],Paramet[3],Paramet[4],Paramet[5],  | |||
|  |                                                                             Paramet[6],Paramet[7],Paramet[8],Paramet[9],Paramet[10], | |||
|  |                                                                             Paramet[11],Paramet[12],Paramet[13],Paramet[14],Paramet[15], | |||
|  |                                                                             Paramet[16],Paramet[17],Paramet[18],Paramet[19],Paramet[20], | |||
|  |                                                                             Paramet[21],Paramet[22],Paramet[23],Paramet[24],Paramet[25], | |||
|  |                                                                             Paramet[26],Paramet[27],Paramet[28],Paramet[29],Paramet[30],Paramet[31],//Paramet[32], | |||
|  |                                                                             Paramet[32]}); | |||
|  |                 //else if (Paramet.Length == 13) | |||
|  |                 //    report.SetParameters(new ReportParameter[] { Paramet[0],Paramet[1],Paramet[2],Paramet[3],Paramet[4],Paramet[5],  | |||
|  |                 //                                                            Paramet[6],Paramet[7],Paramet[8],Paramet[9],Paramet[10], | |||
|  |                 //                                                            Paramet[11],Paramet[12]}); | |||
|  | 
 | |||
|  |                 else if (Paramet.Length == 10) | |||
|  |                     report.SetParameters(new ReportParameter[] { Paramet[0],Paramet[1],Paramet[2],Paramet[3],Paramet[4],Paramet[5],  | |||
|  |                                                                             Paramet[6],Paramet[7],Paramet[8],Paramet[9]}); | |||
|  |                 else if (Paramet.Length == 11) | |||
|  |                     report.SetParameters(new ReportParameter[] { Paramet[0],Paramet[1],Paramet[2],Paramet[3],Paramet[4],Paramet[5],  | |||
|  |                                                                             Paramet[6],Paramet[7],Paramet[8],Paramet[9],Paramet[10]}); | |||
|  |             } | |||
|  |             report.DataSources.Clear(); | |||
|  |             report.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("DataSet1", dt)); | |||
|  |             PPrint(report,print_type); | |||
|  |         } | |||
|  |     } | |||
|  | } |