public override void Start(IWorkerParameters parameters) { var labelPrintParameters = new LabelPrintParameters(parameters); var labelPrintDocument = new LabelPrintDocument(); labelPrintDocument.Print(labelPrintParameters); }
public void Print(LabelPrintParameters parameters) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } PrintParameters = parameters; if (!CanPrintLabel() || Font == null) { return; } var bitmap = new Bitmap(560, 450); Brush brush = Brushes.Black; var pen = new Pen(brush); _trackedPositions = new List <int>(); using (Graphics g = Graphics.FromImage(bitmap)) { g.SmoothingMode = SmoothingMode.HighQuality; g.PixelOffsetMode = PixelOffsetMode.HighQuality; g.TranslateTransform(bitmap.Width / 2, bitmap.Height / 2); g.RotateTransform(270); if (PrintParameters.ShowCompanyNameOnLabels) { g.DrawLine(pen, LEFT_OFFSET, _horizontalLinesVerticalOffset, LINE_WIDTH, _horizontalLinesVerticalOffset); } for (int i = 0; i < 7; i++) { Track(_horizontalLinesVerticalOffset += LINE_HEIGHT); } if (PrintParameters.ShowCompanyNameOnLabels) { g.DrawImage(GetWorkshopImage(), -225, -260, 93, 92); if (!string.IsNullOrEmpty(PrintParameters.WorkshopName)) { DrawSpacedText(g, string.Format(Resources.TXT_LABEL_CUSTOMER_NAME, PrintParameters.WorkshopName), brush, LargeFont, new PointF(-125, -243)); } if (!string.IsNullOrEmpty(PrintParameters.PhoneNumber)) { DrawSpacedText(g, string.Format(Resources.TXT_LABEL_CUSTOMER_PHONE_NUMBER, PrintParameters.PhoneNumber), brush, new PointF(-125, -200)); } } DrawSpacedText(g, GetDocumentType(PrintParameters.DocumentType), brush, new PointF(LEFT_OFFSET, _textVerticalOffset)); DrawSpacedText(g, Resources.TXT_DATE_OF_CALIBRATION, brush, new PointF(TEXT_SECONDARY_LEFT_OFFSET - 12, _textVerticalOffset)); DrawRectangle(g, TEXT_SECONDARY_LEFT_OFFSET - 10, _textVerticalOffset, 205, 70); DrawSpacedText(g, GetCalibrationTime(PrintParameters.CalibrationTime), brush, new PointF(TEXT_SECONDARY_LEFT_OFFSET - 12, _textVerticalOffset + TEXT_HEIGHT)); DrawSpacedText(g, string.Format(Resources.TXT_LABEL_K_FACTOR, PrintParameters.KFactor), brush, new PointF(LEFT_OFFSET, _textVerticalOffset += TEXT_HEIGHT)); var wFactorVerticalOffset = _textVerticalOffset += TEXT_HEIGHT; DrawSpacedText(g, string.Format(Resources.TXT_LABEL_W_FACTOR, PrintParameters.WFactor), brush, new PointF(LEFT_OFFSET, wFactorVerticalOffset)); DrawSpacedText(g, string.Format(Resources.TXT_LABEL_L_FACTOR, PrintParameters.LFactor), brush, new PointF(LEFT_OFFSET, _textVerticalOffset += TEXT_HEIGHT)); DrawSpacedText(g, string.Format(Resources.TXT_LABEL_VIN, PrintParameters.VIN), brush, new PointF(LEFT_OFFSET, _textVerticalOffset += TEXT_HEIGHT)); DrawSpacedText(g, string.Format(Resources.TXT_LABEL_SERIAL_NUMBER, PrintParameters.SerialNumber), brush, new PointF(LEFT_OFFSET, _textVerticalOffset += TEXT_HEIGHT)); DrawSpacedText(g, string.Format(Resources.TXT_LABEL_SEAL_NUMBER, PrintParameters.SealNumber), brush, new PointF(TEXT_SECONDARY_LEFT_OFFSET, _textVerticalOffset)); DrawSpacedText(g, string.Format(Resources.TXT_LABEL_TYRE_SIZE, PrintParameters.TyreSize), brush, new PointF(LEFT_OFFSET, _textVerticalOffset += TEXT_HEIGHT)); DrawSpacedText(g, GetCompanyName(), brush, new PointF(LEFT_OFFSET, _textVerticalOffset += TEXT_HEIGHT)); if (!string.IsNullOrEmpty(PrintParameters.LicenseKey) && PrintParameters.ExpirationDate >= DateTime.Now.Date) { DrawSpacedText(g, PrintParameters.Address1 ?? string.Empty, brush, new PointF(LEFT_OFFSET, Track(_textVerticalOffset += TEXT_HEIGHT))); //address 1 DrawSpacedText(g, PrintParameters.Town ?? string.Empty, brush, new PointF(LEFT_OFFSET, Track((_textVerticalOffset += TEXT_HEIGHT) - 15))); //town DrawSpacedText(g, PrintParameters.PostCode ?? string.Empty, brush, new PointF(LEFT_OFFSET, (_textVerticalOffset += TEXT_HEIGHT) - 30)); //post code } else { DrawSpacedText(g, Resources.TXT_DEMO, brush, new PointF(LEFT_OFFSET, Track(_textVerticalOffset += TEXT_HEIGHT))); //address 1 DrawSpacedText(g, Resources.TXT_DEMO, brush, new PointF(LEFT_OFFSET, Track((_textVerticalOffset += TEXT_HEIGHT) - 15))); //town DrawSpacedText(g, Resources.TXT_DEMO, brush, new PointF(LEFT_OFFSET, (_textVerticalOffset += TEXT_HEIGHT) - 30)); //post code } g.Flush(); } bitmap.Save(Path.Combine(PrintParameters.TemporaryDirectory, "label.bmp")); PrinterSettings.PrinterName = PrintParameters.DefaultLabelPrinter; PrinterSettings.Copies = (short)PrintParameters.LabelNumberOfCopies; Print(); }