Esempio n. 1
0
        private List <PdfObject> SetNonStrokingGeneral(PdfLiteral oper, List <PdfObject> operands)
        {
            if (operands.Count == 4)
            {
                PdfNumber r = (PdfNumber)operands[0];
                PdfNumber g = (PdfNumber)operands[1];
                PdfNumber b = (PdfNumber)operands[2];

                BaseColor color     = new BaseColor(r.FloatValue, g.FloatValue, b.FloatValue);
                GrayColor grayColor = this.Convert_RGB_To_Grayscale(color);

                return(new List <PdfObject>()
                {
                    new PdfNumber(grayColor.Gray),
                    new PdfLiteral("g")
                });
            }
            else
            {
                //PdfDictionary o = _modifier.ResourceDictionary.GetAsDict(PdfName.COLORSPACE);
                //PdfObject po = o.GetDirectObject(operands[0] as PdfName);

                return(new List <PdfObject>()
                {
                    new PdfNumber(GrayColor.GRAYBLACK.Gray),
                    new PdfLiteral("g")
                });
            }
        }
Esempio n. 2
0
        private List <PdfObject> SetStrokingGeneral(PdfLiteral oper, List <PdfObject> operands)
        {
            if (operands.Count == 4)
            {
                PdfNumber r = (PdfNumber)operands[0];
                PdfNumber g = (PdfNumber)operands[1];
                PdfNumber b = (PdfNumber)operands[2];

                BaseColor color     = new BaseColor(r.FloatValue, g.FloatValue, b.FloatValue);
                GrayColor grayColor = this.Convert_RGB_To_Grayscale(color);

                return(new List <PdfObject>()
                {
                    new PdfNumber(grayColor.Gray),
                    new PdfLiteral("G")
                });
            }
            else
            {
                return(new List <PdfObject>()
                {
                    new PdfNumber(GrayColor.GRAYBLACK.Gray),
                    new PdfLiteral("G")
                });
            }
        }
Esempio n. 3
0
        private void ReadColors(BinaryReader reader, Swatch swatch, int count, short version)
        {
            for (int i = 0; i < count; i++)
            {
                var space = (ColorSpace)reader.ReadInt16();
                var item1 = reader.ReadUInt16();
                var item2 = reader.ReadUInt16();
                var item3 = reader.ReadUInt16();
                var item4 = reader.ReadUInt16();

                ColorBase color = null;
                switch (space)
                {
                case ColorSpace.RGB:
                    color = new RgbColor(Convert.ToByte(item1 / 256), Convert.ToByte(item2 / 256), Convert.ToByte(item3 / 256));
                    break;

                case ColorSpace.HSB:
                    color = new HsvColor(item1 / 65535f, item2 / 65535f, item3 / 65535f);
                    break;

                case ColorSpace.Grayscale:
                    color = new GrayColor(item1 / 10000f);
                    break;

                case ColorSpace.CMYK:
                    color = new CmykColor(1f - (item1 / 65535f), 1f - (item2 / 65535f), 1f - (item3 / 65535f), 1f - (item4 / 65535f));
                    break;

                case ColorSpace.WideCMYK:
                    color = new CmykColor(item1 / 10000f, item2 / 10000f, item3 / 10000f, item4 / 10000f);
                    break;

                case ColorSpace.Lab:
                    color = new LabColor((short)(item1 / 100), (short)(item2 / 100), (short)(item3 / 100));
                    break;

                default:
                    break;
                }

                if (version == 2)
                {
                    reader.ReadBytes(2);
                    var nameLength = reader.ReadInt16() * 2;
                    if (nameLength > 0)
                    {
                        var nameBuffer = reader.ReadBytes(nameLength);
                        color.Name = Encoding.BigEndianUnicode.GetString(nameBuffer, 0, nameLength - 2);
                    }
                }

                swatch.Colors.Add(color);
            }
        }
Esempio n. 4
0
        public override void ExecuteResult(ControllerContext context)
        {
            var Response = context.HttpContext.Response;

            var list1 = ReportList().ToList();

            if (!list1.Any())
            {
                Response.Write("no data found");
                return;
            }
            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "filename=OrgLeaders.pdf");

            doc = new Document(PageSize.LETTER, 36, 36, 36, 36);
            var w = PdfWriter.GetInstance(doc, Response.OutputStream);

            w.PageEvent = pageEvents;
            doc.Open();
            dc = w.DirectContent;

            foreach (var o in list1)
            {
                var t = StartPageSet(o);

                var color = BaseColor.BLACK;
                foreach (var m in RollsheetModel.FetchOrgMembers(o.OrgId, null)
                         .Where(om => om.MemberTypeId != MemberTypeCode.Member))
                {
                    if (color == BaseColor.WHITE)
                    {
                        color = new GrayColor(240);
                    }
                    else
                    {
                        color = BaseColor.WHITE;
                    }
                    AddRow(t,
                           m.PeopleId,
                           m.Name,
                           m.Email,
                           m.HomePhone,
                           m.CellPhone,
                           m.WorkPhone,
                           m.MemberType,
                           color);
                }
                doc.Add(t);
            }
            pageEvents.EndPageSet();
            doc.Close();
        }
Esempio n. 5
0
        public override void ExecuteResult(ControllerContext context)
        {
            var Response = context.HttpContext.Response;

            var list1 = ReportList().ToList();

            if (!list1.Any())
            {
                Response.Write("no data found");
                return;
            }
            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "filename=foo.pdf");

            doc = new Document(PageSize.LETTER, 36, 36, 36, 36);
            var w = PdfWriter.GetInstance(doc, Response.OutputStream);

            w.PageEvent = pageEvents;
            doc.Open();
            dc = w.DirectContent;

            var haddata = false;

            foreach (var o in list1)
            {
                var t = StartPageSet(o);

                var color = BaseColor.BLACK;
                foreach (var m in RollsheetModel.FetchOrgMembers(o.OrgId, null))
                {
                    if (color == BaseColor.WHITE)
                    {
                        color = new GrayColor(240);
                    }
                    else
                    {
                        color = BaseColor.WHITE;
                    }
                    AddRow(t, m, color);
                    haddata = true;
                }
                doc.Add(t);
            }
            if (!haddata)
            {
                doc.Add(new Phrase("\nno data"));
            }
            pageEvents.EndPageSet();
            doc.Close();
        }
Esempio n. 6
0
        private List <PdfObject> SetNonStrokingRGB(PdfLiteral oper, List <PdfObject> operands)
        {
            // convert RGB to Grayscale
            GrayColor color = this.Convert_RGB_To_Grayscale(
                ((PdfNumber)operands[0]).FloatValue,
                ((PdfNumber)operands[1]).FloatValue,
                ((PdfNumber)operands[2]).FloatValue);

            return(new List <PdfObject>()
            {
                new PdfNumber(color.Gray),
                new PdfLiteral("g")
            });
        }
Esempio n. 7
0
        private List <PdfObject> SetStrokingCMYK(PdfLiteral oper, List <PdfObject> operands)
        {
            // convert CMYK to Grayscale
            GrayColor color = this.Convert_CMYK_To_Grayscale(
                ((PdfNumber)operands[0]).FloatValue,
                ((PdfNumber)operands[1]).FloatValue,
                ((PdfNumber)operands[2]).FloatValue,
                ((PdfNumber)operands[3]).FloatValue);

            return(new List <PdfObject>()
            {
                new PdfNumber(color.Gray),
                new PdfLiteral("G")
            });
        }
Esempio n. 8
0
        private ColorBase ReadColorBlock(BinaryReader reader)
        {
            var value1 = 0f;
            var value2 = 0f;
            var value3 = 0f;
            var value4 = 0f;

            var       colorMode = Encoding.ASCII.GetString(reader.ReadBytes(4));
            ColorBase color;

            switch (colorMode)
            {
            case "RGB ":
                value1 = reader.ReadSingle();
                value2 = reader.ReadSingle();
                value3 = reader.ReadSingle();
                color  = new RgbColor(Convert.ToByte(255 * value1), Convert.ToByte(255 * value2), Convert.ToByte(255 * value3));
                break;

            case "CMYK":
                value1 = reader.ReadSingle();
                value2 = reader.ReadSingle();
                value3 = reader.ReadSingle();
                value4 = reader.ReadSingle();
                color  = new CmykColor(value1, value2, value3, value4);
                break;

            case "Gray":
                value1 = reader.ReadSingle();
                color  = new GrayColor(value1);
                break;

            case "LAB ":
                value1 = reader.ReadSingle();
                value2 = reader.ReadSingle();
                value3 = reader.ReadSingle();
                color  = new LabColor(value1 * 100, value2, value3);
                break;

            default:
                throw new InvalidDataException($"Unsupported color mode '{colorMode}'.");
            }

            var colorSpace = (ColorType)reader.ReadInt16();

            return(color);
        }
