using System; //using System.Windows.Forms; //using System.Drawing; //using System.Drawing.Printing; using System.Collections; using iTextSharp; using iTextSharp.text; using iTextSharp.text.pdf; using System.IO; namespace TyroDeveloperDLL { public class BillPDF { public BillPDF() { myBill.AddAuthor("TyroDeveloper"); myBill.AddCreator("JUAN GABRIEL CASTILLO TURRUBIATES"); myBill.AddTitle("Ticket de Venta"); } PdfWriter writer = null; PdfContentByte cb = null; ArrayList headerLines = new ArrayList(); ArrayList subHeaderLines = new ArrayList(); ArrayList items = new ArrayList(); ArrayList totales = new ArrayList(); ArrayList footerLines = new ArrayList(); private string headerImage = ""; bool _DrawItemHeaders = true; int startItemsOn = 20; string path = ""; string file_name = ""; //int maxChar = 100; int maxCharDescription = 50; int imageHeight = 0; float idProductX = 0; float descProductX = 0; float amountProductX = 0; float qtyProductX = 0; float priceProductX = 0; float topMargin = 5; static int fontSize = 12; static BaseFont bfCourier = BaseFont.CreateFont(BaseFont.COURIER, BaseFont.CP1252, false); static Font font = new Font(bfCourier, fontSize, Font.NORMAL, Color.BLACK); Document myBill = new Document(PageSize.LETTER, 0, 0, 0, 0); //Aqui se ponen todos los objetos string line = ""; #region Properties public Int32 StartItemsOn { get { return startItemsOn; } set { startItemsOn = value; } } public float IdProductX { get { return idProductX; } set { idProductX = value; } } public float DescProductX { get { return descProductX; } set { descProductX = value; } } public float AmountProductX { get { return amountProductX; } set { amountProductX = value; } } public float QtyProductX { get { return qtyProductX; } set { qtyProductX = value; } } public float PriceProductX { get { return priceProductX; } set { priceProductX = value; } } public String Path { get { return path; } set { path = value; } } public String FileName { get { return file_name; } set { file_name = value; } } public String FullFileName { get { return (String.Format("{0}{1}", path, file_name)); } } public String HeaderImage { get { return headerImage; } set { if (headerImage != value) headerImage = value; } } public bool DrawItemHeaders { set { _DrawItemHeaders = value; } } public int MaxCharDescription { get { return maxCharDescription; } set { if (value != maxCharDescription) maxCharDescription = value; } } public int FontSize { get { return fontSize; } set { if (value != fontSize) fontSize = value; } } public Font FontName { get { return font; } set { if (value != font) font = value; } } //CustomerName string customerName = ""; public String CustomerName {get { return customerName; }set { customerName = value; }} float customerNameX = 0; public float CustomerNameX { get { return customerNameX; } set { customerNameX = value; }} float customerNameY = 0; public float CustomerNameY {get { return customerNameY; }set { customerNameY = value; }} //BillID string billID = ""; public String BillID {get { return billID; } set { billID = value; } } float billIDX = 0; public float BillIDX { get { return billIDX; } set { billIDX = value; } } float billIDY = 0; public float BillIDY { get { return billIDY; } set { billIDY = value; } } //BillDate string billDate = ""; public String BillDate { get { return billDate; } set { billDate = value; } } float billDateX = 0; public float BillDateX { get { return billDateX; } set { billDateX = value; } } float billDateY = 0; public float BillDateY { get { return billDateY; } set { billDateY = value; } } //CustomerAddress string customerAddress = ""; public String CustomerAddress { get { return customerAddress; } set { customerAddress = value; } } float customerAddressX = 0; public float CustomerAddressX { get { return customerAddressX; } set { customerAddressX = value; } } float customerAddressY = 0; public float CustomerAddressY { get { return customerAddressY; } set { customerAddressY = value; } } //CustomerCity string customerCity = ""; public String CustomerCity { get { return customerCity; } set { customerCity = value; } } float customerCityX = 0; public float CustomerCityX { get { return customerCityX; } set { customerCityX = value; } } float customerCityY = 0; public float CustomerCityY { get { return customerCityY; } set { customerCityY = value; } } //CustomerRFC string customerRFC = ""; public String CustomerRFC { get { return customerRFC; } set { customerRFC = value; } } float customerRFCX = 0; public float CustomerRFCX { get { return customerRFCX; } set { customerRFCX = value; } } float customerRFCY = 0; public float CustomerRFCY { get { return customerRFCY; } set { customerRFCY = value; } } //CustomerPostalCode string customerPostalCode = ""; public String CustomerPostalCode { get { return customerPostalCode; } set { customerPostalCode = value; } } float customerPostalCodeX = 0; public float CustomerPostalCodeX { get { return customerPostalCodeX; } set { customerPostalCodeX = value; } } float customerPostalCodeY = 0; public float CustomerPostalCodeY { get { return customerPostalCodeY; } set { customerPostalCodeY = value; } } //BillTotalString string billTotalString = ""; public String BillTotalString { get { return billTotalString; } set { billTotalString = value; } } float billTotalStringX = 0; public float BillTotalStringX { get { return billTotalStringX; } set { billTotalStringX = value; } } float billTotalStringY = 0; public float BillTotalStringY { get { return billTotalStringY; } set { billTotalStringY = value; } } //BillSubTotal string billSubTotal = ""; public String BillSubTotal { get { return billSubTotal; } set { billSubTotal = value; } } float billSubTotalX = 0; public float BillSubTotalX { get { return billSubTotalX; } set { billSubTotalX = value; } } float billSubTotalY = 0; public float BillSubTotalY { get { return billSubTotalY; } set { billSubTotalY = value; } } //BillTax string billTax = ""; public String BillTax { get { return billTax; } set { billTax = value; } } float billTaxX = 0; public float BillTaxX { get { return billTaxX; } set { billTaxX = value; } } float billTaxY = 0; public float BillTaxY { get { return billTaxY; } set { billTaxY = value; } } //billTotal string billTotal = ""; public String BillTotal { get { return billTotal; } set { billTotal = value; } } float billTotalX = 0; public float BillTotalX { get { return billTotalX; } set { billTotalX = value; } } float billTotalY = 0; public float BillTotalY { get { return billTotalY; } set { billTotalY = value; } } #endregion #region HeaderBill public void SetBillID(string Value, float XPosition, float YPosition) { billID = Value; billIDX = XPosition; billIDY = YPosition; } public void SetBillDate(string Value, float XPosition, float YPosition) { billDate = Value; billDateX = XPosition; billDateY = YPosition; } public void SetBillSubTotal(string Value, float XPosition, float YPosition) { billSubTotal = Value; billSubTotalX = XPosition; billSubTotalY = YPosition; } public void SetBillTax(string Value, float XPosition, float YPosition) { billTax = Value; billTaxX = XPosition; billTaxY = YPosition; } public void SetBillTotal(string Value, float XPosition, float YPosition) { billTotal = Value; billTotalX = XPosition; billTotalY = YPosition; } public void SetBillTotalString(string Value, float XPosition, float YPosition) { billTotalString = Value; billTotalStringX = XPosition; billTotalStringY = YPosition; } public void SetCustomerName(string Value, float XPosition, float YPosition) { customerName = Value; customerNameY = YPosition; customerNameX = XPosition; } public void SetCustomerAddress(string Value, float XPosition, float YPosition) { customerAddress = Value; customerAddressX = XPosition; customerAddressY = YPosition; } public void SetCustomerCity(string Value, float XPosition, float YPosition) { customerCity = Value; customerCityX = XPosition; customerCityY = YPosition; } public void SetCustomerRFC(string Value, float XPosition, float YPosition) { customerRFC = Value; customerRFCX = XPosition; customerRFCY = YPosition; } public void SetCustomerPostalCode(string Value, float XPosition, float YPosition) { customerPostalCode = Value; customerPostalCodeX = XPosition; customerPostalCodeY = YPosition; } #endregion public void AddItem(string cantidad, string item, string price, string unitPrice) { BillOrderItem newItem = new BillOrderItem('?'); items.Add(newItem.GenerateItem(cantidad, item, price,unitPrice)); } private void DrawEspacio() { line = ""; cb.SetTextMatrix(idProductX, YPosition()); cb.SetFontAndSize(font.BaseFont, fontSize); cb.ShowText(line); startItemsOn++; } public bool Print() { try { //aqui para generar el PDF writer = PdfWriter.GetInstance(myBill, new FileStream(path + file_name, FileMode.Create)); myBill.Open(); cb = writer.DirectContent; cb.SetFontAndSize(font.BaseFont, fontSize); cb.BeginText(); DrawInfo(); DrawItems(); cb.EndText(); myBill.Close(); return true; } catch (Exception ex) { throw (ex); } } private void DrawInfo() { //CustomerName cb.SetTextMatrix(customerNameX, myBill.PageSize.Height - customerNameY); cb.ShowText(customerName); //BillID cb.SetTextMatrix(billIDX, myBill.PageSize.Height - billIDY); cb.ShowText(billID); //BillDate cb.SetTextMatrix(billDateX, myBill.PageSize.Height - billDateY); cb.ShowText(billDate); //CustomerAddress cb.SetTextMatrix(customerAddressX, myBill.PageSize.Height - customerAddressY); cb.ShowText(customerAddress); //CustomerCity cb.SetTextMatrix(customerCityX, myBill.PageSize.Height - customerCityY); cb.ShowText(customerCity); //CustomerRFC cb.SetTextMatrix(customerRFCX, myBill.PageSize.Height - customerRFCY); cb.ShowText(customerRFC); //CustomerPostalCode cb.SetTextMatrix(customerPostalCodeX, myBill.PageSize.Height - customerPostalCodeY); cb.ShowText(customerPostalCode); //TotalString cb.SetTextMatrix(billTotalStringX, myBill.PageSize.Height - billTotalStringY); cb.ShowText(billTotalString); //SubTotal //cb.SetTextMatrix(billSubTotalX, myBill.PageSize.Height - billSubTotalY); //cb.ShowText(billSubTotal); cb.ShowTextAligned(PdfContentByte.ALIGN_RIGHT, billSubTotal, billSubTotalX, myBill.PageSize.Height - billSubTotalY, 0); //Tax //cb.SetTextMatrix(billTaxX, myBill.PageSize.Height - billTaxY); //cb.ShowText(billTax); cb.ShowTextAligned(PdfContentByte.ALIGN_RIGHT, billTax, billTaxX, myBill.PageSize.Height - billTaxY, 0); //Total //cb.SetTextMatrix(billTotalX, myBill.PageSize.Height - billTotalY); //cb.ShowText(billTotal); cb.ShowTextAligned(PdfContentByte.ALIGN_RIGHT, billTotal, billTotalX, myBill.PageSize.Height - billTotalY, 0); } private float YPosition() { return (myBill.PageSize.Height - (topMargin + (startItemsOn * font.CalculatedSize + imageHeight))); } private void DrawItems() { BillOrderItem ordIt = new BillOrderItem('?'); foreach (string item in items) { //cantidad line = ordIt.GetItemCantidad(item); cb.SetTextMatrix(qtyProductX, YPosition()); cb.ShowText(line); //precio(Monto) line = ordIt.GetItemPrice(item); cb.ShowTextAligned(PdfContentByte.ALIGN_RIGHT, line, amountProductX, YPosition(), 0); //PRECIO_VENTA line = ordIt.GetItemUnitPrice(item); cb.ShowTextAligned(PdfContentByte.ALIGN_RIGHT, line, priceProductX, YPosition(), 0); //Descripcion string name = ordIt.GetItemName(item); if (name.Length > maxCharDescription) { int currentChar = 0; int itemLenght = name.Length; while (itemLenght > maxCharDescription) { line = ordIt.GetItemName(item); cb.SetTextMatrix(descProductX, YPosition()); cb.ShowText(line.Substring(currentChar, maxCharDescription)); startItemsOn++; currentChar += maxCharDescription; itemLenght -= maxCharDescription; } line = ordIt.GetItemName(item); cb.SetTextMatrix(descProductX, YPosition()); cb.ShowText(line.Substring(currentChar, line.Length - currentChar)); startItemsOn++; } else { cb.SetTextMatrix(descProductX, YPosition()); cb.ShowText(ordIt.GetItemName(item)); startItemsOn++; } } } } public class BillOrderItem { char[] delimitador = new char[] { '?' }; public BillOrderItem(char delimit) { delimitador = new char[] { delimit }; } //CANTIDAD public string GetItemCantidad(string BillOrderItem) { string[] delimitado = BillOrderItem.Split(delimitador); return delimitado[0]; } //DESCRIPCION public string GetItemName(string BillOrderItem) { string[] delimitado = BillOrderItem.Split(delimitador); return delimitado[1]; } //IMPORTE public string GetItemPrice(string BillOrderItem) { string[] delimitado = BillOrderItem.Split(delimitador); return delimitado[2]; } //precio unitario public string GetItemUnitPrice(string BillOrderItem) { string[] delimitado = BillOrderItem.Split(delimitador); return delimitado[3]; } //GENERAR public string GenerateItem(string cantidad, string itemName, string price, string unitPrice) { return cantidad + delimitador[0] + itemName + delimitador[0] + price + delimitador[0] + unitPrice; } } }
Please visit :www.TyroDeveloper.com
Please Click on +1
No comments:
Post a Comment