usingQuestPDF.Fluent;usingQuestPDF.Helpers;usingQuestPDF.Infrastructure;// Set QuestPDF license (Community license for non-commercial use)QuestPDF.Settings.License=LicenseType.Community;
Sample Code
// Generate A4 documentDocument.Create(container=>{container.Page(page=>{// Set page to A4 sizepage.Size(PageSizes.A4);page.Margin(2,Unit.Centimetre);page.PageColor(Colors.White);page.DefaultTextStyle(x=>x.FontSize(12));// Headerpage.Header().Text("A4 Document Sample with QuestPDF").SemiBold().FontSize(20).FontColor(Colors.Blue.Medium);// Contentpage.Content().PaddingVertical(1,Unit.Centimetre).Column(column=>{column.Spacing(10);column.Item().Text("Introduction").FontSize(16).Bold();column.Item().Text(text=>{text.Span("This is a sample A4 document generated using ");text.Span("QuestPDF").Bold();text.Span(". QuestPDF is a modern open-source .NET library for PDF document generation.");});column.Item().PaddingTop(10).Text("Document Information").FontSize(16).Bold();column.Item().Table(table=>{table.ColumnsDefinition(columns=>{columns.ConstantColumn(150);columns.RelativeColumn();});table.Cell().Border(1).Padding(5).Text("Page Size:").Bold();table.Cell().Border(1).Padding(5).Text("A4 (210mm × 297mm)");table.Cell().Border(1).Padding(5).Text("Orientation:").Bold();table.Cell().Border(1).Padding(5).Text("Portrait");table.Cell().Border(1).Padding(5).Text("Created Date:").Bold();table.Cell().Border(1).Padding(5).Text(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));});column.Item().PaddingTop(10).Text("Sample Features").FontSize(16).Bold();column.Item().Text("This document demonstrates:");column.Item().PaddingLeft(20).Text("• A4 page size configuration");column.Item().PaddingLeft(20).Text("• Header and footer sections");column.Item().PaddingLeft(20).Text("• Text formatting (bold, colors, sizes)");column.Item().PaddingLeft(20).Text("• Tables with borders");column.Item().PaddingLeft(20).Text("• Page numbering");column.Item().PaddingTop(10).Text("Lorem Ipsum").FontSize(16).Bold();column.Item().Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit. "+"Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. "+"Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris "+"nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in "+"reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.");});// Footerpage.Footer().AlignCenter().Text(text=>{text.Span("Page ");text.CurrentPageNumber();text.Span(" of ");text.TotalPages();});});}).GeneratePdf("A4_Sample_Document.pdf");Console.WriteLine("A4 document generated successfully: A4_Sample_Document.pdf");Console.WriteLine($"File location: {Path.GetFullPath("A4_Sample_Document.pdf")}");
Sample Code 2
GeneratePdf("SalesReport.pdf");Console.WriteLine("PDF Generated Successfully.");staticvoidGeneratePdf(stringfileName){varbase64Image=GetBase64Image();// Get chart image in Base64 formatDocument.Create(container=>{container.Page(page=>{page.Size(PageSizes.A4);page.Margin(30);// Header with Imagepage.Header().Column(column=>{if(!string.IsNullOrEmpty(base64Image)){column.Item().AlignCenter().Image(base64Image).FitWidth();}column.Item().Text("Monthly Sales Report").Bold().FontSize(24).AlignCenter().FontColor(Colors.Blue.Darken2);});page.Content().PaddingVertical(20).Column(column=>{column.Spacing(15);// Sales Summary Tablecolumn.Item().Text("Sales Summary").FontSize(18).Bold().FontColor(Colors.Green.Darken2);column.Item().Table(table=>{table.ColumnsDefinition(columns=>{columns.RelativeColumn();columns.RelativeColumn();columns.RelativeColumn();columns.RelativeColumn();});table.Header(header=>{header.Cell().Text("Product").Bold();header.Cell().Text("Quantity Sold").Bold();header.Cell().Text("Revenue").Bold();header.Cell().Text("Profit").Bold();});AddTableRow(table,"Laptop","120","$120,000","$30,000",Colors.White);AddTableRow(table,"Smartphone","250","$75,000","$20,000",Colors.Grey.Lighten3);AddTableRow(table,"Tablet","80","$40,000","$10,000",Colors.White);AddTableRow(table,"Monitor","60","$18,000","$5,000",Colors.Grey.Lighten3);});// Top Performers Tablecolumn.Item().Text("Top Performers").FontSize(18).Bold().FontColor(Colors.Red.Darken2);column.Item().Table(nestedTable=>{nestedTable.ColumnsDefinition(columns=>{columns.RelativeColumn();columns.RelativeColumn();});nestedTable.Header(header=>{header.Cell().Text("Product").Bold();header.Cell().Text("Revenue").Bold();});AddNestedTableRow(nestedTable,"Laptop","$120,000",Colors.White);AddNestedTableRow(nestedTable,"Smartphone","$75,000",Colors.Grey.Lighten3);AddNestedTableRow(nestedTable,"Tablet","$40,000",Colors.White);});// Chart Image (Base64)if(!string.IsNullOrEmpty(base64Image)){column.Item().Text("Company Sales Chart").FontSize(16).Bold().FontColor(Colors.Purple.Darken2);column.Item().Image(base64Image).FitWidth();}// Disclaimercolumn.Item().Text("Disclaimer: This report is for internal use only. Data may change after final audits.").FontSize(10).Italic().FontColor(Colors.Grey.Darken1);});// Footer with Page Numberingpage.Footer().AlignCenter().Text(text=>{text.Span("Page ").FontColor(Colors.Grey.Darken2);text.CurrentPageNumber().FontColor(Colors.Blue.Darken2);text.Span(" of ").FontColor(Colors.Grey.Darken2);text.TotalPages().FontColor(Colors.Blue.Darken2);});});}).GeneratePdf(fileName);}staticvoidAddTableRow(TableDescriptortable,stringproduct,stringquantity,stringrevenue,stringprofit,stringbackgroundColor){table.Cell().Background(backgroundColor).Text(product).FontSize(12);table.Cell().Background(backgroundColor).Text(quantity).FontSize(12);table.Cell().Background(backgroundColor).Text(revenue).FontSize(12).FontColor(Colors.Green.Darken2);table.Cell().Background(backgroundColor).Text(profit).FontSize(12).FontColor(Colors.Green.Darken2);}staticvoidAddNestedTableRow(TableDescriptortable,stringproduct,stringrevenue,stringbackgroundColor){table.Cell().Background(backgroundColor).Text(product).FontSize(12);table.Cell().Background(backgroundColor).Text(revenue).FontSize(12).FontColor(Colors.Green.Darken2);}staticstringGetBase64Image(){conststringimagePath="chart.png";// Change this to your image pathif(!File.Exists(imagePath)){Console.WriteLine("Image file not found, using placeholder.");returnstring.Empty;}varimageBytes=File.ReadAllBytes(imagePath);return$"data:image/png;base64,{Convert.ToBase64String(imageBytes)}";}