Skip to content

Commit 613b1cf

Browse files
Merge pull request #610 from OpenSignLabs/fix_issue
fix: invalid document url convert in arrayBuffer issue
2 parents f8b21e7 + ee77534 commit 613b1cf

File tree

5 files changed

+57
-26
lines changed

5 files changed

+57
-26
lines changed

apps/OpenSign/src/components/pdf/PlaceholderType.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,7 @@ function PlaceholderType(props) {
550550
(props.isNeedSign && props.data?.signerObjId === props.signerObjId) ? (
551551
<textarea
552552
ref={inputRef}
553-
placeholder="Enter label"
553+
placeholder="Enter text"
554554
rows={1}
555555
onKeyDown={handleEnterPress}
556556
value={textValue}

apps/OpenSign/src/constant/Utils.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1895,3 +1895,19 @@ export const copytoData = (text) => {
18951895
document.body.removeChild(textArea);
18961896
}
18971897
};
1898+
1899+
export const convertPdfArrayBuffer = async (url) => {
1900+
try {
1901+
const response = await fetch(url);
1902+
// Check if the response was successful (status 200)
1903+
if (!response.ok) {
1904+
return "Error";
1905+
}
1906+
// Convert the response to ArrayBuffer
1907+
const arrayBuffer = await response.arrayBuffer();
1908+
return arrayBuffer;
1909+
} catch (error) {
1910+
console.error("Error fetching data:", error);
1911+
return "Error";
1912+
}
1913+
};

apps/OpenSign/src/pages/PdfRequestFiles.js

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ import {
2323
addDefaultSignatureImg,
2424
radioButtonWidget,
2525
replaceMailVaribles,
26-
fetchSubscription
26+
fetchSubscription,
27+
convertPdfArrayBuffer
2728
} from "../constant/Utils";
2829
import Loader from "../primitives/LoaderWithMsg";
2930
import HandleError from "../primitives/HandleError";
@@ -97,6 +98,7 @@ function PdfRequestFiles() {
9798
const [currWidgetsDetails, setCurrWidgetsDetails] = useState({});
9899
const [isSubscriptionExpired, setIsSubscriptionExpired] = useState(false);
99100
const [extUserId, setExtUserId] = useState("");
101+
const [pdfArrayBuffer, setPdfArrayBuffer] = useState("");
100102
const divRef = useRef(null);
101103
const isMobile = window.innerWidth < 767;
102104
const rowLevel =
@@ -167,6 +169,14 @@ function PdfRequestFiles() {
167169
//getting document details
168170
const documentData = await contractDocument(documentId);
169171
if (documentData && documentData.length > 0) {
172+
const url = documentData[0] && documentData[0]?.URL;
173+
//convert document url in array buffer format to use embed widgets in pdf using pdf-lib
174+
const arrayBuffer = await convertPdfArrayBuffer(url);
175+
if (arrayBuffer === "Error") {
176+
setHandleError("Error: Something went wrong!");
177+
} else {
178+
setPdfArrayBuffer(arrayBuffer);
179+
}
170180
if (isEnableSubscription) {
171181
await checkIsSubscribed(documentData[0]?.ExtUserPtr?.Email);
172182
}
@@ -543,13 +553,11 @@ function PdfRequestFiles() {
543553
setIsUiLoading(true);
544554
const pngUrl = checkUser[0].placeHolder;
545555
// Load a PDFDocument from the existing PDF bytes
546-
const existingPdfBytes = await fetch(pdfUrl).then((res) =>
547-
res.arrayBuffer()
548-
);
556+
const existingPdfBytes = pdfArrayBuffer;
549557
const pdfDoc = await PDFDocument.load(existingPdfBytes, {
550558
ignoreEncryption: true
551559
});
552-
const flag = false;
560+
const isSignYourSelfFlow = false;
553561
const extUserPtr = pdfDetails[0].ExtUserPtr;
554562
const HeaderDocId = extUserPtr?.HeaderDocId;
555563
//embed document's object id to all pages in pdf document
@@ -563,7 +571,7 @@ function PdfRequestFiles() {
563571
pngUrl,
564572
pdfDoc,
565573
pdfOriginalWidth,
566-
flag,
574+
isSignYourSelfFlow,
567575
containerWH
568576
);
569577
//get ExistUserPtr object id of user class to get tenantDetails

apps/OpenSign/src/pages/PlaceHolderSign.js

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ import {
3333
getTenantDetails,
3434
replaceMailVaribles,
3535
copytoData,
36-
fetchSubscription
36+
fetchSubscription,
37+
convertPdfArrayBuffer
3738
} from "../constant/Utils";
3839
import RenderPdf from "../components/pdf/RenderPdf";
3940
import { useNavigate } from "react-router-dom";
@@ -121,6 +122,7 @@ function PlaceHolderSign() {
121122
const [isSubscribe, setIsSubscribe] = useState(false);
122123
const [requestSubject, setRequestSubject] = useState("");
123124
const [requestBody, setRequestBody] = useState("");
125+
const [pdfArrayBuffer, setPdfArrayBuffer] = useState("");
124126
const [isAlreadyPlace, setIsAlreadyPlace] = useState({
125127
status: false,
126128
message: ""
@@ -263,6 +265,14 @@ function PlaceHolderSign() {
263265
//getting document details
264266
const documentData = await contractDocument(documentId);
265267
if (documentData && documentData.length > 0) {
268+
const url = documentData[0] && documentData[0]?.URL;
269+
//convert document url in array buffer format to use embed widgets in pdf using pdf-lib
270+
const arrayBuffer = await convertPdfArrayBuffer(url);
271+
if (arrayBuffer === "Error") {
272+
setHandleError("Error: Something went wrong!");
273+
} else {
274+
setPdfArrayBuffer(arrayBuffer);
275+
}
266276
setExtUserId(documentData[0]?.ExtUserPtr?.objectId);
267277
if (isEnableSubscription) {
268278
checkIsSubscribed(documentData[0]?.ExtUserPtr?.Email);
@@ -794,10 +804,7 @@ function PlaceHolderSign() {
794804
const prefillExist = signerPos.filter((data) => data.Role === "prefill");
795805
if (prefillExist && prefillExist.length > 0) {
796806
const placeholder = prefillExist[0].placeHolder;
797-
const pdfUrl = pdfDetails[0].URL;
798-
const existingPdfBytes = await fetch(pdfUrl).then((res) =>
799-
res.arrayBuffer()
800-
);
807+
const existingPdfBytes = pdfArrayBuffer;
801808
const pdfDoc = await PDFDocument.load(existingPdfBytes, {
802809
ignoreEncryption: true
803810
});

apps/OpenSign/src/pages/SignyourselfPdf.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ import {
2828
getDate,
2929
textWidget,
3030
getTenantDetails,
31-
checkIsSubscribed
31+
checkIsSubscribed,
32+
convertPdfArrayBuffer
3233
} from "../constant/Utils";
3334
import { useParams } from "react-router-dom";
3435
import Tour from "reactour";
@@ -102,6 +103,7 @@ function SignYourSelf() {
102103
const [isDontShow, setIsDontShow] = useState(false);
103104
const [extUserId, setExtUserId] = useState("");
104105
const [isCompleted, setIsCompleted] = useState(false);
106+
const [pdfArrayBuffer, setPdfArrayBuffer] = useState("");
105107
const divRef = useRef(null);
106108
const nodeRef = useRef(null);
107109
const [, drop] = useDrop({
@@ -190,6 +192,14 @@ function SignYourSelf() {
190192
if (documentData && documentData.length > 0) {
191193
setPdfDetails(documentData);
192194
setExtUserId(documentData[0]?.ExtUserPtr?.objectId);
195+
const url = documentData[0] && documentData[0]?.URL;
196+
//convert document url in array buffer format to use embed widgets in pdf using pdf-lib
197+
const arrayBuffer = await convertPdfArrayBuffer(url);
198+
if (arrayBuffer === "Error") {
199+
setHandleError("Error: Something went wrong!");
200+
} else {
201+
setPdfArrayBuffer(arrayBuffer);
202+
}
193203
isCompleted = documentData[0].IsCompleted && documentData[0].IsCompleted;
194204
if (isCompleted) {
195205
setIsCompleted(true);
@@ -255,9 +265,7 @@ function SignYourSelf() {
255265
setHandleError("Error: Something went wrong!");
256266
setIsLoading(loadObj);
257267
});
258-
259268
const contractUsersRes = await contractUsers(jsonSender.email);
260-
261269
if (contractUsersRes[0] && contractUsersRes.length > 0) {
262270
setContractName("_Users");
263271
setSignerUserId(contractUsersRes[0].objectId);
@@ -561,22 +569,14 @@ function SignYourSelf() {
561569
setIsCeleb(false);
562570
}, 3000);
563571
setIsUiLoading(true);
564-
const url = pdfDetails[0] && pdfDetails[0].URL;
565-
566-
const existingPdfBytes = await fetch(url).then((res) =>
567-
res.arrayBuffer()
568-
);
569-
572+
const existingPdfBytes = pdfArrayBuffer;
570573
// Load a PDFDocument from the existing PDF bytes
571574
const pdfDoc = await PDFDocument.load(existingPdfBytes, {
572575
ignoreEncryption: true
573576
});
574-
575-
const flag = true;
576-
577+
const isSignYourSelfFlow = true;
577578
const extUserPtr = pdfDetails[0].ExtUserPtr;
578579
const HeaderDocId = extUserPtr?.HeaderDocId;
579-
580580
//embed document's object id to all pages in pdf document
581581
if (!HeaderDocId) {
582582
await embedDocId(pdfDoc, documentId, allPages);
@@ -586,7 +586,7 @@ function SignYourSelf() {
586586
xyPostion,
587587
pdfDoc,
588588
pdfOriginalWidth,
589-
flag,
589+
isSignYourSelfFlow,
590590
containerWH
591591
);
592592
// console.log("pdf", pdfBytes);

0 commit comments

Comments
 (0)