using System.Diagnostics; using System.Drawing; using System.Drawing.Printing; using ZXing; using ZXing.Common; namespace SSWMS.Print { public class Program { //private static void Print_2210324(string sPrinterName, string sContent) //{ // try // { // string[] asContent = sContent.Split(','); // if (asContent.Length != 18) // { // return; // } // const float fPageScale = 1.7f; // const float top = 7f; // const float left = 0f; // const float leftTitle = 3f; // const float leftContent = 16f; // const float lineHeight = 4f; // PrintDocument printDocument = new PrintDocument(); // printDocument.PrintController = new StandardPrintController(); // printDocument.PrinterSettings.PrinterName = sPrinterName; // //printDocument.DefaultPageSettings.PaperSize = new PaperSize("Custom", 100, 100); // printDocument.PrintPage += (sender, e) => // { // Font fontTitle = new Font("Arial", 6.5f * fPageScale, FontStyle.Regular); // Font font = new Font("Arial", 6 * fPageScale, FontStyle.Regular); // Brush b = new SolidBrush(Color.Black); // Graphics g = e.Graphics; // g.PageScale = fPageScale; // g.PageUnit = GraphicsUnit.Millimeter; // g.DrawRectangle(new Pen(Brushes.Black, 0.2f), left + 2f, top - 5f, 50f, 64f); // // 新二维码 // g.DrawString(asContent[0], fontTitle, b, new PointF(left + leftTitle, top - 2f)); // g.DrawString("产品名称:", font, b, new PointF(left + leftTitle, top + lineHeight)); // g.DrawString("数 量:", font, b, new PointF(left + leftTitle, top + lineHeight * 3)); // g.DrawString("入库编号:", font, b, new PointF(left + leftTitle, top + lineHeight * 4)); // g.DrawString("生产日期:", font, b, new PointF(left + leftTitle, top + lineHeight * 5)); // g.DrawString("批 号:", font, b, new PointF(left + leftTitle, top + lineHeight * 6)); // g.DrawString("登 记 号:", font, b, new PointF(left + leftTitle, top + lineHeight * 7)); // g.DrawString("产品标准号:", font, b, new PointF(left + leftTitle, top + lineHeight * 8)); // g.DrawString("地 址:", font, b, new PointF(left + leftTitle, top + lineHeight * 9)); // g.DrawString("电 话:", font, b, new PointF(left + leftTitle, top + lineHeight * 10)); // g.DrawString(asContent[2], font, b, new PointF(left + leftContent, top + lineHeight)); // g.DrawString(asContent[4], font, b, new PointF(left + leftContent, top + lineHeight * 3)); // g.DrawString(asContent[5], font, b, new PointF(left + leftContent, top + lineHeight * 4)); // g.DrawString(asContent[7], font, b, new PointF(left + leftContent, top + lineHeight * 7)); // g.DrawString(asContent[10], font, b, new PointF(left + leftContent, top + lineHeight * 8)); // g.DrawString(asContent[11], font, b, new PointF(left + leftContent, top + lineHeight * 9)); // g.DrawString(asContent[12], font, b, new PointF(left + leftContent, top + lineHeight * 10)); // // 新二维码 // g.DrawString("产品规格:", font, b, new PointF(left + leftTitle, top + lineHeight * 2)); // g.DrawString(asContent[3], font, b, new PointF(left + leftContent, top + lineHeight * 2)); // g.DrawImage(new BarcodeWriter // { // Options = new EncodingOptions { Width = 1000, Height = 1000, Margin = 0, PureBarcode = true }, // Format = BarcodeFormat.QR_CODE, // }.Write($"12345qwcewfwgverefegvwefqegv67890"), // new RectangleF(left + leftContent + 19f, top + lineHeight * 3 - 1f, 14f, 14f)); // e.HasMorePages = false; // }; // printDocument.Print(); // } // catch // { // } //} private static void PrintTest() { try { const float fPageScale = 1.7f; const float top = 7f; const float left = 0f; const float leftTitle = 3f; const float leftContent = 16f; const float lineHeight = 4f; PrintDocument printDocument = new PrintDocument(); printDocument.PrintController = new StandardPrintController(); printDocument.PrinterSettings.PrinterName = "Microsoft Print to PDF"; printDocument.DefaultPageSettings.PaperSize = new PaperSize("Custom", 100, 100); int iPage = 0; printDocument.PrintPage += (sender, e) => { Font fontTitle = new Font("Arial", 6.5f * fPageScale, FontStyle.Regular); Font font = new Font("Arial", 6 * fPageScale, FontStyle.Regular); Brush b = new SolidBrush(Color.Black); Graphics g = e.Graphics; g.PageScale = fPageScale; g.PageUnit = GraphicsUnit.Millimeter; g.DrawRectangle(new Pen(Brushes.Black, 0.2f), left + 2f, top - 5f, 50f, 64f); g.DrawString("沈阳新松机器人自动化股份有限公司", fontTitle, b, new PointF(left + leftTitle, top - 2f)); g.DrawString("产品名称:", font, b, new PointF(left + leftTitle, top + lineHeight * 1)); g.DrawString("测试产品名称", font, b, new PointF(left + leftContent, top + lineHeight * 1)); g.DrawString("数 量:", font, b, new PointF(left + leftTitle, top + lineHeight * 2)); g.DrawString("测试数量", font, b, new PointF(left + leftContent, top + lineHeight * 2)); g.DrawImage(Image.FromFile("logo.png"), new RectangleF(left + leftContent + 21f, top + lineHeight * 4, 10f, 10f), new RectangleF(0, 0, 24f, 24f), GraphicsUnit.Millimeter); g.DrawImage(new BarcodeWriter { Options = new EncodingOptions { Width = 1000, Height = 1000, Margin = 0, PureBarcode = true }, Format = BarcodeFormat.QR_CODE, }.Write($"12345qwcewfwgverefegvwefqegv67890"), new RectangleF(left + leftTitle + 19f, top + lineHeight * 4, 14f, 14f)); ++iPage; if (iPage < 1) { e.HasMorePages = true; } else { e.HasMorePages = false; } }; printDocument.Print(); //PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog(); //printPreviewDialog.Document = printDocument; //printPreviewDialog.ShowDialog(); } catch { } } public static void Print(string sPrinterName, string[] asContent) { //Print.Program.Print_2210324(sPrinterName, asContent); if (string.IsNullOrWhiteSpace(sPrinterName)) { sPrinterName = "Microsoft Print to PDF"; // Test // sPrinter = "ZDesigner ZT410-203dpi ZPL"; // 2210324 山东药玻 } string sContent = string.Join("\" \"", asContent); // 2210324 山东药玻 Process process = new Process(); process.StartInfo.FileName = "SSWMS.Print.exe"; process.StartInfo.Arguments = $"\"{sPrinterName}\" \"{sContent}\""; process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; process.Start(); if (!process.WaitForExit(10000)) { process.Kill(); } } public static void Main(string[] args) { if (args.Length == 2) { PrintTest(); //Print_2210324(args[0], args[1]); } else { PrintTest(); } } } }