1
1
import SignPDF from './SignPDF.min.cjs' ;
2
2
import fs from 'node:fs' ;
3
3
import axios from 'axios' ;
4
- import { plainAddPlaceholder } from 'node-signpdf/dist/helpers/index.js' ;
4
+ import { pdflibAddPlaceholder } from './customSignPdf/pdflibplaceholder.min.js' ;
5
+ import { PDFDocument } from 'pdf-lib' ;
5
6
const serverUrl = process . env . SERVER_URL ,
6
7
APPID = process . env . APP_ID ,
7
8
masterKEY = process . env . MASTER_KEY ;
@@ -15,20 +16,20 @@ async function uploadFile(e, a) {
15
16
console . log ( 'Err ' , e ) , fs . unlinkSync ( a ) ;
16
17
}
17
18
}
18
- async function updateDoc ( t , s , r , i , n , o ) {
19
+ async function updateDoc ( t , s , r , i , o , n ) {
19
20
try {
20
21
var d = {
21
- UserPtr : { __type : 'Pointer' , className : o , objectId : r } ,
22
+ UserPtr : { __type : 'Pointer' , className : n , objectId : r } ,
22
23
SignedUrl : s ,
23
24
Activity : 'Signed' ,
24
25
ipAddress : i ,
25
26
} ;
26
27
let e ;
27
- var l = ( e = n . AuditTrail && 0 < n . AuditTrail . length ? [ ...n . AuditTrail , d ] : [ d ] ) . filter (
28
+ var l = ( e = o . AuditTrail && 0 < o . AuditTrail . length ? [ ...o . AuditTrail , d ] : [ d ] ) . filter (
28
29
e => 'Signed' === e . Activity
29
30
) ;
30
31
let a = ! 1 ;
31
- ! ( ( n . Signers && 0 < n . Signers . length && l . length !== n . Signers . length ) || ! ( a = ! 0 ) ) ;
32
+ ! ( ( o . Signers && 0 < o . Signers . length && l . length !== o . Signers . length ) || ! ( a = ! 0 ) ) ;
32
33
var c = { SignedUrl : s , AuditTrail : e , IsCompleted : a } ;
33
34
await axios . put ( serverUrl + '/classes/contracts_Document/' + t , c , {
34
35
headers : {
@@ -150,9 +151,8 @@ async function sendDoctoWebhook(t, e, a, s) {
150
151
}
151
152
} ) ) ;
152
153
}
153
- async function PDF ( i , n ) {
154
+ async function PDF ( i ) {
154
155
try {
155
- i . params . sign ;
156
156
var e = i . params . docId ,
157
157
a = i . params . userId ,
158
158
o = await axios . get (
@@ -173,125 +173,136 @@ async function PDF(i, n) {
173
173
} ) ;
174
174
if ( ! t . data || ! t . data . objectId ) return { status : 'error' , message : 'this user not allowed!' } ;
175
175
{
176
- var d ,
176
+ var n ,
177
+ d ,
177
178
l ,
178
- c ,
179
- p = JSON . stringify ( { objectId : a } ) ;
179
+ c = JSON . stringify ( { objectId : a } ) ;
180
180
let s , r ;
181
181
r = a
182
- ? ( d = await axios . get ( serverUrl + '/classes/contracts_Contactbook?where=' + p , {
182
+ ? ( n = await axios . get ( serverUrl + '/classes/contracts_Contactbook?where=' + c , {
183
183
headers : {
184
184
'X-Parse-Application-Id' : APPID ,
185
185
'X-Parse-Session-Token' : i . headers . sessiontoken ,
186
186
} ,
187
- } ) ) . data && 0 < d . data . results . length
188
- ? ( ( s = d ) , 'contracts_Contactbook' )
189
- : ( ( s = await axios . get ( serverUrl + '/classes/contracts_Users?where=' + p , {
187
+ } ) ) . data && 0 < n . data . results . length
188
+ ? ( ( s = n ) , 'contracts_Contactbook' )
189
+ : ( ( s = await axios . get ( serverUrl + '/classes/contracts_Users?where=' + c , {
190
190
headers : { 'X-Parse-Application-Id' : APPID , 'X-Parse-Master-Key' : masterKEY } ,
191
191
} ) ) ,
192
192
'contracts_Users' )
193
- : ( ( l = JSON . stringify ( {
193
+ : ( ( d = JSON . stringify ( {
194
194
UserId : { __type : 'Pointer' , className : '_User' , objectId : t . data . objectId } ,
195
195
} ) ) ,
196
- ( c = await axios . get ( serverUrl + '/classes/contracts_Users?where=' + l , {
196
+ ( l = await axios . get ( serverUrl + '/classes/contracts_Users?where=' + d , {
197
197
headers : { 'X-Parse-Application-Id' : APPID , 'X-Parse-Master-Key' : masterKEY } ,
198
- } ) ) . data && 0 < c . data . results . length
199
- ? ( ( s = c ) , 'contracts_Users' )
200
- : ( ( s = await axios . get ( serverUrl + '/classes/contracts_Contactbook?where=' + l , {
198
+ } ) ) . data && 0 < l . data . results . length
199
+ ? ( ( s = l ) , 'contracts_Users' )
200
+ : ( ( s = await axios . get ( serverUrl + '/classes/contracts_Contactbook?where=' + d , {
201
201
headers : {
202
202
'X-Parse-Application-Id' : APPID ,
203
203
'X-Parse-Session-Token' : i . headers . sessiontoken ,
204
204
} ,
205
205
} ) ) ,
206
206
'contracts_Contactbook' ) ) ;
207
- var m = s . data . results [ 0 ] . Name ,
208
- g = s . data . results [ 0 ] . Email ;
207
+ var p = s . data . results [ 0 ] . Name ,
208
+ m = s . data . results [ 0 ] . Email ;
209
209
if ( ! i . params . pdfFile ) return { status : 'error' , message : 'pdf file not present!' } ;
210
210
{
211
211
let e = Buffer . from ( i . params . pdfFile , 'base64' ) ;
212
- var h = process . env . PFX_BASE64 ,
213
- u = Buffer . from ( h , 'base64' ) ,
214
- f = {
212
+ var g = process . env . PFX_BASE64 ,
213
+ h = Buffer . from ( g , 'base64' ) ,
214
+ u = {
215
215
UserPtr : { __type : 'Pointer' , className : r , objectId : s . data . results [ 0 ] . objectId } ,
216
216
SignedUrl : '' ,
217
217
Activity : 'Signed' ,
218
218
ipAddress : i . headers [ 'x-real-ip' ] ,
219
219
} ;
220
220
let a ;
221
- var y = ( a =
221
+ var f = ( a =
222
222
o . data . AuditTrail && 0 < o . data . AuditTrail . length
223
- ? [ ...o . data . AuditTrail , f ]
224
- : [ f ] ) . filter ( e => 'Signed' === e . Activity ) ;
223
+ ? [ ...o . data . AuditTrail , u ]
224
+ : [ u ] ) . filter ( e => 'Signed' === e . Activity ) ;
225
225
let t = ! 1 ;
226
226
! (
227
- ( o . data . Signers && 0 < o . data . Signers . length && y . length !== o . data . Signers . length ) ||
227
+ ( o . data . Signers && 0 < o . data . Signers . length && f . length !== o . data . Signers . length ) ||
228
228
! ( t = ! 0 )
229
229
) ;
230
- var v ,
230
+ var y ,
231
231
P ,
232
- b = `exported_file_${ Math . floor ( 5e3 * Math . random ( ) ) } .pdf` ,
233
- x = './exports/' + b ,
234
- U =
232
+ v ,
233
+ b ,
234
+ x ,
235
+ w ,
236
+ U ,
237
+ I ,
238
+ S ,
239
+ A = `exported_file_${ Math . floor ( 5e3 * Math . random ( ) ) } .pdf` ,
240
+ D = './exports/' + A ,
241
+ E =
235
242
( t
236
- ? ( ( v = o . data . Signers ?. map ( e => e . Name + ' <' + e . Email + '>' ) ) ,
243
+ ? ( ( y = o . data . Signers ?. map ( e => e . Name + ' <' + e . Email + '>' ) ) ,
237
244
( e =
238
- v && 0 < v . length
239
- ? plainAddPlaceholder ( {
240
- pdfBuffer : e ,
241
- reason : 'Digitally signed by OpenSign for ' + v ?. join ( ', ' ) ,
245
+ y && 0 < y . length
246
+ ? ( ( P = await PDFDocument . load ( e ) ) ,
247
+ pdflibAddPlaceholder ( {
248
+ pdfDoc : P ,
249
+ reason : 'Digitally signed by OpenSign for ' + y ?. join ( ', ' ) ,
242
250
location : 'location' ,
243
- signatureLength : 1e4 ,
244
- } )
245
- : plainAddPlaceholder ( {
246
- pdfBuffer : e ,
247
- reason : 'Digitally signed by OpenSign for ' + m + ' <' + g + '>' ,
251
+ signatureLength : 15e3 ,
252
+ } ) ,
253
+ ( v = await P . save ( ) ) ,
254
+ Buffer . from ( v ) )
255
+ : ( ( b = await PDFDocument . load ( e ) ) ,
256
+ pdflibAddPlaceholder ( {
257
+ pdfDoc : b ,
258
+ reason : 'Digitally signed by OpenSign for ' + p + ' <' + m + '>' ,
248
259
location : 'location' ,
249
- signatureLength : 1e4 ,
250
- } ) ) ,
251
- ( P = await new SignPDF ( e , u ) . signPDF ( ) ) ,
252
- fs . writeFileSync ( x , P ) )
253
- : fs . writeFileSync ( x , e ) ,
254
- await uploadFile ( b , x ) ) ;
255
- if ( U && U . imageUrl ) {
256
- const n = await updateDoc (
257
- i . params . docId ,
258
- U . imageUrl ,
259
- s . data . results [ 0 ] . objectId ,
260
- i . headers [ 'x-real-ip' ] ,
261
- o . data ,
262
- r
263
- ) ;
264
- var I ,
265
- w = {
266
- url : U . imageUrl ,
260
+ signatureLength : 15e3 ,
261
+ } ) ,
262
+ ( x = await b . save ( ) ) ,
263
+ Buffer . from ( x ) ) ) ,
264
+ ( w = await new SignPDF ( e , h ) . signPDF ( ) ) ,
265
+ fs . writeFileSync ( D , w ) )
266
+ : fs . writeFileSync ( D , e ) ,
267
+ await uploadFile ( A , D ) ) ;
268
+ if ( E && E . imageUrl )
269
+ return (
270
+ ( U = await updateDoc (
271
+ i . params . docId ,
272
+ E . imageUrl ,
273
+ s . data . results [ 0 ] . objectId ,
274
+ i . headers [ 'x-real-ip' ] ,
275
+ o . data ,
276
+ r
277
+ ) ) ,
278
+ ( I = {
279
+ url : E . imageUrl ,
267
280
sender : { Mail : o . data . ExtUserPtr . Email , Name : o . data . ExtUserPtr . Name } ,
268
281
pdfName : o . data . Name ,
269
- receiver : g ,
270
- } ;
271
- return (
282
+ receiver : m ,
283
+ } ) ,
272
284
o . data . IsSendMail && ! 1 === o . data . IsSendMail
273
285
? console . log ( "don't send mail" )
274
- : sendMail ( w ) ,
275
- sendDoctoWebhook ( o , U . imageUrl , 'signed' , s ?. data . results ?. [ 0 ] ) ,
276
- n &&
277
- n . isCompleted &&
278
- ( ( I = {
279
- url : U . imageUrl ,
286
+ : sendMail ( I ) ,
287
+ sendDoctoWebhook ( o , E . imageUrl , 'signed' , s ?. data . results ?. [ 0 ] ) ,
288
+ U &&
289
+ U . isCompleted &&
290
+ ( ( S = {
291
+ url : E . imageUrl ,
280
292
sender : { Mail : o . data . ExtUserPtr . Email , Name : 'OpenSign™' } ,
281
293
pdfName : o . data . Name ,
282
294
receiver : o . data . ExtUserPtr . Email ,
283
295
} ) ,
284
296
o . data . IsSendMail && ! 1 === o . data . IsSendMail
285
297
? console . log ( "don't send mail" )
286
- : sendCompletedMail ( I ) ,
287
- sendDoctoWebhook ( o , U . imageUrl , 'completed' ) ) ,
288
- fs . unlinkSync ( x ) ,
289
- console . log ( 'New Signed PDF created called: ' + x ) ,
290
- 'success' === n . message
291
- ? { status : 'success' , data : U . imageUrl }
298
+ : sendCompletedMail ( S ) ,
299
+ sendDoctoWebhook ( o , E . imageUrl , 'completed' ) ) ,
300
+ fs . unlinkSync ( D ) ,
301
+ console . log ( 'New Signed PDF created called: ' + D ) ,
302
+ 'success' === U . message
303
+ ? { status : 'success' , data : E . imageUrl }
292
304
: { status : 'error' , message : 'please provide required parameters!' }
293
305
) ;
294
- }
295
306
}
296
307
}
297
308
} catch ( e ) {
0 commit comments