zoukankan      html  css  js  c++  java
  • ASP.NET 将数据生成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> 
    publicclass 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> 
    publicstaticbool 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(); 
    returntrue; 





    然后,在要调用转换的按钮的事件代码中调用就可以了
      /将目标文件保存在此项目下

    //字体使用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> 
    privatevoid 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    加页眉页脚

    privatevoid 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(); 
    }
  • 相关阅读:
    j2ee学习笔记
    go开发和运行环境的配置
    Java基础学习笔记
    经典C/S服务器模型之守护进程
    linux抓包命令-tcpdump命令详解
    PostgreSQL的HA解决方案-2负载均衡(load balance)
    PostgreSQL的HA解决方案-1主从和备份(master/slave and backup)
    PostgreSQL的HA解决方案-项目概述
    将数据写到kafka的topic
    将sparkStreaming结果保存到Redshift数据库
  • 原文地址:https://www.cnblogs.com/mili3/p/4837967.html
Copyright © 2011-2022 走看看