Esempio n. 9
0
        public override void ExecuteResult(ControllerContext context)
        {
            var Response = context.HttpContext.Response;

            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "filename=FamilyReport.pdf");

            dt = Util.Now;

            doc = new Document(PageSize.LETTER.Rotate(), 36, 36, 64, 64);
            var w = PdfWriter.GetInstance(doc, Response.OutputStream);

            w.PageEvent = pageEvents;
            doc.Open();
            dc = w.DirectContent;

            t = new PdfPTable(1);
            t.WidthPercentage     = 100;
            t.DefaultCell.Padding = 0;
            t.HeaderRows          = 1;

            t.AddCell(StartPageSet());

            t.DefaultCell.Border         = Rectangle.TOP_BORDER;
            t.DefaultCell.BorderColor    = BaseColor.BLACK;
            t.DefaultCell.BorderColorTop = BaseColor.BLACK;
            t.DefaultCell.BorderWidthTop = 2.0f;

            var q  = DbUtil.Db.PeopleQuery(qid);
            var q2 = from p in q
                     let person = p
                                  group p by p.FamilyId
                                  into g
                                  let hhname = g.First().Family.HeadOfHousehold.Name2
                                               orderby hhname
                                               select new
            {
                members = from m in g.First().Family.People
                          where !m.DeceasedDate.HasValue
                          select new
                {
                    order = m.PositionInFamilyId * 1000 + (m.PositionInFamilyId == 10 ? m.GenderId : 1000 - (m.Age ?? 0)),
                    //                                           order = g.Any(p => p.PeopleId == m.PeopleId) ? 1 :
                    //                                                 m.PositionInFamilyId,
                    person = m
                }
            };

            foreach (var f in q2)
            {
                var ft = new PdfPTable(HeaderWids);
                ft.DefaultCell.SetLeading(2.0f, 1f);
                ft.DefaultCell.Border  = Rectangle.NO_BORDER;
                ft.DefaultCell.Padding = 5;
                var fn    = 1;
                var color = BaseColor.BLACK;
                foreach (var p in f.members.OrderBy(m => m.order))
                {
                    if (color == BaseColor.WHITE)
                    {
                        color = new GrayColor(240);
                    }
                    else
                    {
                        color = BaseColor.WHITE;
                    }

                    AddRow(ft, p.person, fn, color);
                    fn++;
                }
                t.AddCell(ft);
            }
            if (t.Rows.Count > 1)
            {
                doc.Add(t);
            }
            else
            {
                doc.Add(new Phrase("no data"));
            }

            pageEvents.EndPageSet();
            doc.Close();
        }
