利用FastReport傳遞圖片參數,在報表上展示簽名信息

在一個項目中,客戶要求對報表中的簽名進行仿手寫的簽名處理,因此我們原先只是顯示相關人員的姓名的地方 , 需要采用手寫方式簽名,我們的報表是利用FastReport處理的,在利用楷體處理的時候,開發展示倒是正常效果,不過實際上在服務器運行的時候,出來的確實正規的宋體格式,相應的字體都已經安裝,不過還是沒有生效 。因此采用變通的方式,在對應簽名的地方采用圖片的格式顯示 , 實際效果達到要求 。本篇隨筆介紹這個過程,利用FastReport傳遞圖片參數 , 在報表上展示簽名信息的處理 。
1、報表上的設計處理例如我們要在報表落款的附近記錄相關人員的名字,因此采用簽名的顯示方式會比較合理 。

利用FastReport傳遞圖片參數,在報表上展示簽名信息

文章插圖
因此設計相關的報表 , 本來想是采用文本的方式 , 變化字體的方式來快捷實現的
利用FastReport傳遞圖片參數,在報表上展示簽名信息

文章插圖

利用FastReport傳遞圖片參數,在報表上展示簽名信息

文章插圖
不過在報表是在服務器上生成圖片的方式,導致正常出來的圖片 , 卻沒有變化字體,導致出來的是正常的宋體格式 。
利用FastReport傳遞圖片參數,在報表上展示簽名信息

文章插圖
因此考慮使用圖片的格式方式來處理 。在其中放置Picture控件,如下所示 。
利用FastReport傳遞圖片參數,在報表上展示簽名信息

文章插圖
調整好Picture控件的高度和寬度 , 讓它在設計的空白上合適的展示即可 。
為了實現圖片格式的顯示,我們需要在報表的圖片控件的BeforePrint事件中解析數據(來自傳遞參數),數據格式為Base64字符串(從Byte數據轉換),如下代碼所示 。
namespace FastReport{  public class ReportScript  {    private void shopDoctorImg_BeforePrint(object sender, EventArgs e)    {      var img = GetImage("ShopDoctor");      if(img != null){        shopDoctorImg.Image=img;      }    }    private void tiaopeiImg_BeforePrint(object sender, EventArgs e)    {      var img = GetImage("Tiaopei");      if(img != null){        tiaopeiImg.Image=img;      }    }           private void CheckDoctorImg_BeforePrint(object sender, EventArgs e)    {      var img = GetImage("CheckDoctor");      if(img != null){        CheckDoctorImg.Image=img;      }    }    private void CheckPharmacistImg_BeforePrint(object sender, EventArgs e)    {      var img = GetImage("CheckPharmacist");      if(img != null){        CheckPharmacistImg.Image=img;      }    }    private Image GetImage(string signName)    {      Image img = null;      string imgStr = (string)Report.GetParameterValue(signName);      if(!string.IsNullOrEmpty(imgStr))      {        byte[] imgData=https://www.huyubaike.com/biancheng/ Convert.FromBase64String(imgStr); using(MemoryStream ms = new MemoryStream(imgData)) { img = System.Drawing.Image.FromStream(ms); } } return img; } }}其中主要注意的是,我們傳遞的圖片數據需要采用Base64String的格式才能正常傳遞和展示 。
2、報表傳遞圖片數據完成了報表的設計處理,我們剩下的就是在實際的報表中傳遞對應的參數數據了 。
我們把簽名圖片,放在相對的目錄上,如下所示 。
利用FastReport傳遞圖片參數,在報表上展示簽名信息

文章插圖
然后編寫一個公用的讀取圖片為Base64String的函數處理,如下所示 。

推薦閱讀