public async Task <ActionResult> DigitalSignatureReport(int reportId, [FromBody] DigitalSignatureViewModel digitalSignatureViewModel) { try { var report = _reportService.GetReport(reportId); byte[] signedPdfDocument = _digitalSignature.SetDigitalSignature(digitalSignatureViewModel, reportId); await _reportService.SignedReport(reportId); await _graphServiceFiles.CreateSignedFileInSharedDrive(Token, report.ReportType.Name, signedPdfDocument); return(Ok()); } catch (Exception ex) { throw new Exception(ex.Message, ex); } }
public byte[] SetDigitalSignature(DigitalSignatureViewModel digitalSignature, int reportId) { try { Report report = _reportService.GetReport(reportId); byte[] pdfDocumentBytes = _documentService.GetSignedPdfDocument(report, report.SignerUser.FirstName, report.SignerUser.LastName); Stream streamCertificate = new FileStream(CertificatePath, FileMode.Open); PdfLoadedDocument pdfLoadedDocument = new PdfLoadedDocument(pdfDocumentBytes); PdfCertificate pdfCertificate = new PdfCertificate(streamCertificate, CertificatePassword); FileStream jpgFile = new FileStream(ImagePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); PdfBitmap bmp = new PdfBitmap(jpgFile); PdfPageBase page = pdfLoadedDocument.Pages[0]; PdfSignature signature = new PdfSignature(pdfLoadedDocument, page, pdfCertificate, "Signature"); signature.Bounds = new RectangleF(new PointF(5, 5), page.Size); signature.ContactInfo = report.SignerUser.UserName; signature.LocationInfo = digitalSignature.Location; signature.Reason = digitalSignature.Reason; MemoryStream stream = new MemoryStream(); pdfLoadedDocument.Save(stream); pdfLoadedDocument.Close(true); return(stream.ToArray()); } catch (Exception ex) { throw new Exception(ex.Message, ex); } }