首页 > 编程语言 >C# QuestPDF常规使用

C# QuestPDF常规使用

时间:2022-10-02 18:02:18浏览次数:40  
标签:simhei C# Text list 常规 Cell FontFamily QuestPDF page

 

以下是demo 代码 环境是在  api中

 

    public class TestModel
    {
        public string Name { get; set; } = "测试";
        public decimal Price { get; set; } = 1;
        public int Quantity { get; set; } = 2;
    }

    [Route("api/[controller]")]
    [ApiController]
    public class IndexController : ControllerBase
    {
        [HttpPost("TestPDF")]
        public IActionResult TestPDF()
        {
            string path_file = @"F:\Users\Administrator\Desktop\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";
            //测试样式
            var titleStyle = TextStyle.Default.FontSize(36).SemiBold().FontColor(Colors.Blue.Medium);

            //整合对象
            var pdf_obj = 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()
                            .Background(Colors.Blue.Accent1)
                            .Row(row =>
                            {
                                row.RelativeItem().Column(column =>
                                {
                                    column.Item().Text("测试标题1").FontFamily("simhei").Style(titleStyle);
                                    column.Item().Text("测试标题2").FontFamily("simhei");
                                });
                            });
                      //.SemiBold().FontSize(36).FontColor(Colors.Blue.Medium);//此处为整体设置

                      //内容部分
                      page.Content()
                          .PaddingVertical(1, Unit.Centimetre)
                          .Column(x =>
                          {
                              x.Spacing(20);
                              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(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<TestModel>();
                                  list.Add(new TestModel());
                                  list.Add(new TestModel());
                                  list.Add(new TestModel());
                                  list.Add(new TestModel());
                                  list.Add(new TestModel());

                                  //数据组合
                                  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("Page");
                              x.CurrentPageNumber();
                          });
                  });
              });
            
            byte[] byte_pdf = pdf_obj.GeneratePdf();
            //.GeneratePdf(path_file);//这个是保存道对应目录地址

            //这个是返回对应文件
            return File(byte_pdf, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"{DateTime.Now:G}.pdf");
        }

 

标签:simhei,C#,Text,list,常规,Cell,FontFamily,QuestPDF,page
From: https://www.cnblogs.com/flydmxy/p/16749133.html

相关文章

  • 2017 insomni'hack wheelofrobots Writeup
    2017insomni'hackwheelofrobotsWriteup0x00前言题目地址:wheelofrobots程序保护:0x01程序分析1.1mainmain程序如下图。进入程序后,先显示菜单,然后用户输入,根据选......
  • Scala:函数基本概念
    函数//无输入函数def<identifier>=<expression>defhi="hi"//无输入指定返回类型函数def<identifier>:<type>=<expression>defhi:String="hi"//完整函数def......
  • dct
    importnumpyasnpimportcv2importmatplotlib.pyplotaspltdct变换以及逆变换实现#dctdefdct(img,N):G=np.zeros((N,N),dtype=np.float64)foriin......
  • CSP2019 J2参考解析
    目录CSP2019J2P5660[CSP-J2019]数字游戏P5661[CSP-J2019]公交换乘P5662[CSP-J2019]纪念品P5663[CSP-J2019]加工零件CSP2019J2题目传送P5660[CSP-J2019]数......
  • centos7中 lumpy软件的安装
     001、利用conda创建py2.7环境condacreate-npy27python=2.7##创建py2.7环境 002、进入python2.7环境condaactivatepy27 003、利用conda安装......
  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Python......
  • 启用core文件
    测试程序#include<stdio.h>voidfunc(){ char*p=NULL; p[0]='A';}intmain(){ func(); printf("Helloworld!"); return0;}编译,生成可执行程序g......
  • 小猪学Java篇二十六(Switch多选择结构)
     packagecom.zhu.struct;publicclassSwitchDemo01{publicstaticvoidmain(String[]args){//case:【穿透现象】switch匹配一个具体的值,和if......
  • 查找字符串三种方法(截取子串,朴素匹配法,KMP匹配)——C语言描述
    查找字符串三种方法(截取子串,朴素匹配法,KMP匹配)——C语言描述目录查找字符串三种方法(截取子串,朴素匹配法,KMP匹配)——C语言描述0测试用例框架1查找字符串——截取字串方法......
  • csapp第一章练习题
    Amdahl定律我们定义α为加速部分占整个系统部分的比例k为性能加速比例,即加速后的性能比上加速前的性能由公式可知练习题1:A:根据定义理解,有α=1500/2500,k=150/100,可根......