可以下載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 ;
}
}
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 );
// 字號選擇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();
}
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();
}
{
// 創建文檔對象
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();
}
