using System; using System.Drawing; using System.Drawing.Printing; using System.Linq; using System.Windows.Forms; namespace Neo.LegitimateLicences.ActiveX.Printing { public class TemporaryReplacementLicencePrinter { #region Properties private readonly string _existingLicenceNumber; private readonly string _existingRegistration; private readonly string _idNumber; private readonly string _member; private readonly string _mode; private readonly string _postalAddress; private readonly string _postalAddressCode; private readonly string _replacementDateFrom; private readonly string _replacementDateTo; private readonly string _replacementRegistrationNumber; private readonly int _applicationRequestTypeID; private readonly string _transactionType; private readonly string _printedBy; private readonly string _printedDate; private readonly short _copies; private readonly string _printerPath; private readonly int _height; private readonly int _width; private readonly int _leftMargin; private readonly bool _preview; private readonly bool _isTest; private readonly Font _normal = new Font("Arial", 9); private readonly Font _bold = new Font("Arial", 9, FontStyle.Bold); private readonly Font _heading = new Font("Arial", 9, FontStyle.Bold); private readonly Font _small = new Font("Arial", 8); private int _yCoord; #region HEADER private readonly int _lb1; private readonly int _lb2; private readonly int _lb3; private readonly int _lb4; #endregion #region LICENCE HOLDER PARTICULARS private readonly int _lb5; private readonly int _lb6; private readonly int _lb7; private readonly int _lb8; private readonly int _lb9; #endregion #region OPERATING LICENCE PARTICULARS private readonly int _lb10; private readonly int _lb11; private readonly int _lb12; private readonly int _lb13; private readonly int _lb14; #endregion #region DETAILS private readonly int _lb15; private readonly int _lb16; private readonly int _lb17; private readonly int _lb18; private readonly int _lb19; private readonly int _lb20; private readonly int _lb21; private readonly int _lb22; private readonly int _lb23; private readonly int _lb24; private readonly int _lb25; #endregion #endregion #region OperatingLicencePrinter public TemporaryReplacementLicencePrinter(string existingLicenceNumber, string existingRegistration, string idNumber, string member,string mode, string postalAddress, string postalAddressCode, string replacementDateFrom, string replacementDateTo, string replacementRegistrationNumber, string transactionType, short copies, string printerPath, string printedBy, string printedDate, int height, int width, bool preview, bool isTest) { _existingLicenceNumber = existingLicenceNumber; _existingRegistration = existingRegistration; _idNumber = idNumber; _member = member; _mode = mode; _postalAddress = postalAddress; _postalAddressCode = postalAddressCode; _replacementDateFrom = replacementDateFrom; _replacementDateTo = replacementDateTo; _replacementRegistrationNumber = replacementRegistrationNumber; _transactionType = transactionType; _printedBy = printedBy; _printedDate = printedDate; _copies = copies; _printerPath = printerPath; _height = height; //in mm _width = width; //in mm _leftMargin = 55; _preview = preview; _isTest = isTest; #region position defaults (copied from control int lb1 = 90; int lb2 = 50; int lb3 = 130; int lb4 = 15; int lb5 = 40; int lb6 = 10; int lb7 = 15; int lb8 = 5; int lb9 = 25; int lb10 = 30; int lb11 = 40; int lb12 = 15; int lb13 = 15; int lb14 = 15; int lb15 = 40; int lb16 = 80; int lb17 = 160; int lb18 = 15; int lb19 = 15; int lb20 = 15; int lb21 = 15; int lb22 = 15; int lb23 = 15; int lb24 = 15; int lb25 = 15; //int lb26 = 15; int lb27 = 2; //int lb28 = 15; int lb29 = 10; int lb30 = 15; int lb31 = 15; int lb32 = 30; int lb33 = 30; int lb34 = 45; int lb35 = 12; int lb36 = 30; int lb37 = 25; int lb38 = 25; int lb39 = 5; int lb40 = 25; int lb41 = 15; int lb42 = 15; //int lb43 = 15; int lb44 = 15; int lb45 = 15; int lb46 = 15; int lb47 = 15; int lb48 = 15; int lb49 = 15; int lb50 = 15; int lb51 = 15; int lb52 = 15; int lb53 = 15; int lb54 = 960; int lb55 = 980; _lb1 = lb1; _lb2 = lb2; _lb3 = lb3; _lb4 = lb4; _lb5 = lb5; _lb6 = lb6; _lb7 = lb7; _lb8 = lb8; _lb9 = lb9; _lb10 = lb10; _lb11 = lb11; _lb12 = lb12; _lb13 = lb13; _lb14 = lb14; _lb15 = lb15; _lb16 = lb16; _lb17 = lb17; _lb18 = lb18; _lb19 = lb19; _lb20 = lb20; _lb21 = lb21; _lb22 = lb22; _lb23 = lb23; _lb24 = lb24; _lb25 = lb25; //_lb26 = lb26; //_lb27 = lb27; //_lb28 = lb28; //_lb29 = lb29; //_lb30 = lb30; //_lb31 = lb31; //_lb32 = lb32; //_lb33 = lb33; //_lb34 = lb34; //_lb35 = lb35; //_lb36 = lb36; //_lb37 = lb37; //_lb38 = lb38; //_lb39 = lb39; //_lb40 = lb40; //_lb41 = lb41; //_lb42 = lb42; //_lb43 = lb43; //_lb44 = lb44; //_lb45 = lb45; //_lb46 = lb46; //_lb47 = lb47; //_lb48 = lb48; //_lb49 = lb49; //_lb50 = lb50; //_lb51 = lb51; //_lb52 = lb52; //_lb53 = lb53; //_lb54 = lb54; //_lb55 = lb55; #endregion } public TemporaryReplacementLicencePrinter(string existingLicenceNumber, string existingRegistration, string idNumber, string member,string mode, string postalAddress, string postalAddressCode, string replacementDateFrom, string replacementDateTo, string replacementRegistrationNumber, string transactionType, short copies, string printerPath, string printedBy, string printedDate, int height, int width, bool preview, bool isTest, int lb1, int lb2, int lb3, int lb4, int lb5, int lb6, int lb7, int lb8, int lb9, int lb10, int lb11, int lb12, int lb13, int lb14, int lb15, int lb16, int lb17, int lb18, int lb19, int lb20, int lb21, int lb22, int lb23, int lb24, int lb25) { _existingLicenceNumber = existingLicenceNumber; _existingRegistration = existingRegistration; _idNumber = idNumber; _member = member; _mode = mode; _postalAddress = postalAddress; _postalAddressCode = postalAddressCode; _replacementDateFrom = replacementDateFrom; _replacementDateTo = replacementDateTo; _replacementRegistrationNumber = replacementRegistrationNumber; _transactionType = transactionType; _copies = copies; _preview = preview; _isTest = isTest; _copies = copies; _printerPath = printerPath; _height = height; //in mm _width = width; //in mm _leftMargin = 55; _lb1 = lb1; _lb2 = lb2; _lb3 = lb3; _lb4 = lb4; _lb5 = lb5; _lb6 = lb6; _lb7 = lb7; _lb8 = lb8; _lb9 = lb9; _lb10 = lb10; _lb11 = lb11; _lb12 = lb12; _lb13 = lb13; _lb14 = lb14; _lb15 = lb15; _lb16 = lb16; _lb17 = lb17; _lb18 = lb18; _lb19 = lb19; _lb20 = lb20; _lb21 = lb21; _lb22 = lb22; _lb23 = lb23; _lb24 = lb24; _lb25 = lb25; //_lb26 = lb26; //_lb27 = lb27; //_lb28 = lb28; //_lb29 = lb29; //_lb30 = lb30; //_lb31 = lb31; //_lb32 = lb32; //_lb33 = lb33; //_lb34 = lb34; //_lb35 = lb35; //_lb36 = lb36; //_lb37 = lb37; //_lb38 = lb38; //_lb39 = lb39; //_lb40 = lb40; //_lb41 = lb41; //_lb42 = lb42; //_lb43 = lb43; //_lb44 = lb44; //_lb45 = lb45; //_lb46 = lb46; //_lb47 = lb47; //_lb48 = lb48; //_lb49 = lb49; //_lb50 = lb50; //_lb51 = lb51; //_lb52 = lb52; //_lb53 = lb53; //_lb54 = lb54; //_lb55 = lb55; } #endregion public void Print() { try { var printDocument = new PrintDocument { PrinterSettings = { Copies = this._copies } }; printDocument.PrintPage += ToPrinter; printDocument.PrinterSettings.PrinterName = _printerPath; var paperSize = new PaperSize("A4", Convert.ToInt32(_width / 0.254), Convert.ToInt32(_height / 0.254)); //convert to 100ths of an inch //, 394, 197); printDocument.DefaultPageSettings.PaperSize = paperSize; if (_preview) { var printPreviewDialog = new PrintPreviewDialog { Document = printDocument }; ((ToolStripButton)((ToolStrip)printPreviewDialog.Controls[1]).Items[0]).Enabled = false; printPreviewDialog.ShowDialog(); } else { printDocument.Print(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Print error"); } } #region IncrementYCoord private void IncrementYCoord(int height) { _yCoord += height; } #endregion #region toPrinter private void ToPrinter(Object sender, PrintPageEventArgs e) { //var temperaryReplacementLicenceTypeID = 27; #region GRAPHICS var graphics = e.Graphics; Brush solidBrush = new SolidBrush(Color.Black); var pen = new Pen(solidBrush, 1); var dashed = new Pen(solidBrush, 1) { DashPattern = new float[] { 3, 1 } }; var rectangle = new Rectangle(275, 765, 250, 250); var date = DateTime.Now; #endregion #region HEADER IncrementYCoord(_lb1); graphics.DrawString("TEMPORARY REPLACEMENT LICENCE", _heading, solidBrush, _leftMargin, _yCoord); graphics.DrawString("TEMPORARY REPLACEMENT LICENCE", _heading, solidBrush, 750 - graphics.MeasureString("TEMPORARY REPLACEMENT LICENCE", _heading).Width, _yCoord); IncrementYCoord(_lb2); var logo = (Image)Properties.Resources.ResourceManager.GetObject("TransportDepartmentLogo"); if (logo != null) { graphics.DrawImage(logo, _leftMargin - 5, _yCoord, 250, 95); } IncrementYCoord(_lb3); graphics.DrawString("WRITTEN AUTHORISATION FOR THE TEMPORARY", _heading, solidBrush, 400 - (graphics.MeasureString("WRITTEN AUTHORISATION FOR THE TEMPORARY", _normal).Width / 2), _yCoord); IncrementYCoord(_lb4); graphics.DrawString("REPLACEMENT OF VEHICLE", _heading, solidBrush, 400 - (graphics.MeasureString("REPLACEMENT OF VEHICLE", _normal).Width / 2), _yCoord); #endregion #region LICENCE HOLDER PARTICULARS IncrementYCoord(_lb5); graphics.DrawLine(pen, _leftMargin, _yCoord, 750, _yCoord); IncrementYCoord(_lb6); graphics.DrawString(_member, _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString("REREFENCE: Ms P Ndlovu", _normal, solidBrush, 600 - graphics.MeasureString(_member, _normal).Width, _yCoord); IncrementYCoord(_lb7); var counter = 0; graphics.DrawString("DATE:" + DateTime.Now.ToShortDateString(), _normal, solidBrush, 600 - graphics.MeasureString(_member, _normal).Width, _yCoord); foreach (var text in _postalAddress.Split(',')) { counter++; if (counter > 4) continue; graphics.DrawString(text.TrimStart(' '), _normal, solidBrush, _leftMargin, _yCoord); IncrementYCoord(_lb7); } IncrementYCoord(_lb8); graphics.DrawString(_postalAddressCode, _normal, solidBrush, _leftMargin, _yCoord); IncrementYCoord(_lb9); graphics.DrawLine(pen, _leftMargin, _yCoord, 750, _yCoord); #region LICENCE DETAILS IncrementYCoord(_lb10); graphics.DrawString("Dear Sir/Madam", _normal, solidBrush, _leftMargin, _yCoord); IncrementYCoord(_lb11); graphics.DrawString("Operating License/Permit Number: ", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString(_existingLicenceNumber, _normal, solidBrush, 50 + graphics.MeasureString("Operating License/Permit Number: ", _normal).Width , _yCoord); IncrementYCoord(_lb12); graphics.DrawString("Identity Number: ", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString(_idNumber, _normal, solidBrush, 50 + graphics.MeasureString("Operating License/Permit Number: ", _normal).Width, _yCoord); IncrementYCoord(_lb13); graphics.DrawString("Mode of Transport: ", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString(_mode, _normal, solidBrush, 50 + graphics.MeasureString("Operating License/Permit Number: ", _normal).Width, _yCoord); IncrementYCoord(_lb14); graphics.DrawString("Transaction Type: ", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString(_transactionType, _normal, solidBrush, 50 + graphics.MeasureString("Operating License/Permit Number: ", _normal).Width, _yCoord); #endregion #region DATA IncrementYCoord(_lb15); var details = _member + " " + _idNumber + " " + " who is the holder of operating license/permit number " + _existingLicenceNumber + ", is hereby \nauthorised to replace the vehicle with the registration number " + _existingRegistration + " with the vehicle with the registration number \n" + _replacementRegistrationNumber + " for the period " + _replacementDateFrom + " until " + _replacementDateTo + "."; graphics.DrawString(details, _normal, solidBrush, _leftMargin, _yCoord); IncrementYCoord(_lb16); var details2 = "Your attention is drawn to the provisions of Section 63(4) which makes it compulsory to carry the letter and the existing " + "\nLicense/ Permit in the replacement vehicle" + "\n\nShould the authority be obtained under false pretense or should the replaced " + "vehicle referred to herein be in a vehicle \npound or subject of legal procedure at the " + "time of issue hereof, this authority shall be null and void.\n\n\n\nDated and signed by"; graphics.DrawString(details2, _normal, solidBrush, _leftMargin, _yCoord); IncrementYCoord(_lb17); graphics.DrawLine(pen, _leftMargin, _yCoord, 200, _yCoord); IncrementYCoord(_lb18); graphics.DrawString("For Chairperson: National Regulatory Entity", _normal, solidBrush, _leftMargin, _yCoord); IncrementYCoord(_lb19); graphics.DrawString("DATE: " + DateTime.Now.ToShortDateString(), _normal, solidBrush, _leftMargin, _yCoord); #endregion #endregion #region Test Watermark if (_isTest) { graphics.TranslateTransform(150, 75); graphics.RotateTransform(e.PageSettings.Landscape ? 30 : 45); graphics.DrawString("TEST PAGE", new Font("Arial", 100, FontStyle.Bold), new SolidBrush(Color.FromArgb(64, Color.Black)), 0, 0); } #endregion } #endregion } }