Esempio n. 10
0
        public override void ExecuteResult(ControllerContext context)
        {
            var Response = context.HttpContext.Response;

            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "filename=foo.pdf");

            dt = Util.Now;

            doc = new Document(PageSize.LETTER.Rotate(), 36, 36, 64, 64);
            var w = PdfWriter.GetInstance(doc, Response.OutputStream);

            var roles = DbUtil.Db.CurrentRoles();
            var i     = (from o in DbUtil.Db.Organizations
                         where o.LimitToRole == null || roles.Contains(o.LimitToRole)
                         where o.OrganizationId == orgid
                         select new
            {
                o.OrganizationName,
                o.LeaderName,
                o.FirstMeetingDate
            }).SingleOrDefault();

            w.PageEvent = new HeadFoot
            {
                HeaderText = $"Recent Attendee Report: {i.OrganizationName} - {i.LeaderName} ({(i.FirstMeetingDate.HasValue ? "since " + i.FirstMeetingDate.FormatDate() : "no First Meeting Date set")})",
                FooterText = "Recent Attendee Report"
            };
            doc.Open();

            var q = Attendees(orgid.Value);

            if (!orgid.HasValue || i == null || !q.Any())
            {
                doc.Add(new Phrase("no data"));
            }
            else
            {
                var mt = new PdfPTable(1);
                mt.SetNoPadding();
                mt.HeaderRows = 1;

                float[] widths = new float[] { 4f, 6f, 7f, 2.6f, 2f, 3f };
                var     t      = new PdfPTable(widths);
                t.DefaultCell.Border            = PdfPCell.NO_BORDER;
                t.DefaultCell.VerticalAlignment = PdfPCell.ALIGN_TOP;
                t.DefaultCell.SetLeading(2.0f, 1f);
                t.WidthPercentage = 100;

                t.AddHeader("Name", boldfont);
                t.AddHeader("Address", boldfont);
                t.AddHeader("Phone/Email", boldfont);
                t.AddHeader("Last Att.", boldfont);
                t.AddHeader("Birthday", boldfont);
                t.AddHeader("Status", boldfont);
                mt.AddCell(t);

                var  color = BaseColor.BLACK;
                bool?v     = null;

                foreach (var p in q)
                {
                    if (color == BaseColor.WHITE)
                    {
                        color = new GrayColor(240);
                    }
                    else
                    {
                        color = BaseColor.WHITE;
                    }

                    t = new PdfPTable(widths);
                    t.SetNoBorder();
                    t.DefaultCell.VerticalAlignment = Element.ALIGN_TOP;
                    t.DefaultCell.BackgroundColor   = color;

                    if (v != p.visitor)
                    {
                        t.Add($"             ------ {(p.visitor ? "Guests and Previous Members" : "Members")} ------", 6, bigboldfont);
                    }

                    v = p.visitor;

                    t.Add(p.Name, font);

                    var ph = new Paragraph();
                    ph.AddLine(p.Address, font);
                    ph.AddLine(p.Address2, font);
                    ph.AddLine(p.CSZ, font);
                    t.AddCell(ph);

                    ph = new Paragraph();
                    ph.AddLine(p.HomePhone.FmtFone("H"), font);
                    ph.AddLine(p.CellPhone.FmtFone("C"), font);
                    ph.AddLine(p.Email, font);
                    t.AddCell(ph);

                    t.Add(p.LastAttend.FormatDate(), font);
                    t.Add(p.Birthday, font);
                    t.Add(p.AttendType, font);
                    t.CompleteRow();

                    t.Add("", font);
                    t.Add(p.AttendStr, 4, monofont);
                    t.AddRight($"{p.AttendPct:n1}{(p.AttendPct.HasValue ? "%" : "")}", font);

                    mt.AddCell(t);
                }
                doc.Add(mt);
            }
            doc.Close();
        }
