using System; using System.Drawing; using System.Drawing.Printing; using System.Linq; using System.Windows.Forms; namespace Neo.Legitimate.Printing.OperatingLicence { public class OperatingLicencePrinter { #region Properties private readonly string _associationName; private readonly string _rasRegistrationNumber; private readonly string _operatingLicenseNumber; private readonly string _applicationNumber; private readonly string _idNumber; private readonly string _name; private readonly string _adress; private readonly string _vehicleRegNumber; private readonly string _grossVehicleMass; private readonly string _engineNumber; private readonly string _chassisNumber; private readonly string _manufacture; private readonly string _passengers; private readonly string _vehicleDescription; private readonly string _crossBorderPermit; private readonly string _validFrom; private readonly string _validTo; private readonly string _board; private readonly string _documentNumber; private readonly string _yearOfFirstReg; private readonly string _printedBy; private readonly string _printedDate; private readonly int _applicationRequestTypeID; 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; private readonly int _lb5; #endregion #region LICENCE HOLDER PARTICULARS private readonly int _lb6; private readonly int _lb7; private readonly int _lb8; private readonly int _lb9; private readonly int _lb10; private readonly int _lb11; private readonly int _lb12; private readonly int _lb13; private readonly int _lb14; #endregion #region VEHICLE PARTICULARS 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 #region OPERATING LICENCE PARTICULARS private readonly int _lb26; private readonly int _lb27; private readonly int _lb28; private readonly int _lb29; private readonly int _lb30; private readonly int _lb31; private readonly int _lb32; #endregion #region ANNEXURE 1 private readonly int _lb33; private readonly int _lb34; private readonly int _lb35; private readonly int _lb36; private readonly int _lb37; private readonly int _lb38; private readonly int _lb39; private readonly int _lb40; private readonly int _lb41; private readonly int _lb42; private readonly int _lb43; private readonly int _lb44; private readonly int _lb45; private readonly int _lb46; private readonly int _lb47; private readonly int _lb48; private readonly int _lb49; private readonly int _lb50; private readonly int _lb51; private readonly int _lb52; private readonly int _lb53; private readonly int _lb54; private readonly int _lb55; #endregion #endregion #region OperatingLicencePrinter public OperatingLicencePrinter(string associationName, string rasRegistrationNumber, string operatingLicenseNumber, string applicationNumber, string iDNumber, string name, string adress, string vehicleRegNumber, string grossVehicleMass, string engineNumber, string chassisNumber, string manufacture, string passengers, string vehicleDescription, string crossBorderPermit, string validFrom, string validTo, string board, string documentNumber, string yearOfFirstReg, string printedBy, string printedDate, short copies, string printerPath, int height, int width, bool preview, int applicationRequestTypeID, 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, int lb26, int lb27, int lb28, int lb29, int lb30, int lb31, int lb32, int lb33, int lb34, int lb35, int lb36, int lb37, int lb38, int lb39, int lb40, int lb41, int lb42, int lb43, int lb44, int lb45, int lb46, int lb47, int lb48, int lb49, int lb50, int lb51, int lb52, int lb53, int lb54, int lb55, bool isTest) { _associationName = associationName; _rasRegistrationNumber = rasRegistrationNumber; _operatingLicenseNumber = operatingLicenseNumber; _applicationNumber = applicationNumber; _idNumber = iDNumber; _name = name; _adress = adress; _vehicleRegNumber = vehicleRegNumber; _grossVehicleMass = grossVehicleMass; _engineNumber = engineNumber; _chassisNumber = chassisNumber; _manufacture = manufacture; _passengers = passengers; _vehicleDescription = vehicleDescription; _crossBorderPermit = crossBorderPermit; _validFrom = validFrom; _validTo = validTo; _board = board; _documentNumber = documentNumber; _yearOfFirstReg = yearOfFirstReg; _printedBy = printedBy; _printedDate = printedDate; _copies = copies; _printerPath = printerPath; _height = height; //in mm _width = width; //in mm _leftMargin = 55; _preview = preview; _applicationRequestTypeID = applicationRequestTypeID; _isTest = isTest; _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 #region Print public void Print() { 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(); } } #endregion #region IncrementYCoord private void IncrementYCoord(int height) { _yCoord += height; } #endregion #region toPrinter private void ToPrinter(Object sender, PrintPageEventArgs e) { var specialLicenceTypeID = 11; #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("DEPARTMENT OF TRANSPORT", _heading, solidBrush, _leftMargin, _yCoord); graphics.DrawString("DEPARTMENT OF TRANSPORT", _heading, solidBrush, 750 - graphics.MeasureString("DEPARTMENT OF TRANSPORT", _heading).Width, _yCoord); IncrementYCoord(_lb2); if (_applicationRequestTypeID != specialLicenceTypeID) { graphics.DrawString("OPERATING LICENCE", _heading, solidBrush, _leftMargin, _yCoord); graphics.DrawString("OPERATING LICENCE", _heading, solidBrush, 750 - graphics.MeasureString("OPERATING LICENCE", _heading).Width, _yCoord); } else { graphics.DrawString("SPECIAL OPERATING LICENCE", _heading, solidBrush, _leftMargin, _yCoord); graphics.DrawString("SPECIAL OPERATING LICENCE", _heading, solidBrush, 750 - graphics.MeasureString("SPECIAL OPERATING LICENCE", _heading).Width, _yCoord); } IncrementYCoord(_lb3); graphics.DrawString("Issued in terms of and subject to the provisions of the National Land Transport Act, 2009", _normal, solidBrush, 400 - (graphics.MeasureString("Issued in terms of and subject to the provisions of the National Land Transport Act, 2009", _normal).Width / 2), _yCoord); IncrementYCoord(_lb4); graphics.DrawString("(Act No. 5 of 2009), subject to the particulars and conditions set out below", _normal, solidBrush, 400 - (graphics.MeasureString("(Act No. 5 of 2009), subject to the particulars and conditions set out below", _normal).Width / 2), _yCoord); #endregion #region LICENCE HOLDER PARTICULARS IncrementYCoord(_lb5); graphics.DrawLine(pen, _leftMargin, _yCoord, 750, _yCoord); IncrementYCoord(_lb6); graphics.DrawString("LICENCE HOLDER PARTICULARS", _heading, solidBrush, 400 - (graphics.MeasureString("LICENCE HOLDER PARTICULARS", _heading).Width / 2), _yCoord); IncrementYCoord(_lb7); graphics.DrawLine(pen, _leftMargin, _yCoord, 750, _yCoord); #region DATA IncrementYCoord(_lb8); graphics.DrawString("Association Name", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString(_associationName, _normal, solidBrush, 400 - (graphics.MeasureString(_associationName, _normal).Width / 2), _yCoord); graphics.DrawString("Association Name", _normal, solidBrush, 750 - graphics.MeasureString("Association Name", _normal).Width, _yCoord); //IncrementYCoord(_lb9); //graphics.DrawString("RAS Registration No", _normal, solidBrush, _leftMargin, _yCoord); //graphics.DrawString(_rasRegistrationNumber, _normal, solidBrush, 400 - (graphics.MeasureString(_rasRegistrationNumber, _normal).Width / 2), _yCoord); //graphics.DrawString("RAS Registration No", _normal, solidBrush, 750 - graphics.MeasureString("RAS Registration No", _normal).Width, _yCoord); IncrementYCoord(_lb10); graphics.DrawString("Operating Licence Number", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString(_operatingLicenseNumber, _heading, solidBrush, 400 - (graphics.MeasureString(_operatingLicenseNumber, _heading).Width / 2), _yCoord); graphics.DrawString("Operating Licence Number", _normal, solidBrush, 750 - graphics.MeasureString("Operating Licence Number", _normal).Width, _yCoord); IncrementYCoord(_lb11); graphics.DrawString("Application Number", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString(_applicationNumber, _normal, solidBrush, 400 - (graphics.MeasureString(_applicationNumber, _normal).Width / 2), _yCoord); graphics.DrawString("Application Number", _normal, solidBrush, 750 - graphics.MeasureString("Application Number", _normal).Width, _yCoord); IncrementYCoord(_lb12); graphics.DrawString("ID-Number", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString(_idNumber, _normal, solidBrush, 400 - (graphics.MeasureString(_idNumber, _normal).Width / 2), _yCoord); graphics.DrawString("ID-Number", _normal, solidBrush, 750 - graphics.MeasureString("ID-Number", _normal).Width, _yCoord); IncrementYCoord(_lb13); graphics.DrawString("Name", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString(_name, _normal, solidBrush, 400 - (graphics.MeasureString(_name, _normal).Width / 2), _yCoord); graphics.DrawString("Name", _normal, solidBrush, 750 - graphics.MeasureString("Name", _normal).Width, _yCoord); //TODO: CHECK IF THERE SHOULD BE A LINE LIMIT HERE AND RESTICT THE ADDRESSS, THIS IS STOP THE PAGE FROM OVER EXTENDING ITS HEIGHT AVAILABLE. IncrementYCoord(_lb14); graphics.DrawString("Address", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString("Address", _normal, solidBrush, 750 - graphics.MeasureString("Address", _normal).Width, _yCoord); var counter = 0; foreach (var text in _adress.Split(',')) { counter++; if (counter > 4) continue; graphics.DrawString(text, _normal, solidBrush, 400 - (graphics.MeasureString(text, _normal).Width / 2), _yCoord); IncrementYCoord(_lb14); } #endregion #endregion #region VEHICLE PARTICULARS IncrementYCoord(_lb15); graphics.DrawLine(pen, _leftMargin, _yCoord, 750, _yCoord); IncrementYCoord(_lb16); graphics.DrawString("VEHICLE PARTICULARS", _heading, solidBrush, 400 - (graphics.MeasureString("VEHICLE PARTICULARS", _heading).Width / 2), _yCoord); IncrementYCoord(_lb17); graphics.DrawLine(pen, _leftMargin, _yCoord, 750, _yCoord); #region DATA IncrementYCoord(_lb18); graphics.DrawString("Vehicle Registration Number", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString(_vehicleRegNumber, _bold, solidBrush, 400 - (graphics.MeasureString(_vehicleRegNumber, _bold).Width / 2), _yCoord); graphics.DrawString("Vehicle Registration Number", _normal, solidBrush, 750 - graphics.MeasureString("Vehicle Registration Number", _normal).Width, _yCoord); IncrementYCoord(_lb19); graphics.DrawString("Gross Vehicle Mass", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString(_grossVehicleMass, _normal, solidBrush, 400 - (graphics.MeasureString(_grossVehicleMass, _normal).Width / 2), _yCoord); graphics.DrawString("Gross Vehicle Mass", _normal, solidBrush, 750 - graphics.MeasureString("Gross Vehicle Mass", _normal).Width, _yCoord); IncrementYCoord(_lb20); graphics.DrawString("Engine Number", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString(_engineNumber, _normal, solidBrush, 400 - (graphics.MeasureString(_engineNumber, _normal).Width / 2), _yCoord); graphics.DrawString("Engine Number", _normal, solidBrush, 750 - graphics.MeasureString("Engine Number", _normal).Width, _yCoord); IncrementYCoord(_lb21); graphics.DrawString("Chassis Number", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString(_chassisNumber, _normal, solidBrush, 400 - (graphics.MeasureString(_chassisNumber, _normal).Width / 2), _yCoord); graphics.DrawString("Chassis Number", _normal, solidBrush, 750 - graphics.MeasureString("Chassis Number", _normal).Width, _yCoord); IncrementYCoord(_lb22); graphics.DrawString("Manufacturer", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString(_manufacture, _normal, solidBrush, 400 - (graphics.MeasureString(_manufacture, _normal).Width / 2), _yCoord); graphics.DrawString("Manufacturer", _normal, solidBrush, 750 - graphics.MeasureString("Manufacturer", _normal).Width, _yCoord); IncrementYCoord(_lb23); graphics.DrawString("Passengers", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString(_passengers, _normal, solidBrush, 400 - (graphics.MeasureString(_passengers, _normal).Width / 2), _yCoord); graphics.DrawString("Passengers", _normal, solidBrush, 750 - graphics.MeasureString("Passengers", _normal).Width, _yCoord); IncrementYCoord(_lb24); graphics.DrawString("Vehicle Description", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString(_vehicleDescription, _normal, solidBrush, 400 - (graphics.MeasureString(_vehicleDescription, _normal).Width / 2), _yCoord); graphics.DrawString("Vehicle Description", _normal, solidBrush, 750 - graphics.MeasureString("Vehicle Description", _normal).Width, _yCoord); IncrementYCoord(_lb25); graphics.DrawString("Year Of First Registration", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString(_yearOfFirstReg, _normal, solidBrush, 400 - (graphics.MeasureString(_yearOfFirstReg, _normal).Width / 2), _yCoord); graphics.DrawString("Year Of First Registration", _normal, solidBrush, 750 - graphics.MeasureString("Year Of First Registration", _normal).Width, _yCoord); #endregion #endregion #region OPERATING LICENCE PARTICULARS IncrementYCoord(_lb26); graphics.DrawLine(pen, _leftMargin, _yCoord, 750, _yCoord); IncrementYCoord(_lb27); if (_applicationRequestTypeID != specialLicenceTypeID) { graphics.DrawString("OPERATING LICENCE PARTICULARS", _heading, solidBrush, 400 - (graphics.MeasureString("OPERATING LICENCE PARTICULARS", _heading).Width / 2), _yCoord); } else { graphics.DrawString("SPECIAL OPERATING LICENCE PARTICULARS", _heading, solidBrush, 400 - (graphics.MeasureString("SPECIAL OPERATING LICENCE PARTICULARS", _heading).Width / 2), _yCoord); } IncrementYCoord(_lb28); graphics.DrawLine(pen, _leftMargin, _yCoord, 750, _yCoord); #region DATA IncrementYCoord(_lb29); graphics.DrawString("Cross Border Permit", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString(_crossBorderPermit, _normal, solidBrush, 400 - (graphics.MeasureString(_crossBorderPermit, _normal).Width / 2), _yCoord); graphics.DrawString("Cross Border Permit", _normal, solidBrush, 750 - graphics.MeasureString("Cross Border Permit", _normal).Width, _yCoord); IncrementYCoord(_lb30); graphics.DrawString("Valid From", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString(_validFrom, _normal, solidBrush, 400 - (graphics.MeasureString(_validFrom, _normal).Width / 2), _yCoord); graphics.DrawString("Valid From", _normal, solidBrush, 750 - graphics.MeasureString("Valid From", _normal).Width, _yCoord); IncrementYCoord(_lb31); graphics.DrawString("Valid Until", _normal, solidBrush, _leftMargin, _yCoord); graphics.DrawString(_validTo, _bold, solidBrush, 400 - (graphics.MeasureString(_validTo, _bold).Width / 2), _yCoord); graphics.DrawString("Valid Until", _normal, solidBrush, 750 - graphics.MeasureString("Valid Until", _normal).Width, _yCoord); IncrementYCoord(_lb32); graphics.DrawString("This document authorises and is restricted to the conveyance as set out in the following description :", _normal, solidBrush, _leftMargin, _yCoord); #endregion #endregion #region ANNEXURE 1 IncrementYCoord(_lb33); graphics.DrawString("ANNEXURE 1", _heading, solidBrush, 400 - (graphics.MeasureString("ANNEXURE 1", _heading).Width / 2), _yCoord); IncrementYCoord(_lb34); graphics.DrawString("Date:", _normal, solidBrush, _leftMargin + 60, _yCoord); graphics.DrawString("Secretary:", _normal, solidBrush, _leftMargin + 330, _yCoord); IncrementYCoord(_lb35); graphics.DrawLine(pen, _leftMargin + 100, _yCoord, _leftMargin + 300, _yCoord); graphics.DrawLine(pen, _leftMargin + 430, _yCoord, _leftMargin + 630, _yCoord); IncrementYCoord(_lb36); graphics.DrawString("Issuing Authority: KZN Provincial Regulatory Entity", _normal, solidBrush, _leftMargin + 10, _yCoord); graphics.DrawString(_documentNumber, _normal, solidBrush, 650, _yCoord); IncrementYCoord(_lb37); graphics.DrawLine(pen, _leftMargin, _yCoord, 750, _yCoord); if (_applicationRequestTypeID != specialLicenceTypeID && !_isTest) //Decal not required for a special licence or test page { if (graphics.MeasureString(_name, _normal).Width > 240) { rectangle.Height = rectangle.Height + _lb44; } if (graphics.MeasureString(_associationName, _normal).Width > 240) { rectangle.Height = rectangle.Height + _lb52; } IncrementYCoord(_lb38); rectangle.Y = _yCoord; graphics.DrawRectangle(dashed, rectangle); IncrementYCoord(_lb39); graphics.DrawString("PUBLIC ROAD TRANSPORT", _heading, solidBrush, 320, _yCoord); IncrementYCoord(_lb40); graphics.DrawString(_operatingLicenseNumber, _bold, solidBrush, 400 - (graphics.MeasureString(_operatingLicenseNumber, _bold).Width / 2), _yCoord); IncrementYCoord(_lb41); graphics.DrawString("Operating Licence Number", _small, solidBrush, 400 - (graphics.MeasureString("Operating Licence Number", _small).Width / 2), _yCoord); IncrementYCoord(_lb42); graphics.DrawString(_validFrom + " " + _validTo, _bold, solidBrush, 400 - (graphics.MeasureString(_validFrom + " " + _validTo, _bold).Width / 2), _yCoord); IncrementYCoord(_lb43); graphics.DrawString("Valid from until", _small, solidBrush, 390 - (graphics.MeasureString("Valid from until", _small).Width / 2), _yCoord); if (graphics.MeasureString(_name, _normal).Width > 240) { foreach (var text in Get2LineDisplayText(_name).Split(',')) { IncrementYCoord(_lb44); graphics.DrawString(text, _bold, solidBrush, 400 - (graphics.MeasureString(text, _normal).Width / 2), _yCoord); } } else { IncrementYCoord(_lb44); graphics.DrawString(_name, _bold, solidBrush, 400 - (graphics.MeasureString(_name, _bold).Width / 2), _yCoord); } IncrementYCoord(_lb45); graphics.DrawString("Holder", _small, solidBrush, 400 - (graphics.MeasureString("Holder", _small).Width / 2), _yCoord); IncrementYCoord(_lb46); graphics.DrawString(_vehicleRegNumber, _bold, solidBrush, 400 - (graphics.MeasureString(_vehicleRegNumber, _bold).Width / 2), _yCoord); IncrementYCoord(_lb47); graphics.DrawString("Registration Number", _small, solidBrush, 400 - (graphics.MeasureString("Registration Number", _small).Width / 2), _yCoord); IncrementYCoord(_lb48); graphics.DrawString(_vehicleDescription, _bold, solidBrush, 400 - (graphics.MeasureString(_vehicleDescription, _bold).Width / 2), _yCoord); IncrementYCoord(_lb49); graphics.DrawString("Type Of Vehicle", _small, solidBrush, 400 - (graphics.MeasureString("Type Of Vehicle", _small).Width / 2), _yCoord); IncrementYCoord(_lb50); graphics.DrawString(_passengers, _bold, solidBrush, 400 - (graphics.MeasureString(_passengers, _bold).Width / 2), _yCoord); IncrementYCoord(_lb51); graphics.DrawString("Passengers", _small, solidBrush, 400 - (graphics.MeasureString("Passengers", _small).Width / 2), _yCoord); if (graphics.MeasureString(_associationName, _normal).Width > 240) { foreach (var text in Get2LineDisplayText(_associationName).Split(',')) { IncrementYCoord(_lb52); graphics.DrawString(text, _bold, solidBrush, 400 - (graphics.MeasureString(text, _normal).Width / 2), _yCoord); } } else { IncrementYCoord(_lb52); graphics.DrawString(_associationName, _bold, solidBrush, 400 - (graphics.MeasureString(_associationName, _normal).Width / 2), _yCoord); } IncrementYCoord(_lb53); graphics.DrawString("Association Name", _small, solidBrush, 400 - (graphics.MeasureString("Association Name", _small).Width / 2), _yCoord); } graphics.DrawString(_printedDate, _small, solidBrush, 550, _lb54); graphics.DrawString("Printed By: " + _printedBy, _small, solidBrush, 550, _lb55); #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 #region Get2LineDisplayText private static string Get2LineDisplayText(string original) { //Degenerate case with only 1 word if (!original.Any(Char.IsWhiteSpace)) { return original; } var mid = original.Length / 2; if (!Char.IsWhiteSpace(original[mid])) { for (var i = 1; i < mid; i += i) { if (Char.IsWhiteSpace(original[mid + i])) { mid = mid + i; break; } if (!Char.IsWhiteSpace(original[mid - i])) continue; mid = mid - i; break; } } return original.Substring(0, mid) + "," + original.Substring(mid + 1); } #endregion } }