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;