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); } } }
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); } } }
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(); }
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(); }
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(); }
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(); }