using Common.system; using System; using System.Collections.Generic; using System.Data; using System.Threading; using System.Windows; using System.Windows.Input; using System.Windows.Media.Imaging; using System.Windows.Threading; namespace XHWK.WKTool { /// /// 打印 /// public partial class PrintWindow : Window { /// /// 下拉框数据源 /// public DataTable data = new DataTable(); private DataTable dtComponentsUniqueNo; private System.Timers.Timer times; public PrintWindow() { InitializeComponent(); double proportion = 1036.0 / 1290.0; double Widths = (PrimaryScreen.ScaleWorkingAreaSize.Height) / proportion - (BorderThickness.Left + BorderThickness.Right); double Heights = PrimaryScreen.ScaleWorkingAreaSize.Height - (BorderThickness.Top + BorderThickness.Bottom); Width = Widths / 1.42; Height = Heights / 1.71; GridContent.Width = Width+5; GridContent.Height = Height; this.ResizeMode = ResizeMode.NoResize; string defa = string.Empty; List defaList = LatticeFileHelper.GetPrinterList(out defa); if (defaList.Count > 0) { data.Columns.Add("Value"); data.Columns.Add("Key"); for (int i = 0; i < defaList.Count; i++) { //创建一行 DataRow row = data.NewRow(); //将此行添加到table中 data.Rows.Add(row); data.Rows[i]["Value"] = defaList[i]; data.Rows[i]["Key"] = i.ToString(); } dtComponentsUniqueNo = data.DefaultView.ToTable(); cmbClass.ItemsSource = dtComponentsUniqueNo.DefaultView; cmbClass.SelectedIndex = 0; } } public void Initialize(string _imgPath) { if (!string.IsNullOrWhiteSpace(_imgPath)) { imgPri.Source = new BitmapImage(new Uri(_imgPath)); } else { imgPri.Source = null; } I = 0; tip_outer.Visibility = Visibility.Collapsed; } /// /// 打印 /// /// /// private void BtnPrint_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrWhiteSpace(cmbClass.Text)) { //MessageWindow.Show("打印机不能为空!"); MessageWindow.Show("打印机不能为空!"); return; } //APP.myloading.Show(); btnClose.IsEnabled = false; btnPrint.IsEnabled = false; //APP.BackgroundWorkerHelper.RunWorkerAsync(InvokeServering, InvokeServerCompate); Thread myThread = new Thread(StartPrint); List StrList = new List(); //string imgPath = //FileToolsCommon.CreateFile(imgPath); //string pdf = imgPath + "\\101.pdf"; //PDF位置 string SourcePath=FileToolsCommon.GetFileAbsolutePath("/temp/101.pdf"); StrList.Add(SourcePath); //打印数量 int PrinterNum = Convert.ToInt32(txbNumberOfCopies.Text); StrList.Add(PrinterNum.ToString()); //打印机名称 string PrinterName = cmbClass.Text; StrList.Add(PrinterName); num = 0; tip_outer.Visibility = Visibility.Visible; myThread.Start(StrList); times = new System.Timers.Timer(100); times.Elapsed += Times_ElapsedClick; times.Start(); } int num = 0; /// /// 计时器 /// /// /// private void Times_ElapsedClick(object sender, System.Timers.ElapsedEventArgs e) { Dispatcher.Invoke(() => { pgbProcess.Value = num; lbProcess.Content = string.Format("{0}/{1}", num, 100); if (num < 99) { num++; times.Interval += (num/2); } else { times.Stop(); } }); } /// /// 开始打印 /// void StartPrint(object obj) { List objStr = (List)obj; string SourcePath= objStr[0]; int PrinterNum=int.Parse(objStr[1]); string PrinterName= objStr[2]; //TPF文件位置 string TPFPath = FileToolsCommon.GetFileAbsolutePath("temp/"); FileToolsCommon.CreateDirectory(TPFPath); TPFPath += "101.TPF"; //生成点阵文件 LatticeFileHelper.GeneratingPDF(SourcePath, TPFPath, out int pr, out string msg, out string outPut/*, pyte*/); while(!FileToolsCommon.IsExistFile(TPFPath)) { Thread.Sleep(100); } while(string.IsNullOrWhiteSpace(pr.ToString())) { Thread.Sleep(100); } Thread.Sleep(1000); //打印 LatticeFileHelper.PrinterTPFFile(TPFPath, PrinterNum, PrinterName, out int printResult, out string standardError, out string standardOutput); if (printResult == 0) { Dispatcher.Invoke(() => { btnClose.IsEnabled = true; btnPrint.IsEnabled = true; num = 99; times.Stop(); pgbProcess.Value = 100; lbProcess.Content = string.Format("{0}/{1}", 100, 100); MessageWindow.Show("打印成功!"); tip_outer.Visibility = Visibility.Collapsed; }); } else { Dispatcher.Invoke(() => { btnClose.IsEnabled = true; btnPrint.IsEnabled = true; times.Stop(); tip_outer.Visibility = Visibility.Collapsed; MessageWindow.Show(standardError); }); } } /// /// 打印-开始 /// /// private object InvokeServering() { Dispatcher.Invoke(() => { I = 1; pgbProcess.Value = I * 100 / 100; lbProcess.Content = string.Format("{0}/{1}", I, 100); tip_outer.Visibility = Visibility.Visible; //I = 0; }); Thread.Sleep(2000); string imgPath = FileToolsCommon.GetFileAbsolutePath("temp"); FileToolsCommon.CreateFile(imgPath); string pdf = imgPath + "\\101.pdf"; string tpf = imgPath + "\\102.TPF"; string msg = string.Empty; string outPut = string.Empty; //if(rbnSquarePoint.IsChecked==false) //{ // pyte = 1; //} LatticeFileHelper.GeneratingPDF(pdf, tpf, out int pr, out msg, out outPut/*, pyte*/); if (pr == 0) { //outPut = outPut.Replace("[", "").Replace("]", "").Replace("\"", "").Trim(); //APP.OutPut = outPut.Split(','); //string []page= outPut.Split(','); //for(int i=0;i defaList = LatticeFileHelper.GetPrinterList(out defa); string standardError = string.Empty; string standardOutput = string.Empty; int frequency = 1; //Dispatcher.Invoke(() => //{ frequency = Convert.ToInt32(txbNumberOfCopies.Text); LatticeFileHelper.PrinterTPFFile(tpf, frequency, cmbClass.Text, out int printResult, out standardError, out standardOutput); if (printResult == 0)// 0为成功 { new Thread(new ThreadStart(new Action(() => { Dispatcher.Invoke(() => { I = 100; pgbProcess.Value = I * 100 / 100; lbProcess.Content = string.Format("{0}/{1}", I, 100); APP.myloading.Hide(); I = 0; }); Thread.Sleep(3000); Dispatcher.Invoke(() => { tip_outer.Visibility = Visibility.Collapsed; //tip_outer.Visibility = Visibility.Collapsed; MessageWindow.Show("打印成功"); }); }))).Start(); } else { Dispatcher.Invoke(() => { APP.myloading.Hide(); MessageWindow.Show(standardError); }); } //}); } else { APP.myloading.Hide(); MessageWindow.Show(msg); } return ""; } /// /// 打印-结束 /// /// public void InvokeServerCompate(object obj) { try { GC.Collect(); APP.myloading.Hide(); } catch (Exception) { } } private int I = 0; private void Times_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { Dispatcher.Invoke(() => { if (I <= 90) { try { pgbProcess.Value = I * 100 / 100; lbProcess.Content = string.Format("{0}/{1}", I, 100); I++; } catch (Exception ex) { LogHelper.WriteErrLog("【摄像】(Times_Elapsed)生成图片错误:" + ex.Message, ex); } } }); } /// /// 窗口移动 /// /// /// private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { DragMove(); } /// /// 关闭 /// /// /// private void BtnClose_Click(object sender, RoutedEventArgs e) { Hide(); } /// /// 减 /// /// /// private void BtnLess_Click(object sender, RoutedEventArgs e) { int num = Convert.ToInt32(txbNumberOfCopies.Text); if (num > 1) { num = num - 1; txbNumberOfCopies.Text = num.ToString(); } } /// /// 新增 /// /// /// private void BtnAdd_Click(object sender, RoutedEventArgs e) { int num = Convert.ToInt32(txbNumberOfCopies.Text); if (num > 0) { num = num + 1; txbNumberOfCopies.Text = num.ToString(); } } private void Window_MouseLeftButtonDown_1(object sender, MouseButtonEventArgs e) { } } }