public void DrawCircle(EbReportField field, float printingTop)
        {
            float radius = field.Width / 2;
            float xval   = field.Left + radius;
            float yval   = Report.Height - (printingTop + field.Top + radius);

            cb.SetColorStroke(GetColor(field.BorderColor));
            cb.SetColorFill(GetColor(field.BackColor));
            cb.SetLineWidth(field.Border);
            cb.Circle(xval, yval, radius);
            cb.FillStroke();
        }
        public void DrawTextBox(EbReportField field, string column_val, float printingTop)
        {
            var urx = field.Width + field.Left;
            var ury = Report.Height - (printingTop + field.Top + detailprintingtop);
            var llx = field.Left;
            var lly = Report.Height - (printingTop + field.Top + field.Height + detailprintingtop);

            ColumnText ct1 = new ColumnText(cb);

            ct1.SetSimpleColumn(new Phrase(column_val), llx, lly, urx, ury, 15, Element.ALIGN_LEFT);
            ct1.Go();
        }
        public void DrawVLine(EbReportField field, float printingTop)
        {
            var x1 = field.Left;
            var y1 = Report.Height - (printingTop + field.Top);
            var x2 = x1;
            var y2 = Report.Height - (printingTop + field.Top + field.Height);

            cb.SetColorStroke(GetColor(field.BorderColor));
            cb.SetLineWidth(field.Border);
            cb.MoveTo(x1, y1);
            cb.LineTo(x2, y2);
            cb.Stroke();
        }
        public void DrawRectangle(EbReportField field, float printingTop)
        {
            float x = field.Left;
            float y = Report.Height - (printingTop + field.Top + field.Height);
            float w = field.Width;
            float h = field.Height;

            cb.SetColorStroke(GetColor(field.BorderColor));
            cb.SetColorFill(GetColor(field.BackColor));
            cb.SetLineWidth(field.Border);
            cb.Rectangle(x, y, w, h);
            cb.FillStroke();
        }
        public void DrawEllipse(EbReportField field, float printingTop)
        {
            var x1 = field.Left;
            var y1 = Report.Height - (printingTop + field.Top + field.Height);
            var x2 = field.Left + field.Width;
            var y2 = Report.Height - (printingTop + field.Top);

            cb.SetColorStroke(GetColor(field.BorderColor));
            cb.SetColorFill(GetColor(field.BackColor));
            cb.SetLineWidth(field.Border);
            cb.Ellipse(x1, y1, x2, y2);
            cb.FillStroke();
        }
        public void DrawArrowD(EbReportField field, float printingTop)
        {
            DrawVLine(field, printingTop);
            var x = field.Left;
            var y = Report.Height - (printingTop + field.Top + field.Height);

            cb.SetColorStroke(GetColor(field.BorderColor));
            cb.SetColorFill(GetColor(field.BorderColor));
            cb.SetLineWidth(field.Border);
            cb.MoveTo(x, y);
            cb.LineTo(x - 3, y + 3);
            cb.LineTo(x + 3, y + 3);
            cb.ClosePathFillStroke();
        }
        public void DrawByArrV(EbReportField field, float printingTop)
        {
            DrawVLine(field, printingTop);
            var x1 = field.Left;
            var y1 = Report.Height - (printingTop + field.Top);

            cb.SetColorStroke(GetColor(field.BorderColor));
            cb.SetColorFill(GetColor(field.BorderColor));
            cb.SetLineWidth(field.Border);
            cb.MoveTo(x1, y1);
            cb.LineTo(x1 + 3, y1 - 3);
            cb.LineTo(x1 - 3, y1 - 3);
            var x2 = field.Left;
            var y2 = Report.Height - (printingTop + field.Top + field.Height);

            cb.MoveTo(x2, y2);
            cb.LineTo(x2 - 3, y2 + 3);
            cb.LineTo(x2 + 3, y2 + 3);
            cb.ClosePathFillStroke();
        }
        //public void CallSummerize(string title, int i)
        //{
        //    var column_name = string.Empty;
        //    var column_val = string.Empty;

        //    List<object> SummaryList;
        //    if (Report.PageSummaryFields.ContainsKey(title))
        //    {
        //        SummaryList = Report.PageSummaryFields[title];
        //        foreach (var item in SummaryList)
        //        {
        //            var table = title.Split('.')[0];
        //            column_name = title.Split('.')[1];
        //            column_val = Report.GeFieldtData(column_name, i);
        //            (item as IEbDataFieldSummary).Summarize(column_val);
        //        }
        //    }
        //    if (Report.ReportSummaryFields.ContainsKey(title))
        //    {
        //        SummaryList = Report.ReportSummaryFields[title];
        //        foreach (var item in SummaryList)
        //        {
        //            var table = title.Split('.')[0];
        //            column_name = title.Split('.')[1];
        //            column_val = Report.GeFieldtData(column_name, i);
        //            (item as IEbDataFieldSummary).Summarize(column_val);
        //        }
        //    }

        //}

        //NEED FIX OO
        public void DrawFields(EbReportField field, float section_Yposition, int serialnumber)
        {
            var column_name = string.Empty;
            var column_val  = string.Empty;

            if (Report.PageSummaryFields.ContainsKey(field.Title) || Report.ReportSummaryFields.ContainsKey(field.Title))
            {
                Report.CallSummerize(field.Title, serialnumber);
            }
            if (field is EbDataField)
            {
                if (field is IEbDataFieldSummary)
                {
                    column_val = (field as IEbDataFieldSummary).SummarizedValue.ToString();
                }
                else
                {
                    var table = field.Title.Split('.')[0];
                    column_name = field.Title.Split('.')[1];
                    column_val  = Report.GeFieldtData(column_name, serialnumber);
                }
                field.DrawMe(canvas, Report.Height, section_Yposition, detailprintingtop, column_val);
            }
            if ((field is EbPageNo) || (field is EbPageXY) || (field is EbDateTime) || (field is EbSerialNumber))
            {
                if (field is EbPageNo)
                {
                    column_val = Report.PageNumber.ToString();
                }
                else if (field is EbPageXY)
                {
                    column_val = Report.PageNumber + "/" /* + writer.PageCount*/;
                }
                else if (field is EbDateTime)
                {
                    column_val = DateTime.Now.ToString();
                }
                else if (field is EbSerialNumber)
                {
                    column_val = Report.SerialNumber.ToString();
                }
                field.DrawMe(canvas, Report.Height, section_Yposition, detailprintingtop, column_val);
            }
            else if (field is EbImg)
            {
                byte[] fileByte = this.ServiceClient.Post <byte[]>
                                      (new DownloadFileRequest
                {
                    FileDetails = new FileMeta
                    {
                        FileName = (field as EbImg).Image + ".jpg",
                        FileType = "jpg"
                    }
                });
                field.DrawMe(d, fileByte);
            }
            else if ((field is EbText) || (field is EbReportFieldShape))
            {
                field.DrawMe(canvas, Report.Height, section_Yposition, detailprintingtop);
            }
        }
        public void DrawFields(EbReportField field, float section_Yposition, float detailprintingtop, int i)
        {
            var column_name = "";
            var column_val  = "";

            if (field.GetType() == typeof(EbText))
            {
                column_val = field.Title;
                DrawTextBox(field, column_val, section_Yposition);
            }
            else if (field.GetType() == typeof(EbDataFieldBoolean) || field.GetType() == typeof(EbDataFieldDateTime) || field.GetType() == typeof(EbDataFieldNumeric) || field.GetType() == typeof(EbDataFieldText))
            {
                var table = field.Title.Split('.')[0];
                column_name = field.Title.Split('.')[1];
                column_val  = GeFieldtData(column_name, i);
                DrawTextBox(field, column_val, section_Yposition);
            }
            else if (field.GetType() == typeof(EbCircle))
            {
                if (field.Height == field.Width)
                {
                    DrawCircle(field, section_Yposition);
                }
                else
                {
                    DrawEllipse(field, section_Yposition);
                }
            }
            else if (field.GetType() == typeof(EbRect))
            {
                DrawRectangle(field, section_Yposition);
            }
            else if (field.GetType() == typeof(EbHl))
            {
                DrawHLine(field, section_Yposition);
            }
            else if (field.GetType() == typeof(EbVl))
            {
                DrawVLine(field, section_Yposition);
            }
            else if (field.GetType() == typeof(EbArrR))
            {
                DrawArrowR(field, section_Yposition);
            }
            else if (field.GetType() == typeof(EbArrL))
            {
                DrawArrowL(field, section_Yposition);
            }
            else if (field.GetType() == typeof(EbArrU))
            {
                DrawArrowU(field, section_Yposition);
            }
            else if (field.GetType() == typeof(EbArrD))
            {
                DrawArrowD(field, section_Yposition);
            }
            else if (field.GetType() == typeof(EbByArrH))
            {
                DrawByArrH(field, section_Yposition);
            }
            else if (field.GetType() == typeof(EbByArrV))
            {
                DrawByArrV(field, section_Yposition);
            }
            else if (field.GetType() == typeof(EbPageNo))
            {
                column_val = writer.PageNumber.ToString();
                DrawTextBox(field, column_val, section_Yposition);
            }
            else if (field.GetType() == typeof(EbPageXY))
            {
                ///  column_val = writer.PageNumber + "/" + writer.PageCount;
                DrawTextBox(field, column_val, section_Yposition);
            }
            else if (field.GetType() == typeof(EbDateTime))
            {
                DrawTextBox(field, field.Title, section_Yposition);
            }
        }