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(涂聚文)
浙公网安备 33010602011771号