使用FastReport 表工具生成 表PDF内容案例(二)

本篇随笔介绍如何基于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 表工具生成 表PDF内容案例(二)

使用FastReport 表,总体来说,工作量主要是在设计 表模板这里,通过代码实现数据绑定的工作反而非常简单,只需要指定对应的参数和字段数据表即可,而 表的设计是一项精细的工作,我们需要根据实际情况,反复调整格式和呈现的效果才能做到尽善尽美,不过整体来说FastReport提供了非常强大的 表设计和处理过程,使得我们可以在设计一些复杂 表的时候,可以更加高效。


还想要更多吗可以点击阅读【FastReport 表2020最新资源盘点】查找需要的教程资源。让人兴奋的是FastReport .NET正在 火热销售中!17周年庆惠享超低折扣,低至3701元起!>>查看价格详情

标签:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月9日
下一篇 2021年1月9日

相关推荐

发表回复

登录后才能评论