public static ParentApprovalReport GetParentApprovalReport(ParentApproval approval) { var sigImg = GetSignature(approval); var report = new ParentApprovalReport(); PrintingSettings.PassPdfDrawingExceptions = true; foreach (Band b in report.Bands) { foreach (XRControl c in b.Controls) { if (c.Name == "xrPictureBox2") { ((XRPictureBox)c).Image = sigImg; } } } report.Parameters["ParentApprovalID"].Value = approval.ID; return(report); }
private static Image GetSignature(ParentApproval approval) { // Get the most recent signature before the approval date. var sig = AppService.Current.DataContextV2.ParentSignatures .Where(x => x.LoginID == approval.ParentLoginID && x.Date < approval.DateApproved) .OrderByDescending(x => x.Date).FirstOrDefault(); // Convert transparent to white Bitmap sigImgWhite; if (sig != null) { var base64Data = Regex.Match(sig.Data, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value; var binData = Convert.FromBase64String(base64Data); Image sigImg; using (var stream = new MemoryStream(binData)) { sigImg = new Bitmap(stream); } sigImgWhite = new Bitmap(sigImg.Width, sigImg.Height); var rect = new Rectangle(Point.Empty, sigImgWhite.Size); using (var G = Graphics.FromImage(sigImgWhite)) { G.Clear(Color.White); G.DrawImageUnscaledAndClipped(sigImg, rect); } } else { sigImgWhite = new Bitmap(100, 100); using (var G = Graphics.FromImage(sigImgWhite)) { G.Clear(Color.White); } } return(sigImgWhite); }