本篇随笔介绍如何基于FastReport 表工具,生成 表PDF文档展示医院处方笺的内容。本篇随笔介绍基于某个医院的处方笺的格式 表的处理。
Fastreport.NET在线购买价更低,专享85折起!赶紧加入购物清单吧!
2、生成 表PDF内容
通过上面 表模板的设计,我们基本的前期工作就准备好了,需要的就是根据实际业务的需要,动态呈现数据了。
在绑定数据并生成PDF格式 表的时候,我们需要先构建一个 表对象,如下代码所示。
//生成PDF 表文档到具体文件Report report = new Report();report.Load(reportPath);
由于数据我们是动态构建的,因此我们需要准备参数数据源和字段数据源两个部分,参数我们用字典来承载,字段数据,我们用DataTable来承载,如下所示。
//定义参数和数据格式var dict = new Dictionary<string, object>();var dt = DataTableHelper.CreateTable("ProductName,Quantity|int,Unit,Specification,HowTo,Frequency");
然后我们根据系统需要填入动态的数据,如下代码所示。
//准备数据dict.Add("Name", info.PatientName);dict.Add("Gender", info.Gender);var age = info.BirthDate.GetAge();dict.Add("Age", age);dict.Add("Telephone", info.Telephone);dict.Add("CreateTime", info.CreateTime);var checkDoctor = BLLFactory<User>.Instance.GetFullNameByOpenID(info.CheckDoctor);dict.Add("CheckDoctor", !string.IsNullOrEmpty(checkDoctor) checkDoctor : "未知");var CheckPharmacist = BLLFactory<User>.Instance.GetFullNameByOpenID(info.CheckPharmacist);dict.Add("CheckPharmacist", !string.IsNullOrEmpty(CheckPharmacist) CheckPharmacist : "未知");var SendUser = BLLFactory<User>.Instance.GetFullNameByOpenID(info.SendUser);dict.Add("SendUser", !string.IsNullOrEmpty(SendUser) SendUser : "未知");var qrcode = string.Format("{0}/h5/PrescriptionDetaild={1}", ConfigData.WebsiteDomain, info.ID);dict.Add("QrCode", qrcode);dict.Add("BarCode", info.PrescriptionNo);if(detailList != null){ foreach(var item in detailList) { var dr = dt.NewRow(); dr["ProductName"] = item.ProductName; dr["Quantity"] = item.Quantity; dr["Unit"] = item.Unit; dr["Specification"] = ""; dr["HowTo"] = item.HowTo; dr["Frequency"] = item.Frequency; dt.Rows.Add(dr); }}
最后根据上面的数据,绑定并生成PDF 表即可,如下代码所示。
//刷新数据源
report.RegisterData(dt, "Detail");foreach (string key in dict.Keys){ report.SetParameterValue(key, dict[key]);}//运行 表report.Prepare();//导出PDF 表PDFExport export = new PDFExport();report.Export(export, realPath);report.Dispose();
如果采用PDF在线预览方式,可以参考我随笔《实现在线预览PDF的几种解决方案》介绍的那样,最终采用PDFJS的在线预览方案,不管在微信端,还是Web端都是比较不错的效果。
如果采用PDFJS预览方式,那么JS代码如下所示。
var baseUrl = "@ViewBag.WebsiteDomain/Content/JQueryTools/pdfjs/web/viewer.html"; var url = baseUrl + "ile=" + filePath;//实际地址 location.href = url;
如果是直接打开PDF,我们我们就直接传递给浏览器一个PDF文件路径即可
location.href = filePath
在微信端预览的效果如下所示。

使用FastReport 表,总体来说,工作量主要是在设计 表模板这里,通过代码实现数据绑定的工作反而非常简单,只需要指定对应的参数和字段数据表即可,而 表的设计是一项精细的工作,我们需要根据实际情况,反复调整格式和呈现的效果才能做到尽善尽美,不过整体来说FastReport提供了非常强大的 表设计和处理过程,使得我们可以在设计一些复杂 表的时候,可以更加高效。
还想要更多吗可以点击阅读【FastReport 表2020最新资源盘点】,查找需要的教程资源。让人兴奋的是FastReport .NET正在 火热销售中!17周年庆惠享超低折扣,低至3701元起!>>查看价格详情
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!