using System; using System.Windows.Forms; using System.Collections.Generic; using System.Text; using System.Drawing; using System.Drawing.Printing; namespace Neo.Afx.ActiveX.Printing { public class BarcodeLabelPrinter { #region Constructor public BarcodeLabelPrinter(string BarcodeData, string PrintedBy, short Copies, string PrinterPath, int LabelHeight, int LabelWidth, int LeftMargin, bool Preview) { barcodeData = BarcodeData; printedBy = PrintedBy; copies = Copies; printerPath = PrinterPath; labelHeight = LabelHeight; //in mm labelWidth = LabelWidth; //in mm leftMargin = LeftMargin; preview = Preview; } #endregion #region Variables private string barcodeData; private string printedBy; private short copies; private string printerPath; private int labelHeight; private int labelWidth; private int leftMargin; private bool preview; private Font barcodeFont = new Font("3 of 9 Barcode", 15); private Font printFont = new Font("Century Gothic", 7); private Font printHeaderFont = new Font("Century Gothic", 8,FontStyle.Bold); #endregion #region Methods public void Print() { var tmpprndoc = new PrintDocument(); tmpprndoc.PrinterSettings.Copies = this.copies; tmpprndoc.PrintPage += new PrintPageEventHandler(toPrinter); tmpprndoc.PrinterSettings.PrinterName = printerPath; var customeSize = new PaperSize("Custom Label Size", Convert.ToInt32(labelWidth / 0.254), Convert.ToInt32(labelHeight / 0.254)); //convert to 100ths of an inch tmpprndoc.DefaultPageSettings.PaperSize = customeSize; if(preview) { PrintPreviewDialog tmpprdiag = new PrintPreviewDialog(); tmpprdiag.Document = tmpprndoc; tmpprdiag.Show(); } else { tmpprndoc.Print(); } } private void toPrinter(Object sender, PrintPageEventArgs e) { var g = e.Graphics; var br = new SolidBrush(Color.Black); var top = 0; g.DrawString(barcodeData, printHeaderFont, br, leftMargin, top); g.DrawString("*" + barcodeData.Substring(3) + "*", barcodeFont, br, leftMargin, top + 16); // the Asterisk (*) is used to delimit the barcode, and is required as the start and stop charachters by the 3of9 Symbology. g.DrawString("Printed By: " + printedBy, printFont, br, leftMargin, top + 34); g.DrawString("Date: " + DateTime.Now.ToString("MM/dd/yyyy hh:mm"), printFont, br, leftMargin, top + 46); } #endregion } }