-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathNutrient_InitNutrient.page
More file actions
154 lines (141 loc) · 6.45 KB
/
Copy pathNutrient_InitNutrient.page
File metadata and controls
154 lines (141 loc) · 6.45 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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<apex:page controller="NutrientController">
<!-- PSPDF Init div -->
<div id="nutrient" style="width: 100%; height: 100vh;"></div>
<script type="text/javascript"> __sfdcSessionId = '{!$Api.Session_Id}';</script>
<script src="../../soap/ajax/54.0/connection.js" type="text/javascript"></script>
<script src="https://cdn.cloud.pspdfkit.com/pspdfkit-web@1.16.1/nutrient-viewer.js" type="text/javascript"></script>
<script type="text/javascript">
var recId = '{!fileDetail}';
var updatedFile;
var tempInstance = null;
var contVersion;
var state;
var pdf;
var baseUrl = "https://cdn.cloud.pspdfkit.com/pspdfkit-web@1.16.1/";
const saveButton = {
type: "custom",
id: "download-pdf",
title: "Save",
onPress: () => {
saveFileToSalesforce();
}
};
if (recId != null) {
pdf = '{!conbase}';
if (pdf != '') {
var base64str = pdf;
var binary = atob(base64str.replace(/\s/g, ''));
var len = binary.length;
var buffer = new ArrayBuffer(len);
var view = new Uint8Array(buffer);
for (var i = 0; i < len; i++) {
view[i] = binary.charCodeAt(i);
}
pdf = new Blob([view]);
loadNutrient();
}
}
window.addEventListener('message', handleOpenAndSaveFiles);
function handleOpenAndSaveFiles(event) {
if (!event.data.versionData) {
return;
}
state = event.data.state;
contVersion = event.data;
pdf = event.data.versionData;
if (pdf != '') {
if (tempInstance == null) {
loadNutrient();
} else {
NutrientViewer.unload(tempInstance);
loadNutrient();
}
}
}
function loadNutrient() {
pdf.arrayBuffer().then(val => {
NutrientViewer.load({
baseUrl,
container: "#nutrient",
document: val,
toolbarItems: NutrientViewer.defaultToolbarItems
.filter((item) => item.type !== "signature")
.reduce((acc = [], item) => {
if (item.type === "ink") {
return acc.concat([
item,
{ type: "signature", dropdownGroup: "additional-tools" },
{ type: "form-creator", dropdownGroup: "additional-tools" },
{
type: "content-editor",
dropdownGroup: "additional-tools",
},
{
type: "redact-text-highlighter",
dropdownGroup: "additional-tools",
},
{
type: "redact-rectangle",
dropdownGroup: "additional-tools",
},
]);
}
return acc.concat([item]);
}, [])
.concat([saveButton]),
})
.then(instance => { tempInstance = instance; })
.catch(error => { console.log(error); });
})
}
function getBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => {
let result = reader.result;
let base64 = 'base64,';
let content = result.indexOf(base64) + base64.length;
let fileContents = result.substring(content);
resolve(fileContents);
}
reader.onerror = error => reject(error);
});
}
function saveFileToSalesforce() {
tempInstance.exportPDF().then((buffer) => {
const blob = new Blob([buffer], { type: "application/pdf" });
getBase64(blob).then((result) => {
updatedFile = result;
var Object = new sforce.SObject('contentVersion');
if (state == 'salesforce') {
Object.ContentDocumentId = contVersion.ContentDocumentId;
Object.PathOnClient = contVersion.PathOnClient;
Object.VersionData = updatedFile;
var res = sforce.connection.create([Object]);
res[0].success === 'true' ? alert('File updated') : alert('File not updated: ' + res[0].errors.message);
} else if (state == 'local') {
Object.Title = contVersion.fName;
Object.PathOnClient = contVersion.fName;
Object.VersionData = updatedFile;
Object.contentLocation = 'S';
var res = sforce.connection.create([Object]);
res[0].success === 'true' ? alert('File Saved Successfully') : alert('File not saved: ' + res[0].errors.message);
}
else if ('{!contVersion}' != null) {
Object.ContentDocumentId = '{!contVersion.ContentDocumentId}';
Object.PathOnClient = '{!contVersion.PathOnClient}';
Object.VersionData = updatedFile;
var res = sforce.connection.create([Object]);
res[0].success === 'true' ? alert('File updated') : alert('File not updated: ' + res[0].errors.message);
}
});
});
}
function openSalesforceFile(recordId) {
if (window.location.href != window.location.origin + "/apex/Nutrient_InitNutrient?id=" + recordId) {
window.open('/apex/Nutrient_InitNutrient?id=' + recordId, '_self');
}
}
</script>
</apex:page>