CSharp: QuestPDF create pdf file in donet core 6
/// <summary> /// geovindu, Geovin Du,涂聚文 Edit /// </summary> public class DuModel { private string name; private int price, quantity; /// <summary> /// /// </summary> /// <param name="name"></param> /// <param name="price"></param> /// <param name="quantity"></param> public DuModel(string name,int price,int quantity) { this.name = name; this.price = price; this.quantity = quantity; } /// <summary> /// /// </summary> public string Name { get { return name; } set { name = value; } } /// <summary> /// /// </summary> public int Price { get { return price; } set { price = value; } } /// <summary> /// /// </summary> public int Quantity { get { return quantity; } set { quantity = value; } } /// <summary> /// /// </summary> /// <returns></returns> public override string ToString() { return $"{nameof(Name)}: {Name}, {nameof(Price)}: {Price}, {nameof(Quantity)}: {Quantity}"; } }
var titleStyle = TextStyle.Default.FontSize(36).SemiBold().FontColor(Colors.Blue.Medium).FontFamily("simhei"); var duPdf = Document .Create(container => { container.Page(page => { page.Size(PageSizes.A4); page.Margin(2, Unit.Centimetre); page.PageColor(Colors.White); page.DefaultTextStyle(x => x.FontSize(20).SemiBold().FontColor(Colors.Blue.Medium).FontFamily("simhei")); page.Header() .Text("geoVI studio捷为工作室") .FontFamily("simhei")//中文,需定义中文字体否则出问题 .SemiBold().FontSize(36).FontColor(Colors.Blue.Darken2); page.Content() .PaddingVertical(1, Unit.Centimetre) .Column(x => { x.Spacing(20); x.Item().Table(t => { t.ColumnsDefinition(c => { c.RelativeColumn(); c.RelativeColumn(3); }); t.Cell().Border(1).Background(Colors.Grey.Lighten3).Padding(5).Text("Visual Studio").FontFamily("simhei"); t.Cell().Border(1).Padding(5).Text("Start in debug mode with 'Hot Reload on Save' enabled.").FontFamily("simhei"); t.Cell().Border(1).Background(Colors.Grey.Lighten3).Padding(5).Text("Command line").FontFamily("simhei"); t.Cell().Border(1).Padding(5).Text("Run 'dotnet watch'.").FontFamily("simhei"); }); x.Item().Text("Modify this line and the preview should show your changes instantly.").FontFamily("simhei"); //表格 x.Item().Table(table => { //设置表头的列参数占比 table.ColumnsDefinition(columns => { columns.ConstantColumn(30); columns.RelativeColumn(); columns.RelativeColumn(); columns.RelativeColumn(); columns.RelativeColumn(); }); // 表头 table.Header(header => { header.Cell().Text("#").FontFamily("simhei"); header.Cell().Text("商品").FontFamily("simhei"); header.Cell().AlignRight().Text("价格").FontFamily("simhei"); header.Cell().AlignRight().Text("数量").FontFamily("simhei"); header.Cell().AlignRight().Text("总价").FontFamily("simhei"); header.Cell().ColumnSpan(5) .PaddingVertical(5).BorderBottom(1).BorderColor(Colors.Black); }); var list = new List<DuModel>(); list.Add(new DuModel("小锅",20,1)); list.Add(new DuModel("小刀", 2, 12)); list.Add(new DuModel("小碗", 5, 13)); list.Add(new DuModel("小筷", 20, 4)); list.Add(new DuModel("小砧", 1, 100)); //数据组合 for (int i = 0; i < list.Count; i++) { table.Cell().Element(CellStyle).Text(i + 1).FontFamily("simhei"); table.Cell().Element(CellStyle).Text(list[i].Name).FontFamily("simhei"); table.Cell().Element(CellStyle).AlignRight().Text($"{list[i].Price}$").FontFamily("simhei").Style(titleStyle); table.Cell().Element(CellStyle).AlignRight().Text(list[i].Quantity).FontFamily("simhei"); table.Cell().Element(CellStyle).AlignRight().Text($"{list[i].Price * list[i].Quantity}$").FontFamily("simhei"); static IContainer CellStyle(IContainer container) { return container.BorderBottom(1).BorderColor(Colors.Grey.Lighten2).PaddingVertical(5); } } }); }); page.Footer() .AlignCenter() .Text(x => { x.Span("第 "); x.CurrentPageNumber(); x.Span(" 页"); x.Span("/ 共 "); x.TotalPages(); x.Span("页"); }); }); }); // duPdf.ShowInPreviewer(); string pathfile = @"geovindu" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf"; duPdf.GeneratePdf(pathfile);
输出:
from:
https://github.com/QuestPDF/
https://github.com/QuestPDF/QuestPDF-ExampleInvoice
https://github.com/QuestPDF/QuestPDF-Documentation
CoreWCF
https://github.com/CoreWCF/CoreWCF
ImageSharp
https://github.com/SixLabors/ImageSharp
Mapper
https://github.com/MapsterMapper/Mapster
Pinyin4Net
https://github.com/bao-qian/Pinyin4Net
https://github.com/YangKuang/pinyin4net
var titleStyle = TextStyle.Default.FontSize(36).SemiBold().FontColor(Colors.Blue.Medium).FontFamily("simhei"); var duPdf = Document .Create(container => { //第一页 container.Page(page => { page.Size(PageSizes.A4); page.Margin(2, Unit.Centimetre); page.PageColor(Colors.White); page.DefaultTextStyle(x => x.FontSize(20).SemiBold().FontColor(Colors.Blue.Medium).FontFamily("simhei")); page.Header() .Text("geoVI studio捷为工作室") .FontFamily("simhei")//中文,需定义中文字体否则出问题 .SemiBold().FontSize(36).FontColor(Colors.Blue.Darken2); page.Content() .PaddingVertical(1, Unit.Centimetre) .Column(x => { x.Spacing(20); x.Item().Table(t => { t.ColumnsDefinition(c => { c.RelativeColumn(); c.RelativeColumn(3); }); t.Cell().Border(1).Background(Colors.Grey.Lighten3).Padding(5).Text("Visual Studio").FontFamily("simhei"); t.Cell().Border(1).Padding(5).Text("Start in debug mode with 'Hot Reload on Save' enabled.").FontFamily("simhei"); t.Cell().Border(1).Background(Colors.Grey.Lighten3).Padding(5).Text("Command line").FontFamily("simhei"); t.Cell().Border(1).Padding(5).Text("Run 'dotnet watch'.").FontFamily("simhei"); }); x.Item().Text("Modify this line and the preview should show your changes instantly.").FontFamily("simhei"); //表格 x.Item().Table(table => { //设置表头的列参数占比 table.ColumnsDefinition(columns => { columns.ConstantColumn(30); columns.RelativeColumn(); columns.RelativeColumn(); columns.RelativeColumn(); columns.RelativeColumn(); }); // 表头 table.Header(header => { header.Cell().Text("#").FontFamily("simhei"); header.Cell().Text("商品").FontFamily("simhei"); header.Cell().AlignRight().Text("价格").FontFamily("simhei"); header.Cell().AlignRight().Text("数量").FontFamily("simhei"); header.Cell().AlignRight().Text("总价").FontFamily("simhei"); header.Cell().ColumnSpan(5) .PaddingVertical(5).BorderBottom(1).BorderColor(Colors.Black); }); var list = new List<DuModel>(); list.Add(new DuModel("小锅", 20, 1)); list.Add(new DuModel("小刀", 2, 12)); list.Add(new DuModel("小碗", 5, 13)); list.Add(new DuModel("小筷", 20, 4)); list.Add(new DuModel("小砧", 1, 100)); //数据组合 for (int i = 0; i < list.Count; i++) { table.Cell().Element(CellStyle).Text(i + 1).FontFamily("simhei"); table.Cell().Element(CellStyle).Text(list[i].Name).FontFamily("simhei"); table.Cell().Element(CellStyle).AlignRight().Text($"{list[i].Price}$").FontFamily("simhei").Style(titleStyle); table.Cell().Element(CellStyle).AlignRight().Text(list[i].Quantity).FontFamily("simhei"); table.Cell().Element(CellStyle).AlignRight().Text($"{list[i].Price * list[i].Quantity}$").FontFamily("simhei"); static IContainer CellStyle(IContainer container) { return container.BorderBottom(1).BorderColor(Colors.Grey.Lighten2).PaddingVertical(5); } } }); }); page.Footer() .AlignCenter() .Text(x => { x.Span("第 "); x.CurrentPageNumber(); x.Span(" 页"); x.Span("/共 "); x.TotalPages(); x.Span(" 页"); }); }); //第二页 container.Page(page => { page.Size(PageSizes.A4); page.Margin(2, Unit.Centimetre); page.PageColor(Colors.White); page.DefaultTextStyle(x => x.FontSize(20).SemiBold().FontColor(Colors.Blue.Medium).FontFamily("simhei")); page.Header() .Text("geoVI studio捷为工作室") .FontFamily("simhei")//中文,需定义中文字体否则出问题 .SemiBold().FontSize(36).FontColor(Colors.Blue.Darken2); page.Content() .PaddingVertical(1, Unit.Centimetre) .Column(x => { x.Spacing(20); x.Item().Table(t => { t.ColumnsDefinition(c => { c.RelativeColumn(); c.RelativeColumn(3); }); t.Cell().Border(1).Background(Colors.Grey.Lighten3).Padding(5).Text("Visual Studio").FontFamily("simhei"); t.Cell().Border(1).Padding(5).Text("Start in debug mode with 'Hot Reload on Save' enabled.").FontFamily("simhei"); t.Cell().Border(1).Background(Colors.Grey.Lighten3).Padding(5).Text("Command line").FontFamily("simhei"); t.Cell().Border(1).Padding(5).Text("Run 'dotnet watch'.").FontFamily("simhei"); }); x.Item().Text("Modify this line and the preview should show your changes instantly.").FontFamily("simhei"); //表格 x.Item().Table(table => { //设置表头的列参数占比 table.ColumnsDefinition(columns => { columns.ConstantColumn(30); columns.RelativeColumn(); columns.RelativeColumn(); columns.RelativeColumn(); columns.RelativeColumn(); }); // 表头 table.Header(header => { header.Cell().Text("#").FontFamily("simhei"); header.Cell().Text("商品").FontFamily("simhei"); header.Cell().AlignRight().Text("价格").FontFamily("simhei"); header.Cell().AlignRight().Text("数量").FontFamily("simhei"); header.Cell().AlignRight().Text("总价").FontFamily("simhei"); header.Cell().ColumnSpan(5) .PaddingVertical(5).BorderBottom(1).BorderColor(Colors.Black); }); var list = new List<DuModel>(); list.Add(new DuModel("小锅", 20, 1)); list.Add(new DuModel("小刀", 2, 12)); list.Add(new DuModel("小碗", 5, 13)); list.Add(new DuModel("小筷", 20, 4)); list.Add(new DuModel("小砧", 1, 100)); //数据组合 for (int i = 0; i < list.Count; i++) { table.Cell().Element(CellStyle).Text(i + 1).FontFamily("simhei"); table.Cell().Element(CellStyle).Text(list[i].Name).FontFamily("simhei"); table.Cell().Element(CellStyle).AlignRight().Text($"{list[i].Price}$").FontFamily("simhei").Style(titleStyle); table.Cell().Element(CellStyle).AlignRight().Text(list[i].Quantity).FontFamily("simhei"); table.Cell().Element(CellStyle).AlignRight().Text($"{list[i].Price * list[i].Quantity}$").FontFamily("simhei"); static IContainer CellStyle(IContainer container) { return container.BorderBottom(1).BorderColor(Colors.Grey.Lighten2).PaddingVertical(5); } } }); }); page.Footer() .AlignCenter() .Text(x => { x.Span("第 "); x.CurrentPageNumber(); x.Span(" 页"); x.Span("/共 "); x.TotalPages(); x.Span(" 页"); }); }); }); string pathfile = @"geovindu" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf"; duPdf.GeneratePdf(pathfile); //web // duPdf.ShowInPreviewer(); //打开 //var process = new Process //{ // StartInfo = new ProcessStartInfo(pathfile) // { // UseShellExecute = true // } //}; //process.Start(); //duPdf.ShowInPreviewerAsync(2500); //web // byte[] bytepdf = duPdf.GeneratePdf();
输出:
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)