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();

  

输出:

 

posted @ 2022-10-04 13:41  ®Geovin Du Dream Park™  阅读(161)  评论(0编辑  收藏  举报