/// <summary> /// 导出至PDF /// </summary> /// <param name="dt">数据源</param> /// <param name="fileName">文件名</param> /// <param name="dicTableHeader">字段表头名对照</param> public static void Export(DataTable dt, string fileName, Dictionary<string, string> dicTableHeader) { Document document = new Document(); using (MemoryStream pdfStream = new MemoryStream()) { PdfWriter pdfWriter = PdfWriter.GetInstance(document, pdfStream); document.Open(); BaseFont bfChinese = BaseFont.CreateFont(@"C:\Windows\Fonts\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); Font fontChinese = new Font(bfChinese, 12, Font.NORMAL, new BaseColor(0, 0, 0)); Font fontHeader = new Font(bfChinese, 12, Font.BOLD, new BaseColor(0, 0, 0)); int columCount = dicTableHeader.Count; PdfPTable table = new PdfPTable(columCount); foreach (var item in dicTableHeader) { PdfPCell cell = new PdfPCell(new Phrase(item.Value, fontHeader)); cell.HorizontalAlignment = Element.ALIGN_CENTER; table.AddCell(cell); } for (int i = 0; i < dt.Rows.Count; i++) { foreach (var item in dicTableHeader) { table.AddCell(new Phrase(dt.Rows[i][item.Key].ToString(), fontChinese)); } } document.Add(table); document.Close(); pdfWriter.Close(); HttpContext curContext = HttpContext.Current; curContext.Response.Clear(); curContext.Response.ClearContent(); curContext.Response.ClearHeaders(); curContext.Response.ContentType = "application/octet-stream"; curContext.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, Encoding.UTF8) + ".pdf"); curContext.Response.BinaryWrite(pdfStream.ToArray()); curContext.Response.Flush(); curContext.Response.End(); } }