今天轉博客園看到有人發表了一篇生成PFd的文章,准備自己也留一份准備以后用到的時候方便調用;
首先去itextsharp網站下載控件(https://sourceforge.net/projects/itextsharp)
將下載后的控件引用到自己的項目里面,主要的bll文件為:itextsharp.dll文件
1、根據DataTable生成PDF文件
添加Itextsharp引用
using iTextSharp;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;
應用代碼
/// <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;
}
/// <summary>
/// 生成Dataset
/// </summary>
/// <returns></returns>
private DataSet GetSet()
{
DataSet ds = new DataSet();
string sql = "select * from T_AjaxXML";
string Config = ConfigurationManager.ConnectionStrings["Config"].ConnectionString;
using (SqlConnection cnn = new SqlConnection(Config))
{
using (SqlCommand cmm = new SqlCommand(sql, cnn))
{
SqlDataAdapter dapter = new SqlDataAdapter(cmm);
dapter.Fill(ds);
}
}
return ds;
}
調用方法: ConvertDataTableToPDF(GetSet().Tables[0], Server.MapPath("~/Table.pdf"), "C:\\Windows\\Fonts\\simsun.ttc,1", 14);
2、根據文本內容生成PDF文件
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、生成頁眉頁腳(不過iTextSharp5.5這個版本沒有了這個方法,麻煩親們幫忙找一個)
private void CreatePDFheader(string filepath, string headertxt, string footertxt)
{
//創建文檔對象
Document document = new Document();
// 創建文檔寫入實例
PdfWriter.GetInstance(document, new FileStream(filepath, FileMode.Create));
PdfPageEventHelper hh = new PdfPageEventHelper();
// 添加頁腳
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();
}
