55 lines
2.3 KiB
C#
55 lines
2.3 KiB
C#
|
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<OrderProductPresenter> 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);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|