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)
{
}
}
}