iTextSharp 制作 PDF文件(显示表格,图片)

根据业务要求,需要把数据库中的数据在PDF中显示,查阅了很多资料,选择iTextSharp.dll来帮助自己完成。经过一天的资料整理,半天的DEMO设计,特把劳动成功做一记录。

生成PDF文件的代码:

/// <summary>
  /// 数据输出到pdf
  /// </summary>
  /// <param name="selectData"></param>
    void PrintPdf(DataTable dt)
    {
       //第一步 创建Document
        //横向A4纸张
        Rectangle Rec = new Rectangle(PageSize.A4.Rotate());
        //public Document(Rectangle pageSize, int marginLeft, int marginRight, int marginTop, int marginBottom);

        Document doc = new Document(Rec,36F,36F,40F,40F);
       

      //第二步  创建Writer实例
         //创建临时文件
        string Path = Server.MapPath("../TempFile/");
        if (Directory.Exists(Path) == false)
        {
            Directory.CreateDirectory(Path);
        }
        string FileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";
        Path += FileName;
        PdfWriter.GetInstance(doc, new FileStream(Path, FileMode.Create));
       
       //第三步  打开Document
        doc.Open();
      

       //  第四步   写Document 
  
        PrintPdfTable(ref doc, dt, Rec);
         
    
       //第五步 关闭Document
        doc.Close();
       
        doc.Dispose();
        char[] SChar = new char[] { '/' };
        string Url = Request.Url.ToString();
        string[] sUrl = Url.Split(SChar);
        Url = "";
        for (int i = 0; i <= sUrl.Length - 2; i++)
        {
            Url += sUrl[i];
        }
        Url = "../TempFile/" + FileName;
        Response.Write("<script language=\"javascript\">window.open('" + Url + "');</script>");
    }

表格嵌套:把一个子表作为元素加入父表的一个单元格,例如:mFirstCellT.AddElement(whiteTable);
单元格中显示图片:把图片作为单元格的背景图片,例如:

        System.Drawing.Image img_1 = System.Drawing.Image.FromFile(path);
        iTextSharp.text.Image img0 = iTextSharp.text.Image.GetInstance(img_1, iTextSharp.text.BaseColor.WHITE);

        PdfPCell fiSecondCell = new PdfPCell();
        
        fiSecondCell.Image = img0;

 设置行高:如果是标准表格,设置单元格的行高就OK了。

 设置行宽:在造表的时候,PdfPTable SecondTable = new PdfPTable(new float[] { 30F,60F});就OK。

设置表格不显示边框:设置单元格     sFirstCell.BorderColor = BaseColor.WHITE;sFirstCell.BorderWidth = 0F;
       

 

 

 

 

 

posted @ 2013-06-18 12:36  lover6796  阅读(776)  评论(0编辑  收藏  举报