转帖|使用教程|编辑:李显亮|2019-08-07 09:56:53.137|阅读 1063 次
概述:Spire.PDF的PDF API拥有丰富的功能,如安全设置(包括数字签名)、PDF文本/附件/图片提取、PDF文件合并/拆分、元数据更新、章节和段落优化、图形/图像描绘和插入、表格创建和处理、数据导入等等。本文将介绍如何创建PDF表格并添加图片到表格。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
更多资源查看:Spire.XLS工作表教程 | Spire.Doc系列教程 | Spire.PDF系列教程
Spire.PDF是一个专业的PDF组件,能够独立地创建、编写、编辑、操作和阅读PDF文件,支持 .NET、Java、WPF和Silverlight。Spire.PDF的PDF API拥有丰富的功能,如安全设置(包括数字签名)、PDF文本/附件/图片提取、PDF文件合并/拆分、元数据更新、章节和段落优化、图形/图像描绘和插入、表格创建和处理、数据导入等等。>>下载Spire.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;
}
通过 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");
通过 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文档
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");
//创建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");
如果你有任何问题或意见,可在下方评论区留言,点击资源列表查看更多教程资源~
*想要购买正版授权的朋友可以哦~
扫描关注“慧聚IT”微信公众号,及时获取更多产品最新动态及最新资讯

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@ke049m.cn