.Net Mvc-导出PDF-思路方案

效果图:


导语:
    在我们做项目的过程中,经常会遇到一些服务性的需求,感到特别困扰,明明实用的价值不高,但是还是得实现;
    因此小客在这里整理一下自己导出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));