Skip to content

Commit e50a554

Browse files
Merge pull request #48 from OpenSignLabs/staging
sync fork
2 parents 903066e + 23ae727 commit e50a554

File tree

5 files changed

+72
-140
lines changed

5 files changed

+72
-140
lines changed

microfrontends/SignDocuments/src/Component/PdfRequestFiles.js

Lines changed: 11 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@ import { useParams } from "react-router-dom";
1212
import SignPad from "./component/signPad";
1313
import RenderAllPdfPage from "./component/renderAllPdfPage";
1414
import {
15+
convertPNGtoJPEG,
1516
contractDocument,
1617
getBase64FromIMG,
17-
getBase64FromUrl
18+
getBase64FromUrl,
19+
urlValidator
1820
} from "../utils/Utils";
1921
import Loader from "./component/loader";
2022
import HandleError from "./component/HandleError";
@@ -346,38 +348,13 @@ function PdfRequestFiles() {
346348
imgUrlList.map(async (data) => {
347349
//cheking signUrl is defau;t signature url of custom url
348350
let ImgUrl = data.SignUrl;
349-
const checkUrl = ImgUrl.includes("https:");
351+
const checkUrl = urlValidator(ImgUrl);
350352

351353
//if default signature url then convert it in base 64
352354
if (checkUrl) {
353355
ImgUrl = await getBase64FromIMG(ImgUrl + "?get");
354356
}
355357
//function for called convert png signatre to jpeg in base 64
356-
const convertPNGtoJPEG = (base64Data) => {
357-
return new Promise((resolve, reject) => {
358-
const canvas = document.createElement("canvas");
359-
const img = new Image();
360-
img.src = base64Data;
361-
362-
img.onload = () => {
363-
canvas.width = img.width;
364-
canvas.height = img.height;
365-
366-
const ctx = canvas.getContext("2d");
367-
ctx.drawImage(img, 0, 0);
368-
369-
// Convert to JPEG by using the canvas.toDataURL() method
370-
const jpegBase64Data = canvas.toDataURL("image/jpeg");
371-
372-
resolve(jpegBase64Data);
373-
};
374-
375-
img.onerror = (error) => {
376-
reject(error);
377-
};
378-
});
379-
};
380-
381358
convertPNGtoJPEG(ImgUrl)
382359
.then((jpegBase64Data) => {
383360
const removeBase64Fromjpeg = "data:image/jpeg;base64,";
@@ -433,32 +410,21 @@ function PdfRequestFiles() {
433410
const images = await Promise.all(
434411
imgUrlList.map(async (url) => {
435412
let signUrl = url.SignUrl;
436-
437-
const checkUrl = url.SignUrl.includes("https:");
413+
if (url.ImageType === "image/png") {
414+
//function for convert signature png base64 url to jpeg base64
415+
const newUrl = await convertPNGtoJPEG(signUrl);
416+
signUrl = newUrl;
417+
}
418+
const checkUrl = urlValidator(signUrl);
438419
if (checkUrl) {
439420
signUrl = signUrl + "?get";
440421
}
441422
const res = await fetch(signUrl);
442-
443423
return res.arrayBuffer();
444424
})
445425
);
446426
images.forEach(async (imgData, id) => {
447-
let img;
448-
if (
449-
imgUrlList[id].ImageType &&
450-
imgUrlList[id].ImageType === "image/jpeg"
451-
) {
452-
img = await pdfDoc.embedJpg(imgData);
453-
} else if (
454-
imgUrlList[id].ImageType &&
455-
imgUrlList[id].ImageType === "image/png"
456-
) {
457-
img = await pdfDoc.embedPng(imgData);
458-
} else {
459-
img = await pdfDoc.embedPng(imgData);
460-
}
461-
427+
let img = await pdfDoc.embedJpg(imgData);
462428
const imgHeight = imgUrlList[id].Height
463429
? imgUrlList[id].Height
464430
: 60;

microfrontends/SignDocuments/src/Component/SignYourselfPdf.js

Lines changed: 10 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import EmailComponent from "./component/emailComponent";
1515
import FieldsComponent from "./component/fieldsComponent";
1616
import Modal from "react-bootstrap/Modal";
1717
import ModalHeader from "react-bootstrap/esm/ModalHeader";
18-
import { contractDocument, getBase64FromIMG } from "../utils/Utils";
18+
import { convertPNGtoJPEG, contractDocument, getBase64FromIMG } from "../utils/Utils";
1919
import { useParams } from "react-router-dom";
2020
import Tour from "reactour";
2121
import { onSaveImage, onSaveSign } from "../utils/Utils";
@@ -24,7 +24,7 @@ import HandleError from "./component/HandleError";
2424
import Nodata from "./component/Nodata";
2525
import Header from "./component/header";
2626
import RenderPdf from "./component/renderPdf";
27-
import { contractUsers, contactBook } from "../utils/Utils";
27+
import { contractUsers, contactBook, urlValidator } from "../utils/Utils";
2828
import { modalAlign } from "../utils/Utils";
2929
import { $ } from 'select-dom';
3030
//For signYourself inProgress section signer can add sign and complete doc sign.
@@ -446,39 +446,13 @@ function SignYourSelf() {
446446
imgUrlList.map(async (data) => {
447447
let ImgUrl = data.SignUrl;
448448
//cheking signUrl is defau;t signature url of custom url
449-
const checkUrl = ImgUrl.includes("https:");
449+
const checkUrl = urlValidator(ImgUrl);
450450

451451
//if default signature url then convert it in base 64
452452
if (checkUrl) {
453453
ImgUrl = await getBase64FromIMG(ImgUrl + "?get");
454454
}
455-
456455
//function for convert signature png base64 url to jpeg base64
457-
const convertPNGtoJPEG = (base64Data) => {
458-
return new Promise((resolve, reject) => {
459-
const canvas = document.createElement("canvas");
460-
const img = new Image();
461-
img.src = base64Data;
462-
463-
img.onload = () => {
464-
canvas.width = img.width;
465-
canvas.height = img.height;
466-
467-
const ctx = canvas.getContext("2d");
468-
ctx.drawImage(img, 0, 0);
469-
470-
// Convert to JPEG by using the canvas.toDataURL() method
471-
const jpegBase64Data = canvas.toDataURL("image/jpeg");
472-
473-
resolve(jpegBase64Data);
474-
};
475-
476-
img.onerror = (error) => {
477-
reject(error);
478-
};
479-
});
480-
};
481-
482456
convertPNGtoJPEG(ImgUrl)
483457
.then((jpegBase64Data) => {
484458
const removeBase64Fromjpeg = "data:image/jpeg;base64,";
@@ -526,7 +500,12 @@ function SignYourSelf() {
526500
imgUrlList.map(async (url) => {
527501
let signUrl = url.SignUrl;
528502

529-
const checkUrl = url.SignUrl.includes("https:");
503+
if (url.ImageType === "image/png") {
504+
//function for convert signature png base64 url to jpeg base64
505+
const newUrl = await convertPNGtoJPEG(signUrl);
506+
signUrl = newUrl;
507+
}
508+
const checkUrl = urlValidator(signUrl);
530509
if (checkUrl) {
531510
signUrl = signUrl + "?get";
532511
}
@@ -536,21 +515,7 @@ function SignYourSelf() {
536515
})
537516
);
538517
images.forEach(async (imgData, id) => {
539-
let img;
540-
if (
541-
imgUrlList[id].ImageType &&
542-
imgUrlList[id].ImageType === "image/jpeg"
543-
) {
544-
img = await pdfDoc.embedJpg(imgData);
545-
} else if (
546-
imgUrlList[id].ImageType &&
547-
imgUrlList[id].ImageType === "image/png"
548-
) {
549-
img = await pdfDoc.embedPng(imgData);
550-
} else {
551-
img = await pdfDoc.embedPng(imgData);
552-
}
553-
518+
let img = await pdfDoc.embedJpg(imgData);
554519
const imgHeight = imgUrlList[id].Height
555520
? imgUrlList[id].Height
556521
: 60;

microfrontends/SignDocuments/src/Component/recipientSignPdf.js

Lines changed: 14 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,12 @@ import DefaultSignature from "./component/defaultSignature";
1414
import {
1515
getBase64FromUrl,
1616
getBase64FromIMG,
17+
contactBookName,
18+
convertPNGtoJPEG,
1719
contractUsers,
1820
contactBook,
19-
contractDocument
21+
contractDocument,
22+
urlValidator
2023
} from "../utils/Utils";
2124
import Tour from "reactour";
2225
import Signedby from "./component/signedby";
@@ -446,38 +449,13 @@ function EmbedPdfImage() {
446449
imgUrlList.map(async (data) => {
447450
//cheking signUrl is defau;t signature url of custom url
448451
let ImgUrl = data.SignUrl;
449-
const checkUrl = ImgUrl.includes("https:");
452+
const checkUrl = urlValidator(ImgUrl);
450453

451454
//if default signature url then convert it in base 64
452455
if (checkUrl) {
453456
ImgUrl = await getBase64FromIMG(ImgUrl + "?get");
454457
}
455-
//function for called convert png signatre to jpeg in base 64
456-
const convertPNGtoJPEG = (base64Data) => {
457-
return new Promise((resolve, reject) => {
458-
const canvas = document.createElement("canvas");
459-
const img = new Image();
460-
img.src = base64Data;
461-
462-
img.onload = () => {
463-
canvas.width = img.width;
464-
canvas.height = img.height;
465-
466-
const ctx = canvas.getContext("2d");
467-
ctx.drawImage(img, 0, 0);
468-
469-
// Convert to JPEG by using the canvas.toDataURL() method
470-
const jpegBase64Data = canvas.toDataURL("image/jpeg");
471-
472-
resolve(jpegBase64Data);
473-
};
474-
475-
img.onerror = (error) => {
476-
reject(error);
477-
};
478-
});
479-
};
480-
458+
//function for convert signature png base64 url to jpeg base64
481459
convertPNGtoJPEG(ImgUrl)
482460
.then((jpegBase64Data) => {
483461
const removeBase64Fromjpeg = "data:image/jpeg;base64,";
@@ -524,7 +502,12 @@ function EmbedPdfImage() {
524502
const images = await Promise.all(
525503
imgUrlList.map(async (url) => {
526504
let signUrl = url.SignUrl;
527-
const checkUrl = url.SignUrl.includes("https:");
505+
if (url.ImageType === "image/png") {
506+
//function for convert signature png base64 url to jpeg base64
507+
const newUrl = await convertPNGtoJPEG(signUrl);
508+
signUrl = newUrl;
509+
}
510+
const checkUrl = urlValidator(signUrl);
528511
if (checkUrl) {
529512
signUrl = signUrl + "?get";
530513
}
@@ -534,20 +517,7 @@ function EmbedPdfImage() {
534517
})
535518
);
536519
images.forEach(async (imgData, id) => {
537-
let img;
538-
if (
539-
imgUrlList[id].ImageType &&
540-
imgUrlList[id].ImageType === "image/jpeg"
541-
) {
542-
img = await pdfDoc.embedJpg(imgData);
543-
} else if (
544-
imgUrlList[id].ImageType &&
545-
imgUrlList[id].ImageType === "image/png"
546-
) {
547-
img = await pdfDoc.embedPng(imgData);
548-
} else {
549-
img = await pdfDoc.embedPng(imgData);
550-
}
520+
let img = await pdfDoc.embedJpg(imgData);
551521

552522
const imgHeight = imgUrlList[id].Height
553523
? imgUrlList[id].Height
@@ -1137,4 +1107,5 @@ function EmbedPdfImage() {
11371107
</DndProvider>
11381108
);
11391109
}
1110+
11401111
export default EmbedPdfImage;

microfrontends/SignDocuments/src/css/signature.css

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -629,7 +629,6 @@ option {
629629
/* The sticky class is added to the navbar
630630
with JS when it reaches its scroll position */
631631
.stickyHead {
632-
position: fixed;
633632
top: 50px;
634633
left: 0.9rem;
635634
}

microfrontends/SignDocuments/src/utils/Utils.js

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,35 @@ export async function getBase64FromIMG(url) {
2929
};
3030
});
3131
}
32+
//function for convert signature png base64 url to jpeg base64
33+
export const convertPNGtoJPEG = (base64Data) => {
34+
return new Promise((resolve, reject) => {
35+
const canvas = document.createElement("canvas");
36+
const img = new Image();
37+
img.src = base64Data;
38+
39+
img.onload = () => {
40+
canvas.width = img.width;
41+
canvas.height = img.height;
42+
43+
const ctx = canvas.getContext("2d");
44+
ctx.fillStyle = "#ffffff"; // white color
45+
ctx.fillRect(0, 0, canvas.width, canvas.height);
46+
ctx.drawImage(img, 0, 0);
47+
// Convert to JPEG by using the canvas.toDataURL() method
48+
const jpegBase64Data = canvas.toDataURL("image/jpeg");
49+
50+
resolve(jpegBase64Data);
51+
};
52+
53+
img.onerror = (error) => {
54+
reject(error);
55+
};
56+
});
57+
};
3258

3359
export function getHostUrl() {
3460
const hostUrl = window.location.href;
35-
/// const hostUrl = "https://contracts-defaultssty.qik.ai/#/mf/remoteUrl=aHR0cHM6Ly9xaWstYWktb3JnLmdpdGh1Yi5pby9TaWduLU1pY3JvYXBwVjIvcmVtb3RlRW50cnkuanM=&moduleToLoad=AppRoutes&remoteName=signmicroapp/legadrive";
36-
// const hostUrl = "https://contracts-defaultssty.qik.ai/#/"
37-
// const hostUrl = "https://lionfish-app-75ly7.ondigitalocean.app/mf/remoteUrl=aHR0cHM6Ly9xaWstYWktb3JnLmdpdGh1Yi5pby9TaWduLU1pY3JvYXBwVjIvcmVtb3RlRW50cnkuanM=&moduleToLoad=AppRoutes&remoteName=signmicroapp/legadrive"
38-
//const hostUrl = "https://app.opensignlabs.com/rpmf/remoteUrl=aHR0cHM6Ly9xaWstYWktb3JnLmdpdGh1Yi5pby9TaWduLU1pY3JvYXBwVjIvcmVtb3RlRW50cnkuanM=&moduleToLoad=AppRoutes&remoteName=signmicroapp/draftDocument";
3961

4062
if (hostUrl) {
4163
const urlSplit = hostUrl.split("/");
@@ -301,7 +323,16 @@ export const contactBook = async (objectId) => {
301323
return result;
302324
};
303325

304-
export const modalAlign = () => {
326+
// function for validating URLs
327+
export function urlValidator(url) {
328+
try {
329+
const newUrl = new URL(url);
330+
return newUrl.protocol === 'http:' || newUrl.protocol === 'https:';
331+
} catch (err) {
332+
return false;
333+
}
334+
}
335+
export function modalAlign() {
305336
let modalDialog = $('.modal-dialog').getBoundingClientRect();
306337
let mobileHead = $('.mobileHead').getBoundingClientRect()
307338
let modal = $('.modal-dialog');
@@ -310,4 +341,4 @@ export const modalAlign = () => {
310341
modal.style.left = leftOffset + 'px';
311342
modal.style.top = (window.innerHeight/3) + 'px';
312343
}
313-
};
344+
};

0 commit comments

Comments
 (0)