记录学习过程
创建日期: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