asp.net 生成PDF方法


今天轉博客園看到有人發表了一篇生成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();
        }

  

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM