

在Vue&Element前端项目中,使用FastReport + pdf.js生成并展示自定义报表
source link: https://www.cnblogs.com/wuhuacong/p/15386242.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在我的《FastReport报表随笔》介绍过各种FastReport的报表设计和使用,FastReport报表可以弹性的独立设计格式,并可以在Asp.net网站上、Winform端上使用,由于其主要是使用.net后端生成的报表方式,如果不考虑其在线设计处理,那么可以在在Vue&Element前端项目中使用,通过后端生成报表PDF文件,然后通过前端使用pdf.js来呈现报表最终效果即可。
1、使用FastReport生成自定义报表
我们通过定义自己FastReport报表格式,然后在后端生成PDF文件存储在指定目录中,并返回路径给前端,前端就可以通过pdf.js进行预览了。
关于FastReport报表的设计,这里不再赘述,主要就是通过几个简单的案例展示生成的报表逻辑。
我们来看看其中的报表生成代码,主要分为几个步骤:初始化报表、准备数据、运行并导出报表。
其中从初始化报表如下代码所示。
#region 初始化报表 //报表文件路径 string reportPath = "/Report/Pres.frx"; //转换为物理路径 reportPath = System.Web.Hosting.HostingEnvironment.MapPath(reportPath); //导出PDF/jpg的文件路径 string exportPdfPath = $"/GenerateFiles/Pres/Report_{id}" + (pdf ? ".pdf":".jpg"); //转换为物理路径 string realPath = System.Web.Hosting.HostingEnvironment.MapPath(exportPdfPath); //确保目录生成 string parentPath = Directory.GetParent(realPath).FullName; DirectoryUtil.AssertDirExist(parentPath); //生成PDF报表文档到具体文件 Report report = new Report(); report.Load(reportPath); #endregion
而初始化报表后,就需要准备相应的参数和数据等信息了,下面是测试数据代替
dict.Add("Name", "张三"); dict.Add("Gender", "男"); dict.Add("Age", 32); dict.Add("Telephone", "18620292076"); dict.Add("CreateTime", "2019-10-13 22:30:15"); dict.Add("CheckDoctor", "张医生"); dict.Add("CheckPharmacist", "李药师"); dict.Add("SendUser", "王小姐"); dict.Add("QrCode", "http:www.iqidi.com"); dict.Add("BarCode", "1234567890"); for (int i = 0; i < 5; i++) { var dr = dt.NewRow(); dr["ProductName"] = "阿莫西林" + i; dr["Quantity"] = i; dr["Unit"] = "盒"; dr["Specification"] = "一盒24粒" + i; dr["HowTo"] = "口服"; dr["Frequency"] = "一次三次,一次一片"; dt.Rows.Add(dr); }
准备好数据后,更新相关参数和数据源即可。
//刷新数据源 report.RegisterData(dt, "Detail"); foreach (string key in dict.Keys) { report.SetParameterValue(key, dict[key]); }
然后我们根据是否PDF格式(否则为图片格式)的标志生成文件,如下所示。
#region 运行并导出报表 report.Prepare(); if(pdf) { //导出PDF报表 var export = new PDFExport(); report.Export(export, realPath); } else { //导出JPG报表 var export = new ImageExport(); //export.JpegQuality = 392; //export.ResolutionY = 226; report.Export(export, realPath); } report.Dispose(); #endregion
最后返回路径给前端即可。
2、前端调用pdf.js插件生成并展示自定义报表
后端生成PDF文件后,返回路径给前端,由于是PDF文件,我们可以利用 pdf.js生成并展示自定义报表文件。
首先在前端的API调用类中构建对应的调用函数,如下所示。
然后在页面中增加对应的处理方式即可。
页面中通过按钮的触发调用这个函数,就可以呈现对应的PDF预览窗口了。
Recommend
-
9
Android项目中使用自定义进度加载Dialog 效果图一:
-
6
formulate-el-ui 本项目为 vueformulate 项目加上了 element-ui 皮肤,可以让你在 element-ui 项目中使用 vueformulate 时保持风格统一
-
8
在Vue前端界面中,自定义组件很重要,也很方便,我们一般是把一些通用的界面模块进行拆分,创建自己的自定义组件,这样操作可以大大降低页面的代码量,以及提高功能模块的开发效率,本篇随笔继续介绍在Vue&Element前端项目中如何使用自定义封装的组件,实现...
-
4
在基于ABP框架的前端项目Vue&Element项目中采用日期格式处理,对比Moment.js和day.js的处理 - 伍华聪 - 博客园 Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Moment.js 的 API 设计保持完全一样. 如果您曾经用过 Moment.js, 那么您已经...
-
3
在一些内部OA或者流转的文件,或者给一些客户的报价文件、合同,或者一些医院出示的给保险机构的病历资料等,有时候可能都希望快速的使用电子签章的处理方式来给文件盖上特定的印章,本篇随笔介绍基于Vue&Element的前端项目采用第三方组件 v...
-
3
在前面随笔介绍了《在基于ABP框架的前端项目Vue&Element项目中采用电子签章处理文件和打印处理》的处理,有的时候,我们在流程中或者一些文件签署的时候,需要签上自己的大名,一般通过签...
-
3
MAVEN项目中starter的原理 一.原始方式 我们最早配置spring应用的时候,必须要经历的步骤:1.pom文件中引入相关的jar包,包括spring,redis,jdbc等等 2.通过properties或者xml配置相关的信息 3.不断...
-
3
在一个项目中,客户要求对报表中的签名进行仿手写的签名处理,因此我们原先只是显示相关人员的姓名的地方,需要采用手写方式签名,我们的报表是利用FastReport处理的,在利用楷体处理的时候,开发展示倒是正常效果,不过实际上在服务器运行的时候,出来的确实正规的...
-
10
前端框架ElementUI使用sass离线生成自定义主题 大概是人员离...
-
6
FastReport是一个非常不错的报表组件,在Winform应用中常常使用它进行报表的设计、预览展现、打印或者导出文件(PDF、Excel)等,可以设计打印各种各样的报表,本篇随笔继续介绍当前最新的FastReport报表模块,其中FastReport.WPF是专门针对WPF的报表组件。 ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK