using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;
namespace YD_Event.Core.Certificate
{
///
/// 结业证书PDF文档生成类
///
///
/// 实现IDocument接口,用于生成A4大小的结业证书PDF文档
/// 包含证书标题、学员信息、课程名称、证书编号和发证日期等内容
///
public class CertificateDocument : IDocument
{
///
/// 证书数据模型
///
private readonly CertificateModel _model;
///
/// 构造函数
///
/// 证书数据模型,包含生成证书所需的所有信息
public CertificateDocument(CertificateModel model)
{
_model = model;
}
///
/// 获取文档元数据
///
/// 返回默认的文档元数据
public DocumentMetadata GetMetadata() => DocumentMetadata.Default;
///
/// 组合文档内容
///
/// 文档容器,用于构建PDF文档结构
///
/// 构建A4大小的证书页面,包含以下内容:
/// 1. 证书标题 "结 业 证 书"
/// 2. 学员姓名和课程完成信息
/// 3. 证书编号
/// 4. 发证日期
///
public void Compose(IDocumentContainer container)
{
container.Page(page =>
{
// 设置页面大小为A4
page.Size(PageSizes.A4);
// 设置页面边距为40
page.Margin(40);
// 设置默认字体为思源黑体
page.DefaultTextStyle(x => x.FontFamily("Source Han Sans CN"));
// 构建页面内容,使用列布局
page.Content().Column(column =>
{
// 设置列项间距为20
column.Spacing(20);
// 添加证书标题
column.Item().AlignCenter().Text("结 业 证 书")
.FontSize(32) // 设置字体大小为32
.Bold(); // 设置为粗体
// 添加学员姓名信息
column.Item().PaddingTop(40)
.Text($"兹证明 {_model.UserName}")
.FontSize(18)
.AlignCenter();
// 添加课程完成信息
column.Item()
.Text($"已完成《{_model.CourseName}》课程")
.FontSize(18)
.AlignCenter();
// 添加证书编号
column.Item().PaddingTop(20)
.Text($"证书编号:{_model.CertificateNo}")
.FontSize(12)
.AlignCenter();
// 添加发证日期,右对齐
column.Item().PaddingTop(40)
.Text($"发证日期:{_model.IssueDate:yyyy年MM月dd日}")
.AlignRight();
});
});
}
}
}