首页 > 代码库 > asp.net 生成PDF方法

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();        }