コード例 #1
0
ファイル: LineTest.cs プロジェクト: bezzad/TextViewer
        public void LtrWordsInRtlContentTest()
        {
            var content = "این یک متن راست به چپ برای تست left to right content می‌باشد.";
            var rtlPara = new Paragraph(0);

            rtlPara.Styles.SetDirection(true);
            var rtlLine     = rtlPara.AddLine(new Line(new Point(1000, 0)));
            var offset      = 0;
            var wordCounter = 0;

            foreach (var word in content.Split(" "))
            {
                var wordInfo = new WordInfo(word, offset, WordType.Normal);
                wordInfo.Styles.SetDirection(Paragraph.IsRtl(word));
                wordInfo.SetFormattedText(_arial, _fontSize, 1, _lineHeight);
                offset += word.Length;
                var space = new SpaceWord(offset++);
                space.Styles.SetDirection(wordInfo.Styles.IsRtl);
                space.SetFormattedText(_arial, _fontSize, 1, _lineHeight);

                rtlLine.AddWord(wordInfo);
                Assert.AreEqual(++wordCounter, rtlLine.Words.Count);
                rtlLine.AddWord(space);
                Assert.AreEqual(++wordCounter, rtlLine.Words.Count);
            }

            rtlLine.Build(false);

            for (var i = 0; i < rtlLine.Words.Count - 1; i++)
            {
                Debug.WriteLine($"Word {i}'th");
                var word     = rtlLine.Words[i];
                var nextWord = rtlLine.Words[i + 1];
                if (word.Styles.IsRtl && nextWord.Styles.IsRtl)      // 0X   <--2--  <--1--  1000X
                {
                    Assert.IsTrue(word.Area.X > nextWord.Area.X);
                }
                else if (word.Styles.IsLtr && nextWord.Styles.IsLtr) // 0X   --1-->  --2-->  1000X
                {
                    Assert.IsTrue(word.Area.X < nextWord.Area.X);
                }
                else
                {
                    Assert.IsTrue(word.Area.X > nextWord.Area.X);
                }
            }
        }
コード例 #2
0
ファイル: LineTest.cs プロジェクト: bezzad/TextViewer
        public void RtlWordsInLtrContentTest()
        {
            var content     = "This is a test content for use متن تستی راست به چپ in ltr content";
            var ltrPara     = new Paragraph(0);
            var ltrLine     = ltrPara.AddLine(new Line(new Point(0, 0)));
            var offset      = 0;
            var wordCounter = 0;

            foreach (var word in content.Split(" "))
            {
                var wordInfo = new WordInfo(word, offset, WordType.Normal);
                wordInfo.Styles.SetDirection(Paragraph.IsRtl(word));
                wordInfo.SetFormattedText(_arial, _fontSize, 1, _lineHeight);
                offset += word.Length;
                var space = new SpaceWord(offset++);
                space.Styles.SetDirection(wordInfo.Styles.IsRtl);
                space.SetFormattedText(_arial, _fontSize, 1, _lineHeight);

                ltrLine.AddWord(wordInfo);
                Assert.AreEqual(++wordCounter, ltrLine.Words.Count);
                ltrLine.AddWord(space);
                Assert.AreEqual(++wordCounter, ltrLine.Words.Count);
            }

            ltrLine.Build(false);

            for (var i = 0; i < ltrLine.Words.Count - 1; i++)
            {
                Debug.WriteLine($"Word {i}'th");
                var word     = ltrLine.Words[i];
                var nextWord = ltrLine.Words[i + 1];
                if (word.Styles.IsRtl && nextWord.Styles.IsRtl)      // 0X   <--2--  <--1--  NX
                {
                    Assert.IsTrue(word.Area.X > nextWord.Area.X);
                }
                else if (word.Styles.IsLtr && nextWord.Styles.IsLtr) // 0X   --1-->  --2-->  NX
                {
                    Assert.IsTrue(word.Area.X < nextWord.Area.X);
                }
                else
                {
                    Assert.IsTrue(word.Area.X < nextWord.Area.X);
                }
            }
        }
コード例 #3
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, 36, 36, 36, 36);
            var w = PdfWriter.GetInstance(doc, Response.OutputStream);

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

            pageEvents.StartPageSet("Outreach/Inreach Report: {0:d}".Fmt(dt));
            if (qid == null)
            {
                doc.Add(new Phrase("no data"));
            }
            else
            {
                IQueryable <ProspectInfo> q = GetProspectInfo(AlphaSort);
                if (!q.Any())
                {
                    doc.Add(new Phrase("no data"));
                }
                else
                {
                    foreach (var p in q)
                    {
                        doc.NewPage();
                        var t = new PdfPTable(new float[] { 62f, 61f, 67f });
                        t.SetNoPadding();
                        var t1 = new PdfPTable(1);
                        t1.SetNoBorder();
                        var t2 = new PdfPTable(new float[] { 30f, 31f });
                        t2.SetNoBorder();
                        var t3 = new PdfPTable(new float[] { 27f, 40f });
                        t3.SetNoBorder();


                        var ph = new Paragraph();
                        ph.Add(new Chunk(p.Name, bfont));
                        ph.Add(new Chunk(" ({0})".Fmt(p.PeopleId), smallfont));
                        t1.AddCell(ph);
                        ph = new Paragraph();
                        ph.AddLine(p.Address, font);
                        ph.AddLine(p.Address2, font);
                        ph.AddLine(p.CityStateZip, font);
                        ph.Add("\n");
                        ph.AddLine(p.HomePhone.FmtFone("H"), font);
                        ph.AddLine(p.CellPhone.FmtFone("C"), font);
                        ph.AddLine(p.EMail, font);
                        t1.AddCell(ph);
                        t.AddCell(t1);

                        t2.Add("Position in Family:", font);
                        t2.Add(p.PositionInFamily, font);
                        t2.Add("Gender:", font);
                        t2.Add(p.Gender, font);
                        t2.Add("Marital Status:", font);
                        t2.Add(p.MaritalStatus, font);
                        t2.Add("", font);
                        t2.CompleteRow();

                        if (p.ChristAsSavior.HasValue())
                        {
                            t2.Add(p.ChristAsSavior, 2, font);
                        }
                        if (p.InfoBecomeAChristian.HasValue())
                        {
                            t2.Add(p.InfoBecomeAChristian, 2, font);
                        }
                        if (p.InterestedInJoining.HasValue())
                        {
                            t2.Add(p.InterestedInJoining, 2, font);
                        }
                        if (p.PleaseVisit.HasValue())
                        {
                            t2.Add(p.PleaseVisit, 2, font);
                        }

                        t.AddCell(t2);

                        t3.Add("Member Status:", font);

                        if (p.MemberStatusID == MemberStatusCode.Member)
                        {
                            t3.Add(p.MemberStatus + " (" + (p.Joined != null ? p.Joined.Value.ToString("d") : "Unknown") + ")", font);
                        }
                        else
                        {
                            t3.Add(p.MemberStatus, font);
                        }

                        t3.Add("Origin:", font);
                        t3.Add(p.Origin, font);
                        t3.Add("Age:", font);
                        t3.Add(p.Age, font);
                        t3.Add("Comments:", 2, font);
                        t3.Add(p.Comment, 2, font);

                        t.AddCell(t3);
                        doc.Add(t);

                        if (p.Family.Count() > 0)
                        {
                            t = new PdfPTable(5);
                            t.SetNoBorder();
                            t.AddRow("Family Summary", bfont);
                            t.AddHeader("Name", bfont);
                            t.AddHeader("Age", bfont);
                            t.AddHeader("Cell Phone", bfont);
                            t.AddHeader("Position in Family", bfont);
                            t.AddHeader("Member Status", bfont);
                            foreach (var fm in p.Family)
                            {
                                t.Add(fm.Name, font);
                                t.Add(fm.Age.ToString(), font);
                                t.Add(fm.CellPhone.FmtFone(), font);
                                t.Add(fm.PositionInFamily, font);
                                t.Add(fm.MemberStatus, font);
                            }
                            doc.Add(t);
                        }
                        if (p.Comments.Count() > 0)
                        {
                            t = new PdfPTable(new float[] { 31f, 134f });
                            t.SetNoBorder();
                            t.AddRow("Comments", bfont);
                            t.AddHeader("Field", bfont);
                            t.AddHeader("Comments", bfont);
                            foreach (var c in p.Comments)
                            {
                                t.Add(c.CommentField, bfont);
                                t.Add(c.Comments, font);
                            }
                            doc.Add(t);
                        }

                        if (p.Attends.Count() > 0)
                        {
                            t = new PdfPTable(new float[] { 24f, 73f, 56f, 34f });
                            t.SetNoBorder();
                            t.AddRow("Attendance Summary", bfont);
                            t.AddHeader("Date", bfont);
                            t.AddHeader("Event", bfont);
                            t.AddHeader("Teacher", bfont);
                            t.AddHeader("Schedule", bfont);
                            foreach (var a in p.Attends)
                            {
                                t.Add(a.MeetingDate.FormatDate(), font);
                                t.Add(a.MeetingName, font);
                                t.Add(a.Teacher, font);
                                t.Add(a.MeetingDate.ToString2("t"), font);
                            }
                            doc.Add(t);
                        }

                        if (p.Contacts.Count() > 0)
                        {
                            t = new PdfPTable(new float[] { 31f, 134f });
                            t.SetNoBorder();
                            t.AddRow("Contacts", font);
                            t.AddHeader("Date/Type/Team", font);
                            t.AddHeader("Comments", font);
                            foreach (var a in p.Contacts)
                            {
                                t.AddHeader("{0:d}\n{1}\n{2}".Fmt(a.ContactDate, a.TypeOfContact, a.Team), font);
                                t.AddHeader(a.Comments, font);
                            }
                            doc.Add(t);
                        }

                        if (p.Memberships.Count() > 0)
                        {
                            t = new PdfPTable(4);
                            t.SetNoBorder();
                            t.AddRow("Current Enrollment", bfont);
                            t.AddHeader("Division", bfont);
                            t.AddHeader("Organization", bfont);
                            t.AddHeader("Member Type", bfont);
                            t.AddHeader("Enroll Date", bfont);
                            foreach (var m in p.Memberships)
                            {
                                t.Add(m.DivisionName, font);
                                t.Add(m.Name, font);
                                t.Add(m.MemberType, font);
                                t.Add(m.EnrollDate.FormatDate(), font);
                            }
                            doc.Add(t);
                        }
                        if (p.FamilyComments.Count() > 0)
                        {
                            t = new PdfPTable(new float[] { 31f, 134f });
                            t.SetNoBorder();
                            t.AddRow("Family Comments", bfont);
                            t.AddHeader("Field", bfont);
                            t.AddHeader("Comments", bfont);
                            foreach (var c in p.FamilyComments)
                            {
                                t.Add(c.CommentField, bfont);
                                t.Add(c.Comments, font);
                            }
                            doc.Add(t);
                        }
                        if (ShowForm)
                        {
                            ContactForm(p);
                        }
                    }
                }
            }
            pageEvents.EndPageSet();
            doc.Close();
        }
コード例 #4
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();
        }
コード例 #5
0
ファイル: AttendeeResult.cs プロジェクト: thewruck/bvcms
        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();
        }
コード例 #6
0
        public override void ExecuteResult(ControllerContext context)
        {
            var ctl = new MailingController {
                UseTitles = titles == true
            };
            var Response = context.HttpContext.Response;

            IEnumerable <MailingController.MailingInfo> q = null;

            switch (format)
            {
            case "Individual":
                q = ctl.FetchIndividualList(sort, id.Value);
                break;

            case "Family":
            case "FamilyMembers":
                q = ctl.FetchFamilyList(sort, id.Value);
                break;

            case "ParentsOf":
                q = ctl.FetchParentsOfList(sort, id.Value);
                break;

            case "CouplesEither":
                q = ctl.FetchCouplesEitherList(sort, id.Value);
                break;

            case "CouplesBoth":
                q = ctl.FetchCouplesBothList(sort, id.Value);
                break;

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

            var document = new Document(PageSize.LETTER);

            document.SetMargins(50f, 36f, 32f, 36f);
            var w = PdfWriter.GetInstance(document, Response.OutputStream);

            document.Open();
            dc = w.DirectContent;

            var cols = new float[] { W, W, W - 25f };
            var t    = new PdfPTable(cols);

            t.SetTotalWidth(cols);
            t.HorizontalAlignment           = Element.ALIGN_CENTER;
            t.LockedWidth                   = true;
            t.DefaultCell.Border            = PdfPCell.NO_BORDER;
            t.DefaultCell.FixedHeight       = H;
            t.DefaultCell.VerticalAlignment = PdfPCell.ALIGN_MIDDLE;
            t.DefaultCell.PaddingLeft       = 8f;
            t.DefaultCell.PaddingRight      = 8f;
            t.DefaultCell.SetLeading(2.0f, 1f);

            if (skip > 0)
            {
                var blankCell = new PdfPCell(t.DefaultCell);

                for (int iX = 0; iX < skip; iX++)
                {
                    t.AddCell(blankCell);
                }
            }

            foreach (var m in q)
            {
                var c  = new PdfPCell(t.DefaultCell);
                var ph = new Paragraph();
                ph.AddLine(m.LabelName, font);
                ph.AddLine(m.Address, font);
                ph.AddLine(m.Address2, font);
                ph.AddLine(m.CityStateZip, font);
                c.AddElement(ph);
                if (usephone)
                {
                    var phone = Util.PickFirst(m.CellPhone.FmtFone("C "), m.HomePhone.FmtFone("H "));
                    var p     = new Paragraph();
                    c.PaddingRight = 7f;
                    p.Alignment    = Element.ALIGN_RIGHT;
                    p.Add(new Chunk(phone, smfont));
                    p.ExtraParagraphSpace = 0f;
                    c.AddElement(p);
                }
                t.AddCell(c);
            }
            t.CompleteRow();
            document.Add(t);

            document.Close();
        }