可以下载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>
publicclass 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>
publicstaticbool 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();
returntrue;
}
}
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;
///<summary>
/// 将DataTable转化为PDF文件的方法
///</summary>
publicclass 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>
publicstaticbool 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();
returntrue;
}
}
然后,在要调用转换的按钮的事件代码中调用就可以了
/将目标文件保存在此项目下
//字体使用simsun
//字号选择14
//mytb是数据datatable的名
TableToPDF.ConvertDataTableToPDF(mytb, Server.MapPath(".") +@"Table.pdf", "c:\winnt\FONTS\simsun.ttc,1", 14);
//字号选择14
//mytb是数据datatable的名
TableToPDF.ConvertDataTableToPDF(mytb, Server.MapPath(".") +@"Table.pdf", "c:\winnt\FONTS\simsun.ttc,1", 14);
2 给出文本内容,生成PDF
比如用户输入文本内容及要输出PDF的保存路径的话,也可以输出PDF
///<param="txt">:要输出文本的内容</param>
privatevoid 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();
}
privatevoid 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 加页眉页脚
privatevoid 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();
}
{
//创建文档对象
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();
}