Esempio n. 11
0
        public override void ExecuteResult(ControllerContext context)
        {
            var Response = context.HttpContext.Response;

            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "filename=foo.pdf");

            dt = Util.Now;

            doc = new Document(PageSize.LETTER.Rotate(), 36, 36, 64, 64);
            var w = PdfWriter.GetInstance(doc, Response.OutputStream);

            var i = (from m in DbUtil.Db.Meetings
                     where m.MeetingId == mtgid
                     select new
            {
                m.Organization.OrganizationName,
                m.Organization.LeaderName,
                m.MeetingDate
            }).SingleOrDefault();

            w.PageEvent = new HeadFoot
            {
                HeaderText = $"Attendee Report: {i.OrganizationName} - {i.LeaderName} {i.MeetingDate:g}",
                FooterText = "Attendee Report"
            };
            doc.Open();

            var q = Attendees(mtgid.Value);

            if (!mtgid.HasValue || i == null || !q.Any())
            {
                doc.Add(new Phrase("no data"));
            }
            else
            {
                var mt = new PdfPTable(1);
                mt.SetNoPadding();
                mt.HeaderRows = 1;

                float[] widths = { 4f, 6f, 7f, 2.6f, 2f, 3f };
                var     t      = new PdfPTable(widths);
                t.DefaultCell.Border            = PdfPCell.NO_BORDER;
                t.DefaultCell.VerticalAlignment = PdfPCell.ALIGN_TOP;
                t.DefaultCell.SetLeading(2.0f, 1f);
                t.WidthPercentage = 100;

                t.AddHeader("Name", boldfont);
                t.AddHeader("Address", boldfont);
                t.AddHeader("Phone/Email", boldfont);
                t.AddHeader("Last Att.", boldfont);
                t.AddHeader("Birthday", boldfont);
                t.AddHeader("Status", boldfont);
                mt.AddCell(t);

                var color = BaseColor.BLACK;

                foreach (var p in q)
                {
                    if (color == BaseColor.WHITE)
                    {
                        color = new GrayColor(240);
                    }
                    else
                    {
                        color = BaseColor.WHITE;
                    }

                    t = new PdfPTable(widths);
                    t.DefaultCell.Border            = PdfPCell.NO_BORDER;
                    t.DefaultCell.VerticalAlignment = PdfPCell.ALIGN_TOP;
                    t.DefaultCell.SetLeading(2.0f, 1f);
                    t.DefaultCell.BackgroundColor = color;
                    t.WidthPercentage             = 100;

                    t.Add(p.Name, font);

                    var ph = new Paragraph();
                    ph.AddLine(p.Address, font);
                    ph.AddLine(p.Address2, font);
                    ph.AddLine(p.CSZ, font);
                    t.AddCell(ph);

                    ph = new Paragraph();
                    ph.AddLine(p.HomePhone.FmtFone("H"), font);
                    ph.AddLine(p.CellPhone.FmtFone("C"), font);
                    ph.AddLine(p.Email, font);
                    t.AddCell(ph);

                    t.Add(p.LastAttend.FormatDate(), font);
                    t.Add(p.Birthday, font);
                    t.Add(p.Status, font);
                    t.CompleteRow();

                    t.Add("", font);
                    t.Add(p.AttendStr, 4, monofont);
                    t.AddRight($"{p.AttendPct:n1}{(p.AttendPct.HasValue ? "%" : "")}", font);

                    mt.AddCell(t);
                }
                doc.Add(mt);
            }
            doc.Close();
        }
Esempio n. 12
0
        public override void ExecuteResult(ControllerContext context)
        {
            var Response = context.HttpContext.Response;

            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "filename=RosterList.pdf");

            doc = new Document(PageSize.LETTER, 36, 36, 36, 36);
            var w = PdfWriter.GetInstance(doc, Response.OutputStream);

            w.PageEvent = pageEvents;
            doc.Open();
            dc = w.DirectContent;

            if (qid != null)
            {
                var color = BaseColor.BLACK;
                var o     = ReportList().First();
                var t     = StartPageSet(o);
                var q     = DbUtil.Db.PeopleQuery(qid.Value);
                var q2    = from p in q
                            let rr = p.RecRegs.FirstOrDefault()
                                     join m in RollsheetModel.FetchOrgMembers(o.OrgId, null) on p.PeopleId equals m.PeopleId into j
                                     from m in j.DefaultIfEmpty()
                                     orderby p.Name2
                                     select new MemberInfo
                {
                    ActiveOther   = rr.ActiveInAnotherChurch ?? false,
                    ThisChurch    = rr.Member ?? false,
                    Address       = p.PrimaryAddress,
                    Address2      = p.PrimaryAddress2,
                    CityStateZip  = p.CityStateZip5,
                    CellPhone     = p.CellPhone,
                    HomePhone     = p.HomePhone,
                    MemberStatus  = p.MemberStatus.Description,
                    MemberType    = m.MemberType,
                    FamMemberThis = p.Family.People.Any(f => f.PositionInFamilyId == 10 && f.MemberStatusId == MemberStatusCode.Member),
                    Name          = p.Name,
                    Medical       = rr.MedicalDescription,
                    PeopleId      = p.PeopleId,
                    Parents       = DbUtil.Db.ParentNamesAndCells(p.PeopleId),
                    Age           = p.Age
                };
                foreach (var m in q2)
                {
                    if (color.Equals(BaseColor.WHITE))
                    {
                        color = new GrayColor(240);
                    }
                    else
                    {
                        color = BaseColor.WHITE;
                    }

                    AddRow(t, m, color);
                }
                if (t.Rows.Count > 1)
                {
                    doc.Add(t);
                }
                else
                {
                    doc.Add(new Phrase("no data"));
                }
            }
            else
            {
                foreach (var o in ReportList())
                {
                    var t = StartPageSet(o);

                    var color = BaseColor.BLACK;

                    var q = from om in DbUtil.Db.OrganizationMembers
                            where om.OrganizationId == o.OrgId
                            where (om.Pending ?? false) == false
                            where om.MemberTypeId != MemberTypeCode.InActive
                            let rr = om.Person.RecRegs.FirstOrDefault()
                                     orderby om.Person.Name2
                                     select new MemberInfo
                    {
                        ActiveOther   = rr.ActiveInAnotherChurch ?? false,
                        ThisChurch    = rr.Member ?? false,
                        Address       = om.Person.PrimaryAddress,
                        Address2      = om.Person.PrimaryAddress2,
                        CityStateZip  = om.Person.CityStateZip5,
                        CellPhone     = om.Person.CellPhone,
                        HomePhone     = om.Person.HomePhone,
                        MemberStatus  = om.Person.MemberStatus.Description,
                        MemberType    = om.MemberType.Description,
                        FamMemberThis = om.Person.Family.People.Any(f => f.PositionInFamilyId == 10 && f.MemberStatusId == MemberStatusCode.Member),
                        Name          = om.Person.Name,
                        Medical       = rr.MedicalDescription,
                        PeopleId      = om.PeopleId,
                        Parents       = DbUtil.Db.ParentNamesAndCells(om.PeopleId),
                        Age           = om.Person.Age
                    };

                    foreach (var m in q)
                    {
                        if (color == BaseColor.WHITE)
                        {
                            color = new GrayColor(240);
                        }
                        else
                        {
                            color = BaseColor.WHITE;
                        }

                        AddRow(t, m, color);
                    }
                    doc.Add(t);
                }
            }

            pageEvents.EndPageSet();
            doc.Close();
        }
