using DinkToPdf; using DinkToPdf.Contracts; using QuestPDF.Fluent; using QuestPDF.Helpers; using QuestPDF.Infrastructure; using Unit = QuestPDF.Infrastructure.Unit; namespace NetinaShop.Core.EntityServices.OrderHandlers; public class GetOrderInvoiceCommandHandler : IRequestHandler { private readonly IRepositoryWrapper _repositoryWrapper; private readonly IMediator _mediator; private readonly IConverter _converter; public GetOrderInvoiceCommandHandler(IRepositoryWrapper repositoryWrapper,IMediator mediator,IConverter converter) { _repositoryWrapper = repositoryWrapper; _mediator = mediator; _converter = converter; } public async Task Handle(GetOrderInvoiceCommand request, CancellationToken cancellationToken) { var orderLDto = await _mediator.Send(new GetOrderLDtoQuery(request.OrderId), cancellationToken); //var textStyleWithFallback = TextStyle // .Default // .FontSize(18) // .Fallback(y => y // .FontFamily(Fonts.Arial) // .SemiBold() // .Underline(false) // .BackgroundColor(Colors.Red.Lighten4)); //var pdf = Document.Create(container => //{ // container.Page(page => // { // page.Size(PageSizes.A4); // page.Margin(2,Unit.Centimetre); // page.PageColor(Colors.White); // page.DefaultTextStyle(x=>x.FontSize(14)); // page.Header() // .Text(text => // { // text.DefaultTextStyle(textStyleWithFallback); // text.Line("This is normal text."); // text.EmptyLine(); // text.Line("Following line should use font fallback:"); // text.Line("中文文本"); // text.EmptyLine(); // text.Line("The following line contains a mix of known and unknown characters."); // text.Line("Mixed line: This 中文 is 文文 a mixed 本 本 line 本 中文文本!"); // text.EmptyLine(); // text.Span("Emojis work out of the box because of font fallback: 😊😅🥳👍❤😍👌"); // }); // page.Content() // .ContentFromRightToLeft() // .Column(x => // { // x.Spacing(20); // x.Item().Text("فاکتور فروش "); // }); // }); //}).GeneratePdf(); var sb = new StringBuilder(); sb.Append(@"

فاکتور فروش

"); foreach (var emp in orderLDto.OrderProducts) { sb.AppendFormat(@"", emp.ProductName, emp.Count, emp.ProductFee, emp.ProductCost); } sb.Append(@"
Name LastName Age Gender
{0} {1} {2} {3}
"); var globalSettings = new GlobalSettings { ColorMode = ColorMode.Color, Orientation = Orientation.Portrait, PaperSize = PaperKind.A4, Margins = new MarginSettings { Top = 10 }, DocumentTitle = "PDF Report", Out = @"D:\PDFCreator\Employee_Report.pdf" }; var objectSettings = new ObjectSettings { PagesCount = true, HtmlContent = sb.ToString(), WebSettings = { DefaultEncoding = "utf-8", UserStyleSheet = Path.Combine(Directory.GetCurrentDirectory(), "assets", "styles.css") }, HeaderSettings = { FontName = "Arial", FontSize = 9, Right = "Page [page] of [toPage]", Line = true }, FooterSettings = { FontName = "Arial", FontSize = 9, Line = true, Center = "Report Footer" } }; var pdf = new HtmlToPdfDocument() { GlobalSettings = globalSettings, Objects = { objectSettings } }; var file = _converter.Convert(pdf); return file; } }