public IActionResult GetReport() { var report = new StiReport(); //Load and add font to the resources var fileContent = System.IO.File.ReadAllBytes(StiNetCoreHelper.MapPath(this, "Fonts/Roboto-Black.ttf")); var resource = new StiResource("Roboto-Black", "Roboto-Black", false, StiResourceType.FontTtf, fileContent, false); report.Dictionary.Resources.Add(resource); //Add resource font to the font collection StiFontCollection.AddResourceFont(resource.Name, resource.Content, "ttf", resource.Alias); //Create a text component var dataText = new StiText(); dataText.ClientRectangle = new RectangleD(1, 1, 3, 2); dataText.Text = "Sample Text"; dataText.Font = StiFontCollection.CreateFont("Roboto-Black", 12, FontStyle.Regular); dataText.Border.Side = StiBorderSides.All; report.Pages[0].Components.Add(dataText); return(StiNetCoreDesigner.GetReportResult(this, report)); }
private void Fill() { try { var items = new List <string>(); int index = 0; int selIndex = -1; foreach (var fontFamily in StiFontCollection.GetFontFamilies()) { if (fontFamily.IsStyleAvailable(FontStyle.Regular)) { items.Add(fontFamily.Name); if (this.Text == fontFamily.Name) { selIndex = index; } index++; } } base.Items.Clear(); base.Items.AddRange(items.ToArray()); this.SelectedIndex = selIndex; } catch { } }
public static Font ChangeFontName(Font font, string newFontName) { if (string.IsNullOrEmpty(newFontName)) { return(font); } return(new Font( StiFontCollection.GetFontFamily(newFontName), font.Size, font.Style, font.Unit, font.GdiCharSet, font.GdiVerticalFont)); }
public static FontStyle CorrectStyle(string fontName, FontStyle style) { var isCustomFont = StiFontCollection.IsCustomFont(fontName); FontFamily family = isCustomFont ? StiFontCollection.GetFontFamily(fontName) : new FontFamily(fontName); try { if (family.IsStyleAvailable(style)) { return(style); } else { if ((!family.IsStyleAvailable(FontStyle.Bold)) && (style & FontStyle.Bold) > 0) { style -= FontStyle.Bold; } if ((!family.IsStyleAvailable(FontStyle.Italic)) && (style & FontStyle.Italic) > 0) { style -= FontStyle.Italic; } if ((!family.IsStyleAvailable(FontStyle.Strikeout)) && (style & FontStyle.Strikeout) > 0) { style -= FontStyle.Strikeout; } if ((!family.IsStyleAvailable(FontStyle.Underline)) && (style & FontStyle.Underline) > 0) { style -= FontStyle.Underline; } if (!family.IsStyleAvailable(style)) { if (family.IsStyleAvailable(FontStyle.Bold)) { return(FontStyle.Bold); } if (family.IsStyleAvailable(FontStyle.Italic)) { return(FontStyle.Italic); } else if (family.IsStyleAvailable(FontStyle.Underline)) { return(FontStyle.Underline); } else if (family.IsStyleAvailable(FontStyle.Strikeout)) { return(FontStyle.Strikeout); } } return(style); } } finally { if (!isCustomFont) { family.Dispose(); } } }
public IActionResult PurchaseStatisticsBPrint(SearchFormModel model) { model.Type = (int)Constants.PurchaseType.B; var result = _unitOfWork.PurchaseStatisticsRepository.GetListOfContractByPurchaseStatisticsCd(model); var reportLocation = "./wwwroot/report/PurchaseStatisticsBReport.mrt"; var report = new StiReport(); StiFontCollection.AddFontFile("./wwwroot/assets/fonts/meiryo/Meiryo W53 Regular.ttf", "Meiryo"); StiFontCollection.AddFontFile("./wwwroot/assets/fonts/meiryo/MeiryoUI-Bold.ttf", "Meiryo UI"); report.Load(reportLocation); report.ReportName = string.Concat("購入者リスト集計表 B_", DateTime.Now.ToString(Constants.ExactDateTimeFormat)); report["EventName"] = $"【{result.EventName}】"; report["EventAddress"] = result.EventAddress + (string.IsNullOrEmpty(result.EventPlace) ? string.Empty : $"({result.EventPlace})"); report["PeriodTime"] = result.PeriodTime; report["EventManager"] = result.EventManagerString; report["InputPerson"] = result.InputPersonString; var content = report.Pages["content"]; var border = new StiBorder(StiBorderSides.All, Color.Black, 1, StiPenStyle.Solid); double top = .2, left = 0, basicWidth = .4, basicHeight = .2; var countDays = (result.EndDate - result.StartDate).TotalDays + 1; var dynamicWidth = Math.Round(basicWidth + (7 - countDays) * 1.4 / countDays / 3, 2); DrawTitleB(content, result.StartDate, result.EndDate, dynamicWidth); foreach (var artist in result.ArtistsTotal) { artist.MaxCell = artist.MaxCell < 6 ? 6 : artist.MaxCell; while (artist.MaxCell % 3 != 0) { artist.MaxCell++; } var artistName = new StiText(new RectangleD(left, top, 1.2, Math.Round((double)artist.MaxCell / 3) * .2 + basicHeight)) { Text = artist.ArtistName, Font = new Font("Meiryo", 6), WordWrap = true, Border = border, HorAlignment = StiTextHorAlignment.Center, VertAlignment = StiVertAlignment.Center }; content.Components.Add(artistName); left += artistName.Width; for (var date = result.StartDate; date.Date <= result.EndDate.Date; date = date.AddDays(1)) { var cell = result.RowDetails.FirstOrDefault(x => x.ArtistCd == artist.ArtistCd && x.HoldDate.Date.CompareTo(date.Date) == 0); var emptyText = new StiText(new RectangleD(left, top + artistName.Height - basicHeight, dynamicWidth, basicHeight)) { Text = string.Empty, Border = border, }; content.Components.Add(emptyText); var numberOfContracts = new StiText(new RectangleD(left + dynamicWidth, top + artistName.Height - basicHeight, dynamicWidth, basicHeight)) { Text = (cell?.NumberOfContracts ?? 0).ToString(), Font = new Font("Meiryo", 5), WordWrap = true, Border = border, HorAlignment = StiTextHorAlignment.Right, VertAlignment = StiVertAlignment.Center, Margins = new StiMargins(0, 2, 0, 0) }; content.Components.Add(numberOfContracts); var totalPriceOfContracts = new StiText(new RectangleD(left + dynamicWidth * 2, top + artistName.Height - basicHeight, dynamicWidth, basicHeight)) { Text = (cell?.TotalPriceOfContracts ?? 0).ToString(Constants.CurrencyFormat), Font = new Font("Meiryo", 5), Border = border, HorAlignment = StiTextHorAlignment.Right, VertAlignment = StiVertAlignment.Center, Margins = new StiMargins(0, 2, 0, 0), ShrinkFontToFit = true, ShrinkFontToFitMinimumSize = 4 }; content.Components.Add(totalPriceOfContracts); double topPrice = top, leftPrice = left; for (var i = 0; i < artist.MaxCell; i++) { var rec = new RectangleD(leftPrice, topPrice, dynamicWidth, basicHeight); var price = new StiText(rec) { Text = (cell == null || i >= cell.ContractPrices.Count) ? string.Empty : cell.ContractPrices[i].ToString(Constants.CurrencyFormat), Font = new Font("Meiryo", 5), WordWrap = true, Border = border, HorAlignment = StiTextHorAlignment.Right, VertAlignment = StiVertAlignment.Center, Margins = new StiMargins(0, 2, 0, 0) }; if ((i + 1) % 3 == 0) { leftPrice -= dynamicWidth * 2; topPrice += .2; } else { leftPrice += dynamicWidth; } content.Components.Add(price); } left += dynamicWidth * 3; } var totalContracts = new StiText(new RectangleD(left, top, .6, artistName.Height)) { Text = artist.TotalContracts.ToString(), Font = new Font("Meiryo", 5), WordWrap = true, Border = border, HorAlignment = StiTextHorAlignment.Center, VertAlignment = StiVertAlignment.Center }; content.Components.Add(totalContracts); left += .6; var subTotal = new StiText(new RectangleD(left, top, 1.1, artistName.Height)) { Text = artist.SubTotal.ToString(Constants.CurrencyFormat), Font = new Font("Meiryo", 5), Border = border, HorAlignment = StiTextHorAlignment.Right, VertAlignment = StiVertAlignment.Center, Margins = new StiMargins(0, 2, 0, 0), ShrinkFontToFit = true, ShrinkFontToFitMinimumSize = 4 }; content.Components.Add(subTotal); left = 0; top += artistName.Height; } var totalText = new StiText(new RectangleD(left, top, 1.2, basicHeight)) { Text = "合計", Font = new Font("Meiryo", 6), Border = border, HorAlignment = StiTextHorAlignment.Center, VertAlignment = StiVertAlignment.Center }; content.Components.Add(totalText); left += 1.2; for (var date = result.StartDate; date.Date <= result.EndDate.Date; date = date.AddDays(1)) { var cell = result.DateTotal.FirstOrDefault(x => date.Date.CompareTo(x.Date.Value.Date) == 0); var emptyText = new StiText(new RectangleD(left, top, dynamicWidth, basicHeight)) { Text = string.Empty, Border = border, }; content.Components.Add(emptyText); left += dynamicWidth; var numberOfContracts = new StiText(new RectangleD(left, top, dynamicWidth, basicHeight)) { Text = (cell?.TotalContracts ?? 0).ToString(), Font = new Font("Meiryo", 5), Border = border, HorAlignment = StiTextHorAlignment.Right, VertAlignment = StiVertAlignment.Center, Margins = new StiMargins(0, 2, 0, 0) }; content.Components.Add(numberOfContracts); left += dynamicWidth; var totalPriceOfContracts = new StiText(new RectangleD(left, top, dynamicWidth, basicHeight)) { Text = (cell?.SubTotal ?? 0).ToString(Constants.CurrencyFormat), Font = new Font("Meiryo", 5), Border = border, HorAlignment = StiTextHorAlignment.Right, VertAlignment = StiVertAlignment.Center, Margins = new StiMargins(0, 2, 0, 0), ShrinkFontToFit = true, ShrinkFontToFitMinimumSize = 4 }; content.Components.Add(totalPriceOfContracts); left += dynamicWidth; } var sumNumberOfContracts = new StiText(new RectangleD(left, top, .6, basicHeight)) { Text = result.ArtistsTotal.Sum(x => x.TotalContracts).ToString(), Font = new Font("Meiryo", 5), Border = border, HorAlignment = StiTextHorAlignment.Center, VertAlignment = StiVertAlignment.Center }; content.Components.Add(sumNumberOfContracts); left += sumNumberOfContracts.Width; var total = new StiText(new RectangleD(left, top, 1.1, basicHeight)) { Text = result.ArtistsTotal.Sum(x => x.SubTotal).ToString(Constants.CurrencyFormat), Font = new Font("Meiryo", 5), Border = border, HorAlignment = StiTextHorAlignment.Right, VertAlignment = StiVertAlignment.Center, Margins = new StiMargins(0, 2, 0, 0), ShrinkFontToFit = true, ShrinkFontToFitMinimumSize = 4 }; content.Components.Add(total); return(StiNetCoreReportResponse.PrintAsPdf(report)); }