博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

ASP.NET 将数据生成PDF (二)

Posted on 2015-09-25 13:37  米粒3  阅读(567)  评论(0编辑  收藏  举报

可以下载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; 





然后,在要调用转换的按钮的事件代码中调用就可以了
  /将目标文件保存在此项目下

//字体使用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> 
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(); 
}