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

      

     

     

  • 相关阅读:
    Linq分组后,再对分组后的每组数据进行排序,获取每组的第一条记录
    C/C++ 常量存储: 总结
    张庆科(山师大硕导简介) [转载]
    composer [packagist]包制作(入门篇)
    MMGCN: Multi-modal Graph Convolution Network for Personalized Recommendation of Micro-video
    opencv.js编译
    推荐
    推荐
    推荐
    Azure Automation (10) 在Automation中动态修改Azure Analysis Firewall防火墙规则
  • 原文地址:https://www.cnblogs.com/xiao-bei/p/3899979.html
Copyright © 2020-2023  润新知