static void FillContent(List <ContactReportResultDto> contacts, FilterContactReport filter) { foreach (ContactReportResultDto contact in contacts) { if (filter.ReportType == TransFilterType.Family) { if (filter.Columns.Any(r => (int)r.Column >= 8 && (int)r.Column <= 12)) { FillWithAddresses(filter, contact); } else { FillContRow(contact, filter, "", null); } } if (filter.ReportType == TransFilterType.Member) { if (filter.Columns.Any(r => (int)r.Column >= 8 && (int)r.Column <= 12)) { FillWithAddresses(filter, contact); } else { foreach (ContactReportMambers member in contact.Members) { FillContRow(member, filter, "", null); } } } } }
private static void FillWithAddresses(FilterContactReport filter, ContactReportResultDto contact) { if (filter.ReportType == TransFilterType.Family) { if (contact.Addresses.Any()) { foreach (ContactReportAddress address in contact.Addresses) { FillContRow(contact, filter, address.CompanyName, address); } } else { FillContRow(contact, filter, "", null); } } if (filter.ReportType == TransFilterType.Member) { foreach (ContactReportMambers member in contact.Members) { if (contact.Addresses.Any()) { foreach (ContactReportAddress address in contact.Addresses) { FillContRow(member, filter, address.CompanyName, address); } } else { FillContRow(member, filter, "", null); } } } }
static void FillRow(StringBuilder str, string name, FilterContactReport filter, ContactReportAddress addr, List <ContactReportContactInfo> contactsList) { var contactStr = ""; str.Append($"\"{name}\","); if (addr != null) { GetAddressString(str, addr, filter); } else { GetEmptyAddressString(str, filter); } // var contactsList = contact.Members.SelectMany(r => r.Contacts.Select(t => { t.MemberType = r.TypeID; return t; })).ToList(); foreach (ReportColumn col in filter.Columns.Where(e => (int)e.Column <= 7 && e.IsChecked).OrderBy(e => e.Column)) { var colValue = GetContactsByCol(col.Sort, contactsList); if (!string.IsNullOrEmpty(colValue)) { contactStr += colValue; } } str.Append(contactStr); str.Append("\n"); }
static void GetEmptyAddressString(StringBuilder str, FilterContactReport filter) { if (filter.Columns.Any(e => e.Column == ReportColumns.Address && e.IsChecked)) { str.Append("\"\","); } if (filter.Columns.Any(e => e.Column == ReportColumns.City && e.IsChecked)) { str.Append("\"\","); } if (filter.Columns.Any(e => e.Column == ReportColumns.State && e.IsChecked)) { str.Append("\"\","); } if (filter.Columns.Any(e => e.Column == ReportColumns.Zip && e.IsChecked)) { str.Append("\"\","); } if (filter.Columns.Any(e => e.Column == ReportColumns.Country && e.IsChecked)) { str.Append("\"\","); } if (filter.Columns.Any(e => e.Column == ReportColumns.Company && e.IsChecked)) { str.Append("\"\","); } }
/// <summary> /// return string with full address /// </summary> /// <param name="address"></param> /// <param name="filter"></param> /// <returns></returns> string GetFullAddressLine(ContactReportAddress address, FilterContactReport filter, bool newLineForAddres = false) { var response = ""; if (filter.Columns.Any(e => e.Column == ReportColumns.Company) && !string.IsNullOrEmpty(address.CompanyName)) { response += address.CompanyName + "\n"; } if (filter.Columns.Any(e => e.Column == ReportColumns.Address)) { response += string.IsNullOrEmpty(address.Address) && string.IsNullOrEmpty(address.Address2) ? "" : address.Address + (!string.IsNullOrEmpty(address.Address2) ? $", {address.Address2}" : "") + "\n"; } if (filter.Columns.Any(e => e.Column == ReportColumns.City && e.IsChecked)) { response += $"{address.City}, "; } if (filter.Columns.Any(e => e.Column == ReportColumns.State && e.IsChecked)) { response += $"{address.State} "; } if (filter.Columns.Any(e => e.Column == ReportColumns.Zip && e.IsChecked)) { response += $"{address.Zip} "; } if (filter.Columns.Any(e => e.Column == ReportColumns.Country && e.IsChecked) && (string.IsNullOrEmpty(CountryInSettings) || !string.Equals(address.Country, CountryInSettings, StringComparison.InvariantCultureIgnoreCase))) { response += $", {address.Country}"; } return(response); }
/// <summary> /// return string with full address /// </summary> /// <param name="address"></param> /// <param name="filter"></param> /// <returns></returns> static string GetFullAddressLine(ContactReportAddress address, FilterContactReport filter) { var response = ""; if (filter.Columns.Any(e => e.Column == ReportColumns.Company)) { response += string.IsNullOrEmpty(address.CompanyName) ? "" : address.CompanyName + "\n"; } if (filter.Columns.Any(e => e.Column == ReportColumns.Address)) { response += string.IsNullOrEmpty(address.Address) && string.IsNullOrEmpty(address.Address2) ? "" : address.Address + (!string.IsNullOrEmpty(address.Address2) ? $", {address.Address2}" : "") + "\n"; } if (filter.Columns.Any(e => e.Column == ReportColumns.City)) { response += $" {address.City}"; } if (filter.Columns.Any(e => e.Column == ReportColumns.State)) { response += $" {address.State}"; } if (filter.Columns.Any(e => e.Column == ReportColumns.Zip)) { response += $" {address.Zip}"; } if (filter.Columns.Any(e => e.Column == ReportColumns.Country)) { response += $" {address.Country}"; } return(response); }
public static PdfDocument CreateContectReportDocument(FilterContactReport filter, List <ContactReportResultDto> contacts, string sender) { _document = new Document(); // DefineStyles(); FillEnvelops(contacts, sender, filter); //Test(); return(outputDocument); }
static void FillLabelRows(FilterContactReport filter, List <ContactReportResultDto> contacts) { int countCols = 0; Row row = _table.AddRow(); foreach (ContactReportResultDto contact in contacts.Where(a => a.Addresses != null && a.Addresses.Any())) { if (filter.ReportType == TransFilterType.Family) { foreach (ContactReportAddress addr in contact.Addresses) { countCols++; if ((countCols % 2 == 0) && countCols != 0) { continue; } if (countCols > 5) { countCols = 1; row = _table.AddRow(); } var rowStr = $"{contact.FamilyName}\n{GetFullAddressLine(addr, filter)}"; FillRow(row, countCols - 1, rowStr, false, ParagraphAlignment.Left, VerticalAlignment.Top, marginLeft: new Unit { Millimeter = 3 }); } } if (filter.ReportType == TransFilterType.Member) { foreach (ContactReportAddress addr in contact.Addresses) { foreach (ContactReportMambers member in contact.Members) { countCols++; if ((countCols % 2 == 0) && countCols != 0) { continue; } if (countCols > 5) { countCols = 1; row = _table.AddRow(); } var memberName = (filter.SkipTitles ? "" : member.Title) + member.FirstName + " " + member.LastName; var rowStr = $"{memberName}\n{GetFullAddressLine(addr, filter)}"; FillRow(row, countCols - 1, rowStr, false, ParagraphAlignment.Left, VerticalAlignment.Top, marginLeft: new Unit { Millimeter = 3 }); } } } } }
static void FillGrouped(int colsCount, List <GroupedContactReport> grp, FilterContactReport filter) { foreach (GroupedContactReport grouped in grp) { Row rowHead = _table.AddRow(); FillRow(rowHead, 0, grouped.Name, true, ParagraphAlignment.Left, VerticalAlignment.Center); rowHead.Cells[0].MergeRight = colsCount - 1; FillContent(grouped.Contacts, filter); } }
static void FillContRow(ContactReportResultDto contact, FilterContactReport filter, string companyName, ContactReportAddress address) { colsRows++; Row row = _table.AddRow(); var startIndex = 1; //fam name FillRow(row, 0, contact.FamilyName, false, ParagraphAlignment.Left, VerticalAlignment.Center); //company if (filter.Columns.Any(r => r.Column == ReportColumns.Company)) { startIndex++; FillRow(row, 1, string.IsNullOrEmpty(companyName) ? "" : companyName, false, ParagraphAlignment.Left, VerticalAlignment.Center); } // addresses int position = filter.Columns.Any(r => r.Column == ReportColumns.Company) ? 2 : 1; if (filter.Columns.Any(e => e.Column == ReportColumns.Address && e.IsChecked)) { FillRow(row, position, address != null ? (string.IsNullOrEmpty(address.Address) ? "" : address.Address) : "", false, ParagraphAlignment.Left, VerticalAlignment.Center); startIndex++; position++; } if (filter.Columns.Any(e => (int)e.Column >= 8 && (int)e.Column <= 12 && e.IsChecked)) { startIndex++; FillRow(row, position, address != null ? GetShortAddressLine(address, filter) : "", false, ParagraphAlignment.Left, VerticalAlignment.Center); } //contacts var cols = filter.Columns.Where(e => (int)e.Column >= 0 && (int)e.Column <= 7) .OrderBy(q => q.Column) .ToList(); for (int i = 0; i < cols.Count; i++) { var index = startIndex + i; var col = cols[i]; FillRow(row, index, GetContactsForFamily(contact.Members.ToList(), filter, (int)col.Column), false, ParagraphAlignment.Left, VerticalAlignment.Center); } }
public static string GetCsvString(FilterContactReport filter, List <ContactReportResultDto> contacts) { StringBuilder str = new StringBuilder(); bool colAmount; // FillColumns(str, filter); str.Append("sep=,\n"); str.Append("\"Name\","); FillAdressColumns(str, filter.Columns.Where(r => (int)r.Column >= 8 && (int)r.Column <= 13 && r.IsChecked).OrderBy(e => e.Column).ToList()); FillContactsColumns(str, filter.Columns.Where(r => r.IsChecked).OrderBy(e => e.Column).ToList(), out colAmount, contacts); str.Append("\n"); FillRows(str, filter, contacts); return(str.ToString()); }
/// <summary> /// Use for contact report /// </summary> /// <param name="filter">object with params for filtering</param> /// <returns>List of filtered contacts</returns> public IList <ContactReportResultDto> FilterContactReport(FilterContactReport filter) { Mapper.Initialize(r => r.CreateMap <FilterContactReport, SelectContactReportStoredProcedure>() .ForMember(q => q.TransactionSort, e => e.MapFrom(t => (int)t.TransactionSort)) .ConstructUsing( x => QueryProvider.CreateQuery <SelectContactReportStoredProcedure>(ConfigurationManager.AppSettings["schema"])) ); var queryMember = Mapper.Map <FilterContactReport, SelectContactReportStoredProcedure>(filter); var resultq = queryMember.Execute(); return(!resultq.HasNoDataRows ? ConvertResultToContactReport(resultq.ResultToArray <ContactReportDto>().ToList()) : new List <ContactReportResultDto>()); }
string GetContactLine(ContactReportContactInfo contact, FilterContactReport filter, int memberType) { var prefix = ""; if (memberType == 1) { prefix = "His: "; } if (memberType == 2) { prefix = "Her: "; } string isNc = contact.NoCall != null && (bool)contact.NoCall && filter.ShowNC ? "(NC)" : ""; return($"{prefix}{isNc} {contact.PhoneNumber}"); }
static int GetColCount(FilterContactReport filter) { int resp = 1; //contact info cols resp += filter.Columns.Count(r => (int)r.Column >= 0 && (int)r.Column <= 7); //address cols if (filter.Columns.Any(r => (int)r.Column >= 8 && (int)r.Column <= 12)) { resp += 2; } if (filter.Columns.Any(r => r.Column == ReportColumns.Company)) { resp++; } return(resp); }
private static void FillRows(StringBuilder str, FilterContactReport filter, List <ContactReportResultDto> contacts) { foreach (var contact in contacts) { var contactStr = ""; if (filter.ReportType == TransFilterType.Family) { if (contact.Addresses != null && contact.Addresses.Any()) { foreach (ContactReportAddress addr in contact.Addresses) { FillRow(str, contact.FamilyName, filter, addr, contact.Members.SelectMany(r => r.Contacts.Select(t => { t.MemberType = r.TypeID; return(t); })).ToList()); } } else { FillRow(str, contact.FamilyName, filter, null, contact.Members.SelectMany(r => r.Contacts.Select(t => { t.MemberType = r.TypeID; return(t); })).ToList()); } } if (filter.ReportType == TransFilterType.Member) { if (contact.Addresses != null && contact.Addresses.Any()) { foreach (ContactReportAddress addr in contact.Addresses) { foreach (ContactReportMambers member in contact.Members) { var memberName = (filter.SkipTitles ? "" : member.Title) + member.FirstName + " " + member.LastName; FillRow(str, memberName, filter, addr, member.Contacts.Select(t => { t.MemberType = member.TypeID; return(t); }).ToList()); } } } else { foreach (ContactReportMambers member in contact.Members) { var memberName = (filter.SkipTitles ? "" : member.Title) + member.FirstName + " " + member.LastName; FillRow(str, memberName, filter, null, member.Contacts.Select(t => { t.MemberType = member.TypeID; return(t); }).ToList()); } } } } }
static void FillContRow(ContactReportMambers member, FilterContactReport filter, string companyName, ContactReportAddress address) { colsRows++; Row row = _table.AddRow(); bool addressChecked = filter.Columns.Any(r => (int)r.Column >= 8 && (int)r.Column <= 12); // var startIndex = addressChecked ? 2 : 1; var startIndex = 1; //fam name FillRow(row, 0, (filter.SkipTitles ? "" : member.Title) + member.FirstName + " " + member.LastName, false, ParagraphAlignment.Left, VerticalAlignment.Center); //company if (filter.Columns.Any(r => r.Column == ReportColumns.Company)) { startIndex++; FillRow(row, 1, string.IsNullOrEmpty(companyName) ? "" : companyName, false, ParagraphAlignment.Left, VerticalAlignment.Center); } // addresses int position = filter.Columns.Any(r => r.Column == ReportColumns.Company) ? 2 : 1; if (filter.Columns.Any(e => e.Column == ReportColumns.Address && e.IsChecked)) { FillRow(row, position, address != null ? (string.IsNullOrEmpty(address.Address) ? "" : address.Address) : "", false, ParagraphAlignment.Left, VerticalAlignment.Center); startIndex++; position++; } if (filter.Columns.Any(e => (int)e.Column >= 8 && (int)e.Column <= 12 && e.IsChecked)) { startIndex++; FillRow(row, position, address != null ? GetShortAddressLine(address, filter) : "", false, ParagraphAlignment.Left, VerticalAlignment.Center); } FillContactsForMember(row, startIndex, member, filter); }
int GetColCount(FilterContactReport filter) { int resp = 1; //contact info cols resp += filter.Columns.Count(r => (int)r.Column >= 1 && (int)r.Column <= 8 && r.IsChecked); //address cols if (filter.Columns.Any(r => r.Column == ReportColumns.Address && r.IsChecked)) { resp++; } if (filter.Columns.Any(r => (int)r.Column >= 10 && (int)r.Column <= 13 && r.IsChecked)) { resp++; } if (filter.Columns.Any(r => r.Column == ReportColumns.Company && r.IsChecked)) { resp++; } return(resp); }
List <GroupedContactReport> GroupBy(List <ContactReportResultDto> contacts, FilterContactReport filter) { if (filter.GroupBy == "City") { return(GroupByCity(contacts)); } if (filter.GroupBy == "State") { return(GroupByState(contacts)); } if (filter.GroupBy == "Zip") { return(GroupByZip(contacts)); } if (filter.GroupBy == "Country") { return(GroupByCountry(contacts)); } return(null); }
/// <summary> /// Return addres line without address /// </summary> /// <param name="address"></param> /// <param name="filter"></param> /// <returns></returns> static string GetShortAddressLine(ContactReportAddress address, FilterContactReport filter) { var response = ""; if (filter.Columns.Any(e => e.Column == ReportColumns.City)) { response += $" {address.City}"; } if (filter.Columns.Any(e => e.Column == ReportColumns.State)) { response += $" {address.State}"; } if (filter.Columns.Any(e => e.Column == ReportColumns.Zip)) { response += $" {address.Zip}"; } if (filter.Columns.Any(e => e.Column == ReportColumns.Country)) { response += $" {address.Country}"; } return(response); }
public static Document CreateContectReportDocument(FilterContactReport filter, List <ContactReportResultDto> contacts) { _document = new Document { Info = { Title = filter.Name } }; var cosCount = GetColCount(filter); DefineStyles(); // CreateEnvelopPage(contacts, sender); //Envelopes //LABELS CreateLabelPage(); FillLabelRows(filter, contacts); //TABLE //CreateConcatcPage(filter, cosCount); //if (filter.Columns.Any(r => (int)r.Column >= 8 && (int)r.Column <= 12) && !string.Equals(filter.GroupBy, "None", StringComparison.InvariantCultureIgnoreCase)) // FillGrouped(cosCount, GroupBy(contacts, filter), filter); //else // FillContent(contacts, filter); //AddBottom("Contact Report Summary", "Number of Addresses", colsRows); return(_document); }
static int CreateColumns(FilterContactReport filter, int colsCount, Unit?sectionWidth = null) { Unit?colWidth = null; if (sectionWidth != null) { colWidth = sectionWidth / colsCount; } List <ReportColumn> checkedCols = new List <ReportColumn>(); Column column = _table.AddColumn(); //first name col column.Format.Alignment = ParagraphAlignment.Center; if (colWidth != null) { column.Width = (Unit)colWidth; } //create cols obj checkedCols = filter.Columns.Where(r => r.IsChecked).ToList(); //company if (checkedCols.Any(e => e.Column == ReportColumns.Company)) { column = _table.AddColumn(); if (colWidth != null) { column.Width = (Unit)colWidth; } column.Format.Alignment = ParagraphAlignment.Right; } //Address if (checkedCols.Any(e => (int)e.Column >= 8 && (int)e.Column <= 12)) { //col for address if (checkedCols.Any(r => r.Column == ReportColumns.Address && r.IsChecked)) { column = _table.AddColumn(); if (colWidth != null) { column.Width = (Unit)colWidth; } column.Format.Alignment = ParagraphAlignment.Right; } //col for city,state,zip, country if (checkedCols.Any(e => (int)e.Column >= 8 && (int)e.Column <= 12 && e.IsChecked)) { column = _table.AddColumn(); if (colWidth != null) { column.Width = (Unit)colWidth; } column.Format.Alignment = ParagraphAlignment.Right; } } //Contact data foreach (ReportColumn col in checkedCols.Where(e => (int)e.Column <= 7).OrderBy(e => e.Column)) { column = _table.AddColumn(); if (colWidth != null) { column.Width = (Unit)colWidth; } column.Format.Alignment = ParagraphAlignment.Right; } //fill col obj var startedIsnex = 1; Row row = _table.AddRow(); //Name FillRow(row, ParagraphAlignment.Center, true, TableHeaderBackground, 0, Grouping.GetTranslation("new_report_Name"), true, ParagraphAlignment.Left, VerticalAlignment.Bottom, true, TableHeaderFont, fontSize: 11); //Company if (checkedCols.Any(e => e.Column == ReportColumns.Company)) { startedIsnex++; var col = checkedCols.First(e => e.Column == ReportColumns.Company); FillRow(row, ParagraphAlignment.Center, true, TableHeaderBackground, 1, Grouping.GetTranslation(Grouping.GetTranslation(col.Name)), true, ParagraphAlignment.Center, VerticalAlignment.Bottom, true, TableHeaderFont, fontSize: 11); } //Address if (checkedCols.Any(e => (int)e.Column >= 8 && (int)e.Column <= 12)) { var colName = ""; var colPosition = checkedCols.Any(r => r.Column == ReportColumns.Company) ? 2 : 1; if (checkedCols.Any(e => e.Column == ReportColumns.Address && e.IsChecked)) { colName += Grouping.GetTranslation(checkedCols.First(e => e.Column == ReportColumns.Address).Name); startedIsnex++; FillRow(row, ParagraphAlignment.Center, true, TableHeaderBackground, colPosition, colName, true, ParagraphAlignment.Center, VerticalAlignment.Bottom, true, TableHeaderFont, fontSize: 11); colPosition++; } colName = ""; if (checkedCols.Any(e => (int)e.Column >= 8 && (int)e.Column <= 12 && e.IsChecked)) { if (checkedCols.Any(e => e.Column == ReportColumns.City)) { colName += $"{Grouping.GetTranslation(checkedCols.First(e => e.Column == ReportColumns.City).Name)}"; } if (checkedCols.Any(e => e.Column == ReportColumns.State)) { colName += $"/{Grouping.GetTranslation(checkedCols.First(e => e.Column == ReportColumns.State).Name)}"; } if (checkedCols.Any(e => e.Column == ReportColumns.Zip)) { colName += $"/{Grouping.GetTranslation(checkedCols.First(e => e.Column == ReportColumns.Zip).Name)}"; } if (checkedCols.Any(e => e.Column == ReportColumns.Country)) { colName += $"/{Grouping.GetTranslation(checkedCols.First(e => e.Column == ReportColumns.Country).Name)}"; } startedIsnex++; FillRow(row, ParagraphAlignment.Center, true, TableHeaderBackground, colPosition, colName, true, ParagraphAlignment.Center, VerticalAlignment.Bottom, true, TableHeaderFont, fontSize: 11); } } //Contact data checkedCols = checkedCols.Where(e => (int)e.Column <= 7).OrderBy(e => e.Column).ToList(); for (var i = 0; i < checkedCols.Count; i++) { var index = startedIsnex + i; ReportColumn col = checkedCols[i]; FillRow(row, ParagraphAlignment.Center, true, TableHeaderBackground, index, Grouping.GetTranslation(Grouping.GetTranslation(col.Name)), true, ParagraphAlignment.Center, VerticalAlignment.Bottom, true, TableHeaderFont, fontSize: 11); } var colCount = row.Cells.Count; return(colCount); }
static string GetContactStringFromList(List <ContactReportContactInfo> contacts, FilterContactReport filter, int memberType) { return(contacts.Aggregate("", (current, cont) => current + (GetContactLine(cont, filter, memberType) + "\n"))); }
static void FillContactsForMember(Row row, int startIndex, ContactReportMambers member, FilterContactReport filter) { var cols = filter.Columns.Where(e => (int)e.Column >= 0 && (int)e.Column <= 7).OrderBy(w => w.Column).ToList(); for (int i = 0; i < cols.Count(); i++) { var index = startIndex + i; var col = cols[i]; FillRow(row, index, GetContactStringFromList(member.Contacts.Where(r => r.PhoneTypeID == (int)col.Column).ToList(), filter, member.TypeID) , false, ParagraphAlignment.Left, VerticalAlignment.Center); } }
static string GetContactsForFamily(List <ContactReportMambers> members, FilterContactReport filter, int colId) { return(members.Aggregate("", (current, member) => current + (GetContactStringFromList(member.Contacts.Where(r => r.PhoneTypeID == colId).ToList(), filter, member.TypeID) + "\n"))); }
static List <ContactReportResultDto> GetContactReportResult(FilterContactReport filter) { return(service.FilterContactReport(filter).ToList()); }
static void GetAddressString(StringBuilder str, ContactReportAddress address, FilterContactReport filter) { if (filter.Columns.Any(e => e.Column == ReportColumns.Address && e.IsChecked)) { str.Append($"\"{address.Address}\","); } if (filter.Columns.Any(e => e.Column == ReportColumns.City && e.IsChecked)) { str.Append($"\"{address.City}\","); } if (filter.Columns.Any(e => e.Column == ReportColumns.State && e.IsChecked)) { str.Append($"\"{address.State}\","); } if (filter.Columns.Any(e => e.Column == ReportColumns.Zip && e.IsChecked)) { str.Append($"\"{address.Zip}\","); } if (filter.Columns.Any(e => e.Column == ReportColumns.Country && e.IsChecked)) { str.Append($"\"{address.Country}\","); } if (filter.Columns.Any(e => e.Column == ReportColumns.Company && e.IsChecked)) { str.Append($"\"{address.CompanyName}\","); } }
static void FillEnvelops(List <ContactReportResultDto> contacts, string senderAddr, FilterContactReport filter) { foreach (ContactReportResultDto contact in contacts.Where(e => e.Addresses != null && e.Addresses.Any())) { foreach (ContactReportAddress addr in contact.Addresses) { if (filter.ReportType == TransFilterType.Family) { AddEnvelopPage(senderAddr, contact.FamilyName, addr, filter); } if (filter.ReportType == TransFilterType.Member) { CreateEnvelopsForMembers(senderAddr, contact, addr, filter); } } } }
private static void CreateEnvelopsForMembers(string senderAddr, ContactReportResultDto contact, ContactReportAddress addr, FilterContactReport filter) { foreach (ContactReportMambers member in contact.Members) { AddEnvelopPage(senderAddr, (filter.SkipTitles ? "" : member.Title) + member.FirstName + " " + member.LastName, addr, filter); } }
static int CreateConcatcPage(FilterContactReport filter, int colCount) { // Each MigraDoc document needs at least one section. _section = _document.AddSection(); //_section.PageSetup = _document.DefaultPageSetup.Clone(); var pageSize = _document.DefaultPageSetup.Clone(); // pageSize.Orientation = colCount < 5 ? Orientation.Portrait : Orientation.Landscape; pageSize.Orientation = Orientation.Portrait; pageSize.PageFormat = PageFormat.A4; pageSize.LeftMargin = new Unit { Centimeter = 1.5 }; pageSize.RightMargin = new Unit { Centimeter = 1.5 }; pageSize.OddAndEvenPagesHeaderFooter = true; pageSize.StartingNumber = 1; _section.PageSetup = pageSize; Paragraph paragraph = _section.Headers.Primary.AddParagraph(); paragraph.AddText(filter.Name); paragraph.Format.Font.Size = 9; paragraph.Format.Alignment = ParagraphAlignment.Center; // Create the item table _table = _section.AddTable(); _table.Style = "Table"; _table.Borders.Color = TableBorder; _table.Borders.Width = 0.25; _table.Borders.Left.Width = 0.5; _table.Borders.Right.Width = 0.5; _table.Rows.LeftIndent = 0; _table.Rows.HeightRule = RowHeightRule.AtLeast; _table.Rows.Height = 12; Unit curPageWidth = new Unit { Centimeter = pageSize.Orientation == Orientation.Landscape ? 29.7 : 21 }; Unit?pageWidth = curPageWidth - _section.PageSetup.LeftMargin - _section.PageSetup.RightMargin; colCount = CreateColumns(filter, colCount, pageWidth); _table.SetEdge(0, 0, colCount, 1, Edge.Box, BorderStyle.Single, 0.75, Color.Empty); //page num var style = _document.Styles[StyleNames.Footer]; style.ParagraphFormat.AddTabStop("9cm", TabAlignment.Center); style.Font.Name = "Verdana"; style.Font.Name = "Times New Roman"; style.Font.Size = 9; style.Font.Color = FontColor; // Create a paragraph with centered page number. See definition of style "Footer". Paragraph paragraph2 = new Paragraph(); paragraph2.Style = StyleNames.Footer; paragraph2.AddTab(); paragraph2.AddPageField(); // Add paragraph to footer for odd pages. _section.Footers.Primary.Add(paragraph2); // Add clone of paragraph to footer for odd pages. Cloning is necessary because an object must // not belong to more than one other object. If you forget cloning an exception is thrown. _section.Footers.EvenPage.Add(paragraph2.Clone()); return(colCount); }
static void AddEnvelopPage(string senderAddr, string receipt, ContactReportAddress addr, FilterContactReport filter) { XUnit pdfWidth = new XUnit(4.125, XGraphicsUnit.Inch); XUnit pdfHeight = new XUnit(9.5, XGraphicsUnit.Inch); XFont font = new XFont("Times New Roman", 10, XFontStyle.Bold); outputDocument.PageLayout = PdfPageLayout.SinglePage; PdfPage page = outputDocument.AddPage(); page.Height = pdfHeight; page.Width = pdfWidth; page.Orientation = PageOrientation.Landscape; // Get an XGraphics object for drawing XGraphics gfx = XGraphics.FromPdfPage(page); //sender XTextFormatter tf = new XTextFormatter(gfx); XRect rect = new XRect(30, 30, (pdfHeight / 2) - 30, (pdfWidth / 2) - 30); // gfx.DrawRectangle(XBrushes.SeaShell, rect); tf.Alignment = XParagraphAlignment.Left; tf.DrawString(senderAddr, font, XBrushes.Black, rect, XStringFormats.TopLeft); // recipient rect = new XRect((pdfHeight / 2) - 30, (pdfWidth / 2) - 30, pdfHeight, pdfWidth); tf.Alignment = XParagraphAlignment.Left; tf.DrawString($"{receipt}\n" + GetFullAddressLine(addr, filter), font, XBrushes.Black, rect, XStringFormats.TopLeft); }