效果图:
导语:
在我们做项目的过程中,经常会遇到一些服务性的需求,感到特别困扰,明明实用的价值不高,但是还是得实现;
因此小客在这里整理一下自己导出PDF的一些思路,供大家参考。
网上有很多导出PDF运用到的插件,大家也可以看看其他插件的使用,学习学习;
提要:
这里我使用的是-iTextSharp,供大家参考参考,借鉴方案,完善思路,补充自己,一起学习;
准备工作:
1、在自己的项目解决方案中---工具->Nuget程序管理包->程序管理控制台,安装iTextSharp插件;
Install-Package iTextSharp
Install-Package itextsharp.xmlworker
开始实现: 1、首先创建一个文档,便于后续toPdf Document document = new Document(PageSize.A4, 5, 5, 20, 20); 2、定义好我们需要存储的路径 string path = Server.MapPath(@"..\Common\ExportWord\" + "xxxxxxxxxxx.pdf"); 相对路径,Common\ExportWord 这两个文件夹必须是真实存在的; 3、根据存储的路径来创建文件流 FileStream fsPath = new FileStream(path, System.IO.FileMode.Create); 4、将文件流和新建的文档 放入PdfWriter中直接创建PDF格式的文件 PdfWriter writer = PdfWriter.GetInstance(document, fsPath); 5、创建字体样式,便于后面使用 BaseFont bfChinese = BaseFont.CreateFont(@"C:\WINDOWS\Fonts\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //表格标题--字体设置 Font fontRukuHeader = new Font(bfChinese, 15, Font.NORMAL, BaseColor.BLACK); //表格第一行标头--字体设置 Font fontTtitle = new Font(bfChinese, 10, Font.NORMAL, BaseColor.BLACK); //表格数据--字体设置 Font fontGrid = new Font(bfChinese, 10); 6、打开文档,按照导出的需求模板来开始填充文档信息数据, document.Open(); 7、设置整个表格的总列数 PdfPTable table = new PdfPTable(7); 8、开始调整模板,根据你的需求来调整 PdfPCell firstCell = new PdfPCell(new Phrase("内部确认单", fontRukuHeader)); firstCell.Colspan = 7;//合并7行 firstCell.HorizontalAlignment = PdfPCell.ALIGN_CENTER;//居中 firstCell.PaddingBottom = 6; table.AddCell(firstCell); 9、将表格数据放入文档中 document.Close(); document.Add(table); 10、输出成PDF PdfReader reader = new PdfReader(path); MemoryStream stream = new MemoryStream(); PdfStamper pdfstamper = new PdfStamper(reader, stream); pdfstamper.FormFlattening = true; pdfstamper.Close(); reader.Close(); Byte[] btArray = stream.ToArray(); FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write); fs.Write(btArray, 0, btArray.Length); fs.Flush(); fs.Close(); FileInfo downloadFile = new FileInfo(path); string name = Path.GetFileName(path); return File(path, 'application/pdf', Url.Encode(name));