using BBWY.Client.Helpers; using BBWY.Client.Models; using BBWY.Controls; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Printing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Interop; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace BBWY.Client.Views.PackTask { /// /// PrintWindow.xaml 的交互逻辑 /// public partial class PrintWindow : BWindow { public PrintWindow() { InitializeComponent(); var printingNames = PrinterSettings.InstalledPrinters;//获取本机的打印机数据 int index = -1; int selectIndex = 0; foreach (string name in printingNames) { if (name== "Microsoft XPS Document Writer"||name== "Microsoft Print to PDF"||name== "Fax") { continue; } index++; if (name.Contains("Deli")) { selectIndex = index; } cbPrints.Items.Add(name); } if (cbPrints.Items.Count>selectIndex) { cbPrints.SelectedIndex = selectIndex; } } /// /// 加载预览打印数据 /// public void LoadData() { if (CertificateModel==null) { cer.Visibility = Visibility.Collapsed; } else { cer.Visibility = Visibility.Visible; bar.Visibility = Visibility.Collapsed; CertificateModel data = new CertificateModel { Brand = CertificateModel.Brand, BrandName = CertificateModel.BrandName, ExcuteStander = CertificateModel.ExcuteStander, FactoryNumber = CertificateModel.FactoryNumber, IsLogo =CertificateModel.IsLogo, LabelModel = CertificateModel.LabelModel, ProductAdress = CertificateModel.ProductAdress, Id = CertificateModel.Id, ProductDate = CertificateModel.ProductDate, ProductNo = CertificateModel.ProductNo, ProductShop = CertificateModel.ProductShop, Shader = CertificateModel.Shader, SkuId = CertificateModel.SkuId, Reseller = CertificateModel.Reseller }; StringBuilder sb = new StringBuilder(); if (data.ExcuteStander.Contains(","))//有逗号就拆分 { var excutes = data.ExcuteStander.Split(',', StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < excutes.Count(); i++) { if (i % 2 == 0 && i > 0)//间隔两个换行 { sb.Append("\r\n"); } sb.Append(excutes[i]).Append(" "); } sb.Remove(sb.Length - 3, 3); data.ExcuteStander = sb.ToString(); } this.DataContext = data; if (data.IsLogo == 0) { is3c.Visibility = Visibility.Collapsed; no3c.Visibility = Visibility.Visible; } else { is3c.Visibility = Visibility.Visible; no3c.Visibility = Visibility.Collapsed; } } if (BarCodeModel == null) { bar.Visibility = Visibility.Collapsed; } else { bar.Visibility = Visibility.Visible; cer.Visibility = Visibility.Collapsed; this.DataContext = BarCodeModel; if (BarCodeModel.LabelModel == BarcodeLabelModel.barsimplify) {//精简版 jingjian.Visibility = Visibility.Visible; biaozhun.Visibility = Visibility.Collapsed; } else { jingjian.Visibility = Visibility.Collapsed; biaozhun.Visibility = Visibility.Visible; } } } public CertificateModel CertificateModel { get; set; } public BarCodeModel BarCodeModel { get; set; } private void BButton_Click(object sender, RoutedEventArgs e) { Task.Factory.StartNew(() => { try { //string appPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); //string path = appPath + $"/Resources/LabelNames/{LabelName}.btw"; int printCount = Convert.ToInt32(tbCount.Text);//份数 string printName = cbPrints.Text;//选择的要打印的打印机名称 PrintDocument pd = new PrintDocument(); PrintDocument document = new PrintDocument(); document.PrinterSettings.PrinterName = printName; document.PrintPage += Document_PrintPage; document.PrinterSettings.Copies = (short)printCount;//打印份数 document.Print(); } catch (Exception ex) { App.Current.Dispatcher.Invoke(() => { new TipsWindow("打印失败").ShowDialog(); }); } }); } private void Document_PrintPage(object sender, PrintPageEventArgs args) { Font font = new Font("宋体", 6, System.Drawing.FontStyle.Regular); if (BarCodeModel != null) { MyPrintHelper.PrintBarcode(ref args, BarCodeModel, font); } if (CertificateModel !=null) { MyPrintHelper.PrintCertificate(ref args, CertificateModel, font); } } /// /// 打印条形码 /// //private void PrintBarCode(string labelPath,int printNums,string PrintName) //{ // BartenderHelper helper = new BartenderHelper(); // string msg = ""; // // File.AppendAllText("c:/1.txt", $"{PrintName}开始打印{printNums}份,{labelPath}"); // helper.BTPrint(labelPath, Datas, out msg, printNums, PrintName); // // File.AppendAllText("c:/1.txt", "结束打印"); // //File.AppendAllText("c:/1.txt", msg); // if (msg == "OK") // { // return; // } // App.Current.Dispatcher.Invoke(new Action(() => { // new TipsWindow(msg).ShowDialog();//打印失败提示 // })); //} } }