根据业务要求,须要把数据库中的数据在PDF中显示,查阅了不少资料,选择iTextSharp.dll来帮助本身完成。通过一天的资料整理,半天的DEMO设计,特把劳动成功作一记录。javascript
生成PDF文件的代码:java
/// <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了。spa
设置行宽:在造表的时候,PdfPTable SecondTable = new PdfPTable(new float[] { 30F,60F});就OK。设计
设置表格不显示边框:设置单元格 sFirstCell.BorderColor = BaseColor.WHITE;sFirstCell.BorderWidth = 0F;
code