利用FastReport传递图片参数,在报表上展示签名信息( 二 )

其中主要注意的是,我们传递的图片数据需要采用Base64String的格式才能正常传递和展示 。
2、报表传递图片数据完成了报表的设计处理,我们剩下的就是在实际的报表中传递对应的参数数据了 。
我们把签名图片,放在相对的目录上,如下所示 。

利用FastReport传递图片参数,在报表上展示签名信息

文章插图
然后编写一个公用的读取图片为Base64String的函数处理,如下所示 。
        //通过姓名获取签名图片的Base64        private string GetSignImage(string signName)        {            var result = "";            string imagePath = Path.Combine(baseDir, $"Report/signs/{signName}.png");            if (File.Exists(imagePath))            {                var stream = FileUtil.FileToStream(imagePath);                var image = FileUtil.StreamToBytes(stream);                if (image != null)                {                    result = Convert.ToBase64String(image);                }            }            return result;        }接着就是根据对应的报表进行加载,并设置相关的参数进行传递给报表即可,如下测试代码所示 。
    //生成PDF报表文档到具体文件    Report report = new Report();    report.Load(reportFile);    //定义参数和数据格式    var dict = new Dictionary<string, object>();    #region 测试数据源    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", GetSignImage("张医生"));//"张医生"    dict.Add("CheckPharmacist", GetSignImage("张医生")); //"李药师"    dict.Add("SendUser", "王小姐");    dict.Add("QrCode", "http://www.iqidi.com");    dict.Add("BarCode", "1234567890");    //图片文件    dict.Add("ShopDoctor", GetSignImage("张医生"));    dict.Add("Tiaopei", GetSignImage("张医生"));    dict.Add("Fayao", GetSignImage("王小姐"));    #endregion    report.RegisterData(dt, "Detail");    foreach (string key in dict.Keys)    {        report.SetParameterValue(key, dict[key]);    }    //运行报表    report.Prepare();

经验总结扩展阅读