ExtraGain

07蓄势,08翱翔
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

利用iTextSharp生成Pdf一个小例子

Posted on 2007-12-13 23:10  ExtraGain  阅读(792)  评论(4)    收藏  举报
  1using System;
  2using System.Collections.Generic;
  3using System.Text;
  4using System.Data;
  5using iTextSharp;
  6using iTextSharp.text;
  7using iTextSharp.text.pdf;
  8using System.IO;
  9
 10namespace CNINSURE.WEB.COMMON
 11{
 12    /// <summary>
 13    /// 将DataTable转化为PDF文件的方法
 14    /// </summary>

 15    public class TableToPDF
 16    {
 17        public TableToPDF()
 18        {
 19        }

 20        /// <summary>
 21        /// 转换数据表为PDF文档
 22        /// </summary>
 23        /// <param name="Data">数据表数据</param>
 24        /// <param name="PDFFile">目标PDF文件全路径</param>
 25        /// <param name="FontPath">字体所在路径</param>
 26        /// <param name="FontSize">字体大小</param>
 27        /// <returns>返回调用是否成功</returns>

 28        public static bool ConvertDataTableToPDF(DataTable datatable, string PDFFilePath, string FontPath, float FontSize)
 29        {
 30            //初始化一个目标文档类
 31            Document document = new Document();
 32            //调用PDF的写入方法流
 33            //注意FileMode-Create表示如果目标文件不存在,则创建,如果已存在,则覆盖。
 34            PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(PDFFilePath, FileMode.Create));
 35            //打开目标文档对象
 36            document.Open();
 37            //创建PDF文档中的字体
 38            BaseFont baseFont = BaseFont.CreateFont(
 39                FontPath,
 40                BaseFont.IDENTITY_H,
 41                BaseFont.NOT_EMBEDDED);
 42            //根据字体路径和字体大小属性创建字体
 43            Font font = new Font(baseFont, FontSize);
 44            //根据数据表内容创建一个PDF格式的表
 45            PdfPTable table = new PdfPTable(datatable.Columns.Count);
 46            //遍历原table的内容
 47            for (int i = 0; i < datatable.Rows.Count; i++)
 48            {
 49                for (int j = 0; j < datatable.Columns.Count; j++)
 50                {
 51                    table.AddCell(new Phrase(datatable.Rows[i][j].ToString(), font));
 52                }

 53            }

 54            //在目标文档中添加转化后的表数据
 55            document.Add(table);
 56            //关闭目标文件
 57            document.Close();
 58            //关闭写入流
 59            writer.Close();
 60            return true;
 61        }

 62        /// <summary>
 63        /// 给出文本内容,生成PDF   比如用户输入文本内容及要输出PDF的保存路径的话,也可以输出PDF
 64        /// </summary>
 65        /// <param name="txt">文本内容</param>
 66        /// <param name="filepath">要输出文本的内容</param>

 67        private void CreateTxt(string txt, string filepath)
 68        {
 69            //创建文档对象
 70            Document document = new Document();
 71            //实例化生成的文档
 72            PdfWriter.GetInstance(document, new FileStream(filepath, FileMode.Create));
 73            //打开文档
 74            document.Open();
 75            //在文档中添加文本内容
 76            document.Add(new Paragraph(txt));
 77            //关闭文档对象
 78            document.Close();
 79        }

 80
 81        /// <summary>
 82        /// 加页眉页脚
 83        /// </summary>
 84        /// <param name="filepath">文件路径</param>
 85        /// <param name="headertxt">头文本</param>
 86        /// <param name="footertxt">脚文本</param>

 87        public void CreatePDFheader(string filepath, string headertxt, string footertxt)
 88        {
 89            //创建文档对象
 90            Document document = new Document();
 91            // 创建文档写入实例
 92            PdfWriter.GetInstance(document, new FileStream(filepath, FileMode.Create));
 93
 94            // 添加页脚
 95            HeaderFooter footer = new HeaderFooter(new Phrase(footertxt), true);
 96            footer.Border = Rectangle.NO_BORDER;
 97            document.Footer = footer;
 98
 99            //打开文档内容对象
100            document.Open();
101
102            // 添加页眉
103            HeaderFooter header = new HeaderFooter(new Phrase(headertxt), false);
104            document.Header = header;
105            //设计各页的内容
106            document.Add(new Paragraph("This is First Page"));
107            //新添加一个页
108            document.NewPage();
109            //第2页中添加文本
110            document.Add(new Paragraph("This is Second Page"));
111            // 重置页面数量
112            document.ResetPageCount();
113            //关闭文档对象
114            document.Close();
115        }

116
117
118
119    }

120
121
122
123}

124