PDF管理控件Spire.PDF使用教程:如何创建PDF表格并添加图片到表格

1,611 阅读5分钟

Spire.PDF是一个专业的PDF组件,能够独立地创建、编写、编辑、操作和阅读PDF文件,支持 .NET、Java、WPF和Silverlight。Spire.PDF的PDF API拥有丰富的功能,如安全设置(包括数字签名)、PDF文本/附件/图片提取、PDF文件合并/拆分、元数据更新、章节和段落优化、图形/图像描绘和插入、表格创建和处理、数据导入等等。>>下载Spire.PDF最新试用版

C# 创建 PDF 表格

Spire.PDF提供了两种类PdfTable和PdfGrid用于创建PDF表格,二者在对表格进行格式化操作时存在以下差别:


PdfTable PdfGrid
格式设置
无API支持,可以通过事件设置 可直接通过API设置
可直接通过API设置(StringFormat) 可直接通过API设置(StringFormat)
单元格 无API支持,可以通过事件设置 可直接通过API设置
其他
单元格纵向合并 不支持 可直接通过API设置
单元格横向合并 无API支持,可以通过事件设置 可直接通过API设置
嵌套表格 无API支持,可以通过事件设置 可直接通过API设置
事件 BeginCellLayout, BeginPageLayout, BeginRowLayout, EndCellLayout, EndPageLayout, EndRowLayout BeginPageLayout, EndPageLayout

通过 PdfTable 类创建表格

static void Main(string[] args)
{
    //创建一个PDF文档
    PdfDocument doc = new PdfDocument();

    //添加一页
    PdfPageBase page = doc.Pages.Add();

    //创建一个PdfTable对象
    PdfTable table = new PdfTable();

    //设置字体
    table.Style.DefaultStyle.Font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 9f), true);
    table.Style.HeaderStyle.Font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 9f), true);

    //创建一个DataTable并写入数据
    DataTable dataTable = new DataTable();
    dataTable.Columns.Add("名字");
    dataTable.Columns.Add("年龄");
    dataTable.Columns.Add("性别");
    dataTable.Rows.Add(new string[] { "张红", "22", "女" });
    dataTable.Rows.Add(new string[] { "王东", "25", "男" });

    //填充数据到PDF表格
    table.DataSource = dataTable;

    //显示表头(默认不显示)
    table.Style.ShowHeader = true;

    //在BeginRowLayout事件处理方法中注册自定义事件
    table.BeginRowLayout += Table_BeginRowLayout;


    //将表格绘入PDF并指定位置和大小
    table.Draw(page, new RectangleF(0, 20, 200, 90));

    //保存到文档
    doc.SaveToFile("PDF表格_1.pdf");
}

//在自定义事件中设置行高
private static void Table_BeginRowLayout(object sender, BeginRowLayoutEventArgs args)
{
    args.MinimalHeight = 20f;
}

PDF管理控件Spire.PDF使用教程:如何创建PDF表格并添加图片到表格

通过 PdfGrid 创建表格——创建一个简单的表格

//创建一个PDF文档
PdfDocument doc = new PdfDocument();

//添加一页
PdfPageBase page = doc.Pages.Add();

//创建一个PdfGrid对象
PdfGrid grid = new PdfGrid();

//设置单元格边距
grid.Style.CellPadding = new PdfPaddings(1, 1, 1, 1);

//添加2行4列
PdfGridRow row1 = grid.Rows.Add();
PdfGridRow row2 = grid.Rows.Add();
grid.Columns.Add(4);

//设置列宽
foreach (PdfGridColumn col in grid.Columns)
{
    col.Width = 60f;
}

//写入数据
for (int i = 0; i < grid.Columns.Count; i++)
{
    row1.Cells[i].Value = String.Format("col{0}", i + 1);
    row2.Cells[i].Value = String.Format("{0}", i + 1);
}

//将表格绘入文档
grid.Draw(page, new PointF(0, 20));

//保存到文档
doc.SaveToFile("PDF表格_2.pdf");

PDF管理控件Spire.PDF使用教程:如何创建PDF表格并添加图片到表格

通过 PdfGrid 创建表格——合并单元格,设置背景色和文字对齐方式

//创建PDF文档
PdfDocument doc = new PdfDocument();

//添加一页
PdfPageBase page = doc.Pages.Add();

//创建一个PdfGrid对象
PdfGrid grid = new PdfGrid();

//设置单元格边距
grid.Style.CellPadding = new PdfPaddings(1, 1, 1, 1);

//设置表格默认字体
grid.Style.Font= new PdfTrueTypeFont(new Font("Arial Unicode MS", 9f), true);

//添加4行4列
PdfGridRow row1 = grid.Rows.Add();
PdfGridRow row2 = grid.Rows.Add();
PdfGridRow row3 = grid.Rows.Add();
PdfGridRow row4 = grid.Rows.Add();
grid.Columns.Add(4);

//设置列宽
foreach (PdfGridColumn col in grid.Columns)
{
    col.Width = 60f;
}

//写入数据
row1.Cells[0].Value = "订单及支付情况";
row2.Cells[0].Value = "订单号";
row2.Cells[1].Value = "日期";
row2.Cells[2].Value = "客户";
row2.Cells[3].Value = "是否付款";
row3.Cells[0].Value = "00223";
row3.Cells[1].Value = "2016/06/02";
row3.Cells[2].Value = "阳光地产";
row3.Cells[3].Value = "是";
row4.Cells[0].Value = "00224";
row4.Cells[1].Value = "2016/06/03";
row4.Cells[3].Value = "否";

//水平和垂直合并单元格
row1.Cells[0].ColumnSpan = 4;
row3.Cells[2].RowSpan = 2;

//设置单元格内文字对齐方式
row1.Cells[0].StringFormat = new PdfStringFormat(PdfTextAlignment.Center);
row3.Cells[2].StringFormat = new PdfStringFormat(PdfTextAlignment.Justify, PdfVerticalAlignment.Middle);

//设置单元格背景颜色
row1.Cells[0].Style.BackgroundBrush = PdfBrushes.Gray;
row3.Cells[3].Style.BackgroundBrush = PdfBrushes.Green;
row4.Cells[3].Style.BackgroundBrush = PdfBrushes.MediumVioletRed;

//设置边框颜色、粗细
PdfBorders borders = new PdfBorders();
borders.All = new PdfPen(Color.Black, 0.1f);
foreach (PdfGridRow pgr in grid.Rows)
{
    foreach (PdfGridCell pgc in pgr.Cells)
    {
        pgc.Style.Borders = borders;
    }
}

//在指定为绘入表格
grid.Draw(page, new PointF(0, 20));

//保存到文档
doc.SaveToFile("PDF表格_3.pdf");

PDF管理控件Spire.PDF使用教程:如何创建PDF表格并添加图片到表格

C# 添加图片和嵌套表格到 PDF 表格的单元格

//创建PDF文档
PdfDocument pdf = new PdfDocument();
//添加一个页面
PdfPageBase page = pdf.Pages.Add();

//创建一个PDF表格
PdfGrid grid = new PdfGrid();

//添加两行 
PdfGridRow row1 = grid.Rows.Add();
PdfGridRow row2 = grid.Rows.Add();

//设置表格的单元格内容和边框之间的上边距和下边距
grid.Style.CellPadding.Top = 5f;
grid.Style.CellPadding.Bottom = 5f;

//添加两列
grid.Columns.Add(2);

//设置列宽
grid.Columns[0].Width = 120f;
grid.Columns[1].Width = 120f;

//创建另一个需要嵌套的表格
PdfGrid embedGrid = new PdfGrid();

//添加一行
PdfGridRow newRow = embedGrid.Rows.Add();

//添加两列
embedGrid.Columns.Add(2);

//设置列宽
embedGrid.Columns[0].Width = 50f;
embedGrid.Columns[1].Width = 50f;

SizeF imageSize = new SizeF(50, 50);
//加载图片
PdfGridCellContentList contentList = new PdfGridCellContentList();
PdfGridCellContent content = new PdfGridCellContent();
content.Image = PdfImage.FromFile(@"Doc.png");
content.ImageSize = imageSize;
contentList.List.Add(content);

PdfStringFormat stringFormat = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle);
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 11f), true);

//设置嵌套表格的单元格的值和格式
newRow.Cells[0].Value = "Spire.Doc";
newRow.Cells[0].StringFormat = stringFormat;
newRow.Cells[1].Value = contentList; //将图片添加到嵌套表格的第二个单元格
newRow.Cells[1].StringFormat = stringFormat;

//设置第一个表格的单元格的值和格式
row1.Cells[0].Value = "客户姓名";            
row1.Cells[0].StringFormat = stringFormat;
row1.Cells[0].Style.Font = font;
row1.Cells[0].Style.BackgroundBrush = PdfBrushes.ForestGreen;
row1.Cells[1].Value = "产品";
row1.Cells[1].StringFormat = stringFormat;
row1.Cells[1].Style.Font = font;
row1.Cells[1].Style.BackgroundBrush = PdfBrushes.ForestGreen;
row2.Cells[0].Value = "肖恩";
row2.Cells[0].StringFormat = stringFormat;
row2.Cells[0].Style.Font = font;
row2.Cells[1].Value = embedGrid; //将嵌套表格添加到第一个表格的第二行第二个单元格
row2.Cells[1].StringFormat = stringFormat;           

//将第一个表格画到页面上
grid.Draw(page, new PointF(0f, 30f));

//保存文档
pdf.SaveToFile("嵌套表格和图片.pdf");

PDF管理控件Spire.PDF使用教程:如何创建PDF表格并添加图片到表格

C# 删除 PDF Grid 的行和列

//创建PdfDocument实例
PdfDocument doc = new PdfDocument();

//添加一页
PdfPageBase page = doc.Pages.Add();

//创建PDF grid
PdfGrid grid = new PdfGrid();

//设置单元格内容和边框之间的距离
grid.Style.CellPadding = new PdfPaddings(3, 3, 1, 1);

//添加3行和4列
PdfGridRow row1 = grid.Rows.Add();
PdfGridRow row2 = grid.Rows.Add();
PdfGridRow row3 = grid.Rows.Add();
grid.Columns.Add(4);

//设置列宽
foreach (PdfGridColumn column in grid.Columns)
{
    column.Width = 60f;
}

//写入数据到单元格
for (int i = 0; i < grid.Columns.Count; i++)
{
    row1.Cells[i].Value = String.Format("column{0}", i + 1);
    row2.Cells[i].Value = "a";
    row3.Cells[i].Value = "b";
}

//删除第二行
grid.Rows.RemoveAt(1);

//删除第二列
grid.Columns.RemoveAt(1);

//在页面的指定位置绘制grid
grid.Draw(page, new PointF(0, 20));

//保存文件
doc.SaveToFile("Output.pdf");

PDF管理控件Spire.PDF使用教程:如何创建PDF表格并添加图片到表格

如果你有任何问题或意见,可在下方评论区留言,点击资源列表查看更多教程资源~