【Spire.PDF】Spire.PDF导出报告之四报告模板

记录学习过程

创建日期:2019-04-11

【Spire.PDF】Spire.PDF导出报告之一获取与破解
【Spire.PDF】Spire.PDF导出报告之二基本绘制Draw
【Spire.PDF】Spire.PDF导出报告之三表格Grid
【Spire.PDF】Spire.PDF导出报告之四报告模板
【Spire.PDF】Spire.PDF导出报告之实用工具类PdfUtility

Spire.PDF导出报告之四报告模板

在实际开发过程,报告的内容是动态变化的,生成的报告需要根据内容来调整布局等,比如内容过多时,需要在下一页绘制。
而且报告需要页眉页脚才显得正式。

/// <summary>
/// 页面宽度 默认595
/// </summary>
public float PageWidth
{
    get { return Doc.PageSettings.Width; }
}
/// <summary>
/// 页面高度 默认842
/// </summary>
public float PageHeight
{
    get { return Doc.PageSettings.Height; }
}
/// <summary>
/// 设置页眉
/// </summary>
public void SetPageHeader()
{
    foreach (var item in Doc.Pages)
    {
        float colWidth = (PageWidth - 2 * 30) / 2;
        GridInit(new float[2] { colWidth, colWidth });
        GridTextAlignments = new PdfTextAlignment[2] { PdfTextAlignment.Left,  PdfTextAlignment.Right };
        GridTextFonts = new PdfTrueTypeFont[2] { Font(10), Font(10)};
        GridTextColors = new PdfSolidBrush[2] { BrushColor(Color.Black), BrushColor(Color.Black) };
        GridRowsAdd("Logo","Text");
        GridDraw(new PointF(30, 20), true, (PdfPageBase)item);

        DrawLine(PenColor(Color.Black), new PointF(30, 40), new PointF(PageWidth - 30, 40), (PdfPageBase)item);
    }
}

页眉

在这里插入图片描述

 /// <summary>
 /// 设置页脚
 /// </summary>
public void SetPageFooter()
{
    int count = 0;
    int allCount = Doc.Pages.Count;//总页数
    foreach (var item in Doc.Pages)
    {
        count++;//当前页码
        DrawLine(PenColor(Color.Black), new PointF(30, PageHeight - 40), new PointF(PageWidth - 30, PageHeight - 40), (PdfPageBase)item);//底线
        float colWidth = (PageWidth - 2 * 30) / 3;
        GridInit(new float[3] { colWidth, colWidth, colWidth });
        GridTextAlignments = new PdfTextAlignment[3] { PdfTextAlignment.Left, PdfTextAlignment.Center, PdfTextAlignment.Right };
        GridTextFonts = new PdfTrueTypeFont[3] { Font(8), Font(10), Font(8) };
        GridTextColors = new PdfSolidBrush[3] { BrushColor(Color.Black), BrushColor(Color.Gray), BrushColor(Color.Black) };
        GridRowsAdd(DateTime.Now.ToString("yyyy-MM-dd HH:mm"), "Logo", count + "/" + allCount);
        GridDraw(new PointF(30, PageHeight - 40 ), true, (PdfPageBase)item);
    }
}

页脚

在这里插入图片描述

设置模板内容

 PdfUtility pdfUtility = new PdfUtility();
 pdfUtility.Init();

 //列宽度
 float[] colWidth = new float[5] { 50, 100, 50, 200, pdfUtility.PageWidth - 400 - 30 * 2 };
 pdfUtility.GridTextAlignments = new PdfTextAlignment[5] {
     PdfTextAlignment.Center, PdfTextAlignment.Center, PdfTextAlignment.Center,
     PdfTextAlignment.Left, PdfTextAlignment.Left };

 PdfTrueTypeFont Font10 = pdfUtility.Font(10, true);
 PdfTrueTypeFont Font8 = pdfUtility.Font(8);
 PdfSolidBrush FontColorBlack = pdfUtility.BrushColor(Color.Black);
 PdfSolidBrush FontColorGray = pdfUtility.BrushColor(Color.Gray);

 float maxPageHeight = pdfUtility.PageHeight - 40 * 2;//页面内容最大高度
 float currentPageHeight = 0;//当前页面内容高度

 int listCount = 50;//数据数量
 for (int i = 0; i < listCount; i++)
 {
     //当前数据表格高度超过页面内容高度,则新增一页
     if (i == 0 || currentPageHeight + 60 > maxPageHeight)
     {
         //当是第一条数据(则还没有内容)时,不绘制表格
         if (i != 0)
             pdfUtility.GridDraw(new PointF(30, 50), false);
         //新增页面
         pdfUtility.PagesAdd();
         //新增表格并添加表标题
         pdfUtility.GridInit(colWidth);
         pdfUtility.GridTextFonts = new PdfTrueTypeFont[5] { Font10, Font10, Font10, Font10, Font10 };
         pdfUtility.GridTextColors = new PdfSolidBrush[5] { FontColorBlack, FontColorBlack, FontColorBlack, FontColorBlack, FontColorBlack };
         pdfUtility.GridRowsAdd("ID", "姓名", "性别", "爱好", "个人介绍");
         currentPageHeight = 0;
     }
     //内容
     pdfUtility.GridTextFonts = new PdfTrueTypeFont[5] { Font8, Font8, Font8, Font8, Font8 };
     pdfUtility.GridTextColors = new PdfSolidBrush[5] { FontColorGray, FontColorGray, FontColorGray, FontColorGray, FontColorGray };
     pdfUtility.GridRowsAdd("ID" + i, "姓名", "性别", "爱好", "个人介绍");

     currentPageHeight += pdfUtility.GridRow.Height;

     if (i == listCount - 1)//最后一个数据,保存表格
     {
         pdfUtility.GridDraw(new PointF(30, 50), false);
     }
 }

 pdfUtility.SetPageHeader();//页眉
 pdfUtility.SetPageFooter();//页脚

 pdfUtility.SaveToPDF("PDFGrid");

效果
在这里插入图片描述
在这里插入图片描述

【Spire.PDF】Spire.PDF导出报告之一获取与破解
【Spire.PDF】Spire.PDF导出报告之二基本绘制Draw
【Spire.PDF】Spire.PDF导出报告之三表格Grid
【Spire.PDF】Spire.PDF导出报告之四报告模板
【Spire.PDF】Spire.PDF导出报告之实用工具类PdfUtility

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GreAmbWang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值