近期要用asp.net 2.0生成PDF,看了下書,查了下資料,發現可以有組件幫得上忙,可以下載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();
}
新聞熱點
疑難解答