Esempio n. 13
0
 /// <summary>
 /// Constructor for <see cref="GrayStrokingColorOperator"/>.
 /// </summary>
 /// <param name="color">The color to use.</param>
 public GrayStrokingColorOperator(GrayColor color)
 {
     Color = color;
 }
Esempio n. 14
0
        public override void ExecuteResult(ControllerContext context)
        {
            var Response = context.HttpContext.Response;

            var list1 = ReportList(orgid, div, schedule, name);

            if (list1.Count() == 0)
            {
                Response.Write("no data found");
                return;
            }
            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "filename=foo.pdf");

            doc = new Document(PageSize.LETTER, 36, 36, 36, 36);
            var w = PdfWriter.GetInstance(doc, Response.OutputStream);

            w.PageEvent = pageEvents;
            doc.Open();
            dc = w.DirectContent;

            foreach (var o in list1)
            {
                var t = StartPageSet(o);

                var color = BaseColor.BLACK;

                var q = from om in DbUtil.Db.OrganizationMembers
                        where om.OrganizationId == o.OrgId
                        where (om.Pending ?? false) == false
                        where om.MemberTypeId != MemberTypeCode.InActive
                        let rr = om.Person.RecRegs.FirstOrDefault()
                                 orderby om.Person.Name2
                                 select new MemberInfo
                {
                    ActiveOther   = rr.ActiveInAnotherChurch ?? false,
                    ThisChurch    = rr.Member ?? false,
                    Address       = om.Person.PrimaryAddress,
                    Address2      = om.Person.PrimaryAddress2,
                    CityStateZip  = om.Person.CityStateZip5,
                    CellPhone     = om.Person.CellPhone,
                    HomePhone     = om.Person.HomePhone,
                    MemberStatus  = om.Person.MemberStatus.Description,
                    MemberType    = om.MemberType.Description,
                    FamMemberThis = om.Person.Family.People.Any(f => f.PositionInFamilyId == 10 && f.MemberStatusId == MemberStatusCode.Member),
                    Name          = om.Person.Name,
                    Medical       = rr.MedicalDescription,
                    PeopleId      = om.PeopleId,
                    Parents       = DbUtil.Db.ParentNamesAndCells(om.PeopleId),
                    Age           = om.Person.Age
                };

                foreach (var m in q)
                {
                    if (color == BaseColor.WHITE)
                    {
                        color = new GrayColor(240);
                    }
                    else
                    {
                        color = BaseColor.WHITE;
                    }
                    AddRow(t, m, color);
                }
                doc.Add(t);
            }
            pageEvents.EndPageSet();
            doc.Close();
        }