用 C#制作 PDF 文件全攻略
前
言
PDF 文件是目前比较流行的电子文档格式,在办公自动化(OA)等软件的开发中,经
常要用到该格式,但介绍如何制作 PDF 格式文件的资料非常少.
本文主要说下 itext 生成 pdf 复杂表格。并附上网上一个最全面的 itext 教程.
效果如下图:
目 录
前
第一部分 iText
言 ............................................................................................................................................ 1
pdf 表格生成教程 ............................................................................................... 3
第一步:引用 itextsharp.dll......................................................................................................4
第二步:创建 pdf 文档的实例.................................................................................................4
第三步:定义字体,并打印标题.(处理中文字休)................................................................4
第三步:输入一个空行(换行)。以分开标题与表格 ..........................................................5
-1-
第四步:定义基础表格 cell,设置边距,解决表格内容垂直居中的问题(因为直接设置
垂直居中是没有效的—水平居中有效)................................................................................6
第 5 步:定义基本表格。定义图片 cell。(生成表格时,从上而下生成。图片不能最后
插入)........................................................................................................................................ 6
第 6 步:多行多列的表格........................................................................................................6
第 7 步:插入图片 .................................................................................................................... 7
第 7 步:插入一个空行(内容为空的表格)........................................................................8
完整代码 .................................................................................................................................... 9
-2-
第一部分 iText pdf 表格生成教程
-3-
第一步:引用 itextsharp.dll
using iTextSharp.text;
using System.IO;
using iTextSharp.text.pdf;
第二步:创建 pdf 文档的实例
//创建一个iTextSharp.text.Document 对象的实例:
Document document = new Document();
//为该Document 创建一个Writer 实例:
PdfWriter.GetInstance(document, new
FileStream(@"C:\Users\hechao\Desktop\报名表格.pdf",
FileMode.Create));
//打开当前Document
document.Open();
第三步:定义字体,并打印标题.(处理中文字休)
///
SIMSUN.TTC:宋体和新宋体
//SIMKAI.TTF:楷体
//SIMHEI.TTF:黑体
//SIMFANG.TTF:仿宋体
BaseFont bftitle =
BaseFont.CreateFont(@"C:\Windows\Fonts\SIMHEI.TTF",
-4-
BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
Font fonttitle = new Font(bftitle, 20);
BaseFont bf1 = BaseFont.CreateFont(@"C:\Windows\Fonts\SIMSUN.TTC,1",
BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
Font font1 = new Font(bf1, 12);
Font fonttitle10 = new Font(bf1, 12);
Paragraph Title = new Paragraph("XXXX比赛", fonttitle);
Title.SetAlignment("center");
document.Add(Title);
第三步:输入一个空行(换行)。以分开标题与表格
Paragraph nullp = new Paragraph(" ", fonttitle);
nullp.Leading = 10;
document.Add(nullp);
-5-
第四步:定义基础表格 cell,设置边距,解决表格内容垂直居中的问题(因为直接设置垂直居
中是没有效的—水平居中有效)
iTextSharp.text.pdf.PdfPCell cellmode = new
iTextSharp.text.pdf.PdfPCell();
cellmode.Padding = 4F; (cellmode.PaddingBottom = 6F;//这里可以分别
设置)
第 5 步:定义基本表格。定义图片 cell。(生成表格时,从上而下生成。图片不能最后插入)
iTextSharp.text.pdf.PdfPCell cell_pic10 = new
iTextSharp.text.pdf.PdfPCell(); // 创建单元格
iTextSharp.text.pdf.PdfPCell cell_pic20 = new
iTextSharp.text.pdf.PdfPCell(); // 创建单元格
iTextSharp.text.pdf.PdfPTable table = new
iTextSharp.text.pdf.PdfPTable(8); // 表格有7列
table.SetWidths(new float[]
{90,90,90,90,120,90,90,130 });//宽
第 6 步:多行多列的表格
cell = new iTextSharp.text.pdf.PdfPCell();
cell.Colspan = 1;
cell.Rowspan = 4;
-6-
第 7 步:插入图片
cell = new iTextSharp.text.pdf.PdfPCell();
cell.Colspan = 1;
cell.Rowspan = 4;
System.Drawing.Image img_1 =
System.Drawing.Image.FromFile(@"C:\Users\hechao\Desktop\1.jpg");
iTextSharp.text.Image img0 =
iTextSharp.text.Image.GetInstance(img_1,
iTextSharp.text.BaseColor.WHITE);
if (img_1.Width > cell.Width || img_1.Height >
cell.Height)
{
}
img0.ScaleToFit(cell.Width, cell.Height);
cell.FixedHeight = cell.MinimumHeight;
cell.Image = img0;
-7-
table.AddCell(cell);
img_1.Dispose();
第 7 步:插入一个空行(内容为空的表格)
cell = new iTextSharp.text.pdf.PdfPCell();
cell.MinimumHeight = 60;
cell.Colspan = 2;
table.AddCell(cell);
最终效果如下图:
-8-