可以下载itextsharp(https://sourceforge.net/projects/itextsharp)
下载,然后在工程中引用该控件,举例子如下
1 datatable 的内容转换为PDF
首先,建立一个datatable转换为pdf的方法如下
using
iTextSharp;
using
iTextSharp.text;
using
iTextSharp.text.pdf;
using
System.IO;
///
<summary>
///
将DataTable转化为PDF文件的方法
///
</summary>
public
class
TableToPDF
{
public
TableToPDF()
{
}
///
<summary>
///
转换数据表为PDF文档
///
</summary>
///
<param name="Data">
数据表数据
</param>
///
<param name="PDFFile">
目标PDF文件全路径
</param>
///
<param name="FontPath">
字体所在路径
</param>
///
<param name="FontSize">
字体大小
</param>
///
<returns>
返回调用是否成功
</returns>
public
static
bool
ConvertDataTableToPDF(DataTable datatable,
string
PDFFilePath,
string
FontPath,
float
FontSize)
{
//
初始化一个目标文档类
Document document
=
new
Document();
//
调用PDF的写入方法流
//
注意FileMode-Create表示如果目标文件不存在,则创建,如果已存在,则覆盖。
PdfWriter writer
=
PdfWriter.GetInstance(document,
new
FileStream(PDFFilePath, FileMode.Create));
//
打开目标文档对象
document.Open();
//
创建PDF文档中的字体
BaseFont baseFont
=
BaseFont.CreateFont(
FontPath,
BaseFont.IDENTITY_H,
BaseFont.NOT_EMBEDDED);
//
根据字体路径和字体大小属性创建字体
Font font
=
new
Font(baseFont, FontSize);
//
根据数据表内容创建一个PDF格式的表
PdfPTable table
=
new
PdfPTable(datatable.Columns.Count);
//
遍历原table的内容
for
(
int
i
=
0
; i
<
datatable.Rows.Count; i
++
)
{
for
(
int
j
=
0
; j
<
datatable.Columns.Count; j
++
)
{
table.AddCell(
new
Phrase(datatable.Rows[i][j].ToString(), font));
}
}
//
在目标文档中添加转化后的表数据
document.Add(table);
//
关闭目标文件
document.Close();
//
关闭写入流
writer.Close();
return
true
;
}
}
然后,在要调用转换的按钮的事件代码中调用就可以了
/将目标文件保存在此项目下
//
字体使用simsun
//
字号选择14
//
mytb是数据datatable的名
TableToPDF.ConvertDataTableToPDF(mytb, Server.MapPath(
"
.
"
)
+
@"
\Table.pdf
"
,
"
c:\\winnt\\FONTS\\simsun.ttc,1
"
,
14
);
2 给出文本内容,生成PDF
比如用户输入文本内容及要输出PDF的保存路径的话,也可以输出PDF
///
<param="txt">
:要输出文本的内容
</param>
private
void
CreateTxt(
string
txt,
string
filepath)
{
//
创建文档对象
Document document
=
new
Document();
//
实例化生成的文档
PdfWriter.GetInstance(document,
new
FileStream(filepath, FileMode.Create));
//
打开文档
document.Open();
//
在文档中添加文本内容
document.Add(
new
Paragraph(txt));
//
关闭文档对象
document.Close();
}
3 加页眉页脚
private
void
CreatePDFheader(
string
filepath,
string
headertxt,
string
footertxt)
{
//
创建文档对象
Document document
=
new
Document();
//
创建文档写入实例
PdfWriter.GetInstance(document,
new
FileStream(filepath, FileMode.Create));
//
添加页脚
HeaderFooter footer
=
new
HeaderFooter(
new
Phrase(footertxt),
true
);
footer.Border
=
Rectangle.NO_BORDER;
document.Footer
=
footer;
//
打开文档内容对象
document.Open();
//
添加页眉
HeaderFooter header
=
new
HeaderFooter(
new
Phrase(headertxt),
false
);
document.Header
=
header;
//
设计各页的内容
document.Add(
new
Paragraph(
"
This is First Page
"
));
//
新添加一个页
document.NewPage();
//
第2页中添加文本
document.Add(
new
Paragraph(
"
This is Second Page
"
));
//
重置页面数量
document.ResetPageCount();
//
关闭文档对象
document.Close();
}