-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodifypdf-sr.js
More file actions
120 lines (95 loc) · 3.31 KB
/
modifypdf-sr.js
File metadata and controls
120 lines (95 loc) · 3.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
const hummus = require("hummus");
const request = require("superagent");
const document = "demo_document.pdf";
const docoutput = "demo_document_mod.pdf";
const pdfWriter = hummus.createWriterToModify(__dirname + `/pdf/${document}`, {
modifiedFilePath: __dirname + `/output/${docoutput}`,
});
const pageModifier = new hummus.PDFPageModifier(pdfWriter, 0, true);
const cxt = pageModifier.startContext().getContext();
//black color
const textOptionsBlack = {
font: pdfWriter.getFontForFile(__dirname + "/fonts/arial.ttf"),
size: 14,
colorspace: "gray",
color: 0x00,
underline: true,
};
//white color
const textOptionsWhite = {
font: pdfWriter.getFontForFile(__dirname + "/fonts/arial.ttf"),
size: 14,
colorspace: "gray",
color: 0xffffff,
underline: false,
};
//white color - multiline
const textOptionsWhiteMulti = {
font: pdfWriter.getFontForFile(__dirname + "/fonts/arial.ttf"),
size: 36,
colorspace: "gray",
color: 0xffffff,
underline: false,
};
//Refference: 1) Width - X (left-right), 2) Height - Y (botton-up)
// writeText
cxt
.writeText("Please sign here:", 75, 240, textOptionsBlack)
.writeText("[[s|1]]", 75, 220, textOptionsWhite)
.writeText("Customer name:", 300, 240, textOptionsBlack)
.writeText("[[t|1| id: contact_name]]", 300, 220, textOptionsWhite)
.writeText("Multiline Text:", 90, 650, textOptionsBlack)
.writeText("[[t|1| id: multiline_text]]", 90, 600, textOptionsWhiteMulti)
.writeText("Do you agree with this contract?", 370, 400, textOptionsBlack)
.writeText("[[c|1| id: checkbox1]]", 370, 380, textOptionsWhite);
pageModifier.endContext().writePage();
pdfWriter.end();
console.log("Document Successfully Modified! \n");
console.log("Initializing a SignRequest... \n");
//Send SignRequest:
const baseUrl = "https://<your_team>.signrequest.com/api/v1";
//base 64 doc
const fs = require("fs");
const buffer = Buffer.from(__dirname + `/output/${docoutput}`, "binary");
const dataFile = fs.readFileSync(buffer);
const pdf = dataFile.toString("base64");
console.log("Output document encoded to base64. \n")
const data = {
file_from_content: pdf,
file_from_content_name: __dirname + `/output/${docoutput}`,
name: "demo_document.pdf",
signers: [
{
email: "name+1@provider.com",
order: 1,
first_name: 'Name',
last_name: 'Last Name'
},
],
from_email: "name@provider.com",
message: "Hi, \n \nPlease sign the document below. \nBest regards",
who: "o",
subject: "Document",
prefill_tags: [
{ external_id: "contact_name", text: "Name Last Name" },
{ external_id: "checkbox1", checkbox_value: true },
{
external_id: "multiline_text",
text:
"Lorem ipsum dolor sit amet, aliquam tristique nulla. \nNam fusce ipsum molestie auctor, placerat faucibus. \nProin ligula libero quam leo porta, phasellus metus urna justo nec fringilla, risus quis aliquam sollicitudin, et per sed diam.",
},
],
};
const Token = "Token PASTE_YOUR_TOKEN_HERE"
const createSignRequest = () => {
request
.post(`${baseUrl}/signrequest-quick-create/`)
.set("Authorization", Token)
.send(data)
.then((response) => {
console.log("Response: ", response.body);
})
.catch(console.error);
};
createSignRequest();
console.log('SignRequest created! Check your e-mail for more details, or use your Embed/Prepare URL. \n \n')