.Net6 使用QuestPDF制作PDF
一、nuget包引入QuestPDF
或者使用CLI :Install-Package QuestPDF
二、废话不多说直接上Demo
public static void CreatePdf() {//测试样式 var titleStyle = TextStyle.Default.FontSize(36).SemiBold().FontColor(Colors.Blue.Medium); //整合对象 Document.Create(container => { container.Page(page => { page.Size(PageSizes.A4); page.Margin(2, Unit.Centimetre); //page.Background(Colors.White); //字体默认大小20号字体 page.DefaultTextStyle(x => x.FontSize(20)); //页眉部分 page.Header() .Row(row => { row.RelativeItem().Column(column => { column.Item().AlignCenter().Text("").FontFamily("simhei").Style(TextStyle.Default.FontSize(18)); column.Item().AlignRight().Text("编号:______________").FontFamily("simhei").Style(TextStyle.Default.FontSize(12)); }); }); //.SemiBold().FontSize(36).FontColor(Colors.Blue.Medium);//此处为整体设置 //内容部分 page.Content() .PaddingVertical(1, Unit.Centimetre) .Column(x => { x.Spacing(5);//调整文档间距 x.Item().AlignLeft().Text(@"现在v西安市萨格").FontFamily("simhei").Style(TextStyle.Default.FontSize(10));// x.Item().Text(Placeholders.LoremIpsum()); //x.Item().Image(Placeholders.Image(200, 100)); //x.Item().Image(@"F:\Users\Administrator\Desktop\QQ图片20220223154742.jpg"); //表格 x.Item().Table(table => { //设置表头的列参数占比 table.ColumnsDefinition(columns => { columns.ConstantColumn(60); columns.RelativeColumn(); columns.RelativeColumn(); columns.RelativeColumn(); }); // 表头 table.Header(header => { header.Cell().AlignCenter().Text("#").FontFamily("simhei").Style(TextStyle.Default.FontSize(14)); header.Cell().AlignCenter().Text("xxx").FontFamily("simhei").Style(TextStyle.Default.FontSize(14)); header.Cell().AlignCenter().Text("xxxxx").FontFamily("simhei").Style(TextStyle.Default.FontSize(14)); header.Cell().AlignCenter().Text("xxxxx").FontFamily("simhei").Style(TextStyle.Default.FontSize(14)); header.Cell().ColumnSpan(4) .PaddingVertical(4).BorderBottom(1).BorderColor(Colors.Black); }); table.Cell().Element(CellStyle).AlignCenter().Text(1).FontFamily("simhei").Style(TextStyle.Default.FontSize(12)); table.Cell().Element(CellStyle).AlignCenter().Text("CZ00001").FontFamily("simhei").Style(TextStyle.Default.FontSize(12)); table.Cell().Element(CellStyle).AlignCenter().Text($"啊手动阀手动阀手动阀手动阀手动阀手动阀现场666号").FontFamily("simhei").Style(TextStyle.Default.FontSize(12)); table.Cell().Element(CellStyle).AlignCenter().Text(DateTime.Now.ToString("yyyy-MM-dd")).FontFamily("simhei").Style(TextStyle.Default.FontSize(12)); table.Cell().Element(CellStyle).AlignCenter().Text(2).FontFamily("simhei").Style(TextStyle.Default.FontSize(12)); table.Cell().Element(CellStyle).AlignCenter().Text("CZ00002").FontFamily("simhei").Style(TextStyle.Default.FontSize(12)); table.Cell().Element(CellStyle).AlignCenter().Text($"啊手动阀手动阀手动阀手动阀手动阀手动阀现场666号的萨芬萨撒旦发生发射点发色委屈热望其二").FontFamily("simhei").Style(TextStyle.Default.FontSize(12)); table.Cell().Element(CellStyle).AlignCenter().Text(DateTime.Now.ToString("yyyy-MM-dd")).FontFamily("simhei").Style(TextStyle.Default.FontSize(12)); table.Cell().Element(CellStyle).AlignCenter().Text(3).FontFamily("simhei").Style(TextStyle.Default.FontSize(12)); table.Cell().Element(CellStyle).AlignCenter().Text("CZ00002").FontFamily("simhei").Style(TextStyle.Default.FontSize(12)); table.Cell().Element(CellStyle).AlignCenter().Text($"啊手动阀手动阀手动阀手动阀手动阀手动阀现场666号的萨芬萨撒旦发生发射点发色委屈热望其二").FontFamily("simhei").Style(TextStyle.Default.FontSize(12)); table.Cell().Element(CellStyle).AlignCenter().Text(DateTime.Now.ToString("yyyy-MM-dd")).FontFamily("simhei").Style(TextStyle.Default.FontSize(12)); static IContainer CellStyle(IContainer container) { return container.BorderBottom(1).PaddingVertical(4); } }); }); //页脚部分 page.Footer() .AlignCenter() .Text(x => { x.Span("Page"); x.CurrentPageNumber(); }); }); }).ShowInPreviewer();
}
这里有几个细节就是:
1、如果Text("")为汉字一定要FontFamily("simhei"),否则会报错;数字和英文字母则不需要;
2、ShowInPreviewer()必须要安装QuestPDF.Previewer工具
3、table的columns中函数ConstantColumn(60)只能存在 一个
QuestPDF的提供者为了方便预览提供了:QuestPDF.Previewer工具方便开发预览。
QuestPDF.Previewer 目前只支持.NET6以上的版本,因为需要热加载。如果是.NET6一下的版本建议现在.NET6写好然后直接ctrl+v到自己的项目中。只需要ctrl + v生成Pdf的相关代码。
QuestPDF.Previewer因为是工具不能直接在nuget包安装,只能通过CLI安装或者cmd安装(安装环境一定要有.NET6以上的SDK):
CLI命令:dotnet tool install questpdf.previewer --global
CMD命令:dotnet tool install questpdf.previewer --global
因为我这边已经安装过了,所以会提示已安装工具
附上相关链接:
github文档地址:https://github.com/QuestPDF/QuestPDF
API文档地址:https://www.questpdf.com/api-reference/index
大家有问题可以留言交流,或者私信。