using demo_trade.UI.Presenters; using iText.IO.Font.Constants; using iText.Kernel.Font; using iTextSharp.text; using iTextSharp.text.pdf; using Microsoft.EntityFrameworkCore.Metadata.Internal; using System; using System.Collections.Generic; using System.IO; using System.Text; using PdfFont = iText.Kernel.Font.PdfFont; namespace demo_trade.Models { public class Ticket { public int OrderID { get; set; } public string PickupPointName{ get; set; } public decimal OrderSumCost{ get; set; } public string? ClientName { get; set; } = null; public DateOnly OrderDate { get; set; } public DateOnly OrderDelivery { get; set; } public List Products { get; set; } public int OrderCode { get; set; } public void GeneratePDF(string path) { using var document = new Document(); PdfWriter.GetInstance(document, new FileStream(path, FileMode.OpenOrCreate)); document.Open(); Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); BaseFont baseFont = BaseFont.CreateFont("C:\\Windows\\Fonts\\arial.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); Font font = new Font(baseFont, iTextSharp.text.Font.DEFAULTSIZE, iTextSharp.text.Font.NORMAL); Font fontCode = new Font(baseFont, iTextSharp.text.Font.DEFAULTSIZE, iTextSharp.text.Font.BOLD); Paragraph paragraph = new Paragraph(String.Format("Order №{0} Create {1} Data delivery {2}\nПункт выдачи: {3}\nСумма заказа: {4}", OrderID, OrderDate, OrderDelivery, PickupPointName, OrderSumCost), font); if (ClientName != null) paragraph.Add(String.Format("\nClient name: {0}", ClientName)); document.Add(paragraph); foreach (OrderProductPresenter presenter in Products) { document.Add(new Phrase(String.Format("Article: {0}, Name: {2}, Count: {1}\n", presenter.ArticleNumber, presenter.ProductCount, presenter.Name), font)); } GenerateCode(); document.Add(new Paragraph(String.Format("Code: {0}", OrderCode), fontCode)); document.Close(); } private void GenerateCode() { OrderCode = new Random().Next(100, 999); } } }