27-09-2023
This commit is contained in:
@@ -39,18 +39,6 @@ var Rect = PSPDFKit.Geometry.Rect;
|
||||
var SignatureFormField = PSPDFKit.FormFields.SignatureFormField;
|
||||
var _a = PSPDFKit.ElectronicSignatureCreationMode, DRAW = _a.DRAW, TYPE = _a.TYPE;
|
||||
var DISABLED = PSPDFKit.AutoSaveMode.DISABLED;
|
||||
var allowedToolbarItems = [
|
||||
"sidebar-thumbnails",
|
||||
"sidebar-document-ouline",
|
||||
"sidebar-bookmarks",
|
||||
"pager",
|
||||
"pan",
|
||||
"zoom-out",
|
||||
"zoom-in",
|
||||
"zoom-mode",
|
||||
"spacer",
|
||||
"search"
|
||||
];
|
||||
var App = /** @class */ (function () {
|
||||
function App() {
|
||||
}
|
||||
@@ -58,19 +46,21 @@ var App = /** @class */ (function () {
|
||||
// and will trigger loading of the Editor Interface
|
||||
App.loadPDFFromUrl = function (container, envelopeKey) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var envelopeObject, document, arrayBuffer, e_1, _a, annotations, createdAnnotation;
|
||||
var envelopeObject, arrayBuffer, e_1, _a, annotations, createdAnnotations;
|
||||
return __generator(this, function (_b) {
|
||||
switch (_b.label) {
|
||||
case 0:
|
||||
App.ui = new UI();
|
||||
console.debug("Loading PSPDFKit..");
|
||||
return [4 /*yield*/, App.loadData("/api/get-data/".concat(envelopeKey))];
|
||||
case 1:
|
||||
envelopeObject = _b.sent();
|
||||
document = envelopeObject.envelope.documents[0];
|
||||
App.envelopeKey = envelopeKey;
|
||||
App.currentDocument = envelopeObject.envelope.documents[0];
|
||||
_b.label = 2;
|
||||
case 2:
|
||||
_b.trys.push([2, 4, , 5]);
|
||||
return [4 /*yield*/, App.loadDocument("/api/download/".concat(envelopeKey, "?id=").concat(document.id))];
|
||||
return [4 /*yield*/, App.loadDocument("/api/download/".concat(envelopeKey, "?id=").concat(App.currentDocument.id))];
|
||||
case 3:
|
||||
arrayBuffer = _b.sent();
|
||||
return [3 /*break*/, 5];
|
||||
@@ -87,30 +77,24 @@ var App = /** @class */ (function () {
|
||||
console.debug(envelopeObject.envelope);
|
||||
console.debug("PSPDFKit configured!");
|
||||
annotations = [];
|
||||
document.elements.forEach(function (element) {
|
||||
console.log("Loading element");
|
||||
console.debug("Page", element.page);
|
||||
console.debug("Width / Height", element.width, element.height);
|
||||
console.debug("Top / Left", element.top, element.left);
|
||||
var id = PSPDFKit.generateInstantId();
|
||||
var annotation = App.createSignatureAnnotation(id, element.width, element.height, element.top, element.left, element.page);
|
||||
var formField = new SignatureFormField({
|
||||
name: id,
|
||||
annotationIds: List([annotation.id])
|
||||
});
|
||||
App.currentDocument.elements.forEach(function (element) {
|
||||
console.log("Creating annotation for element", element.id);
|
||||
var _a = App.createAnnotationFromElement(element), annotation = _a[0], formField = _a[1];
|
||||
annotations.push(annotation);
|
||||
annotations.push(formField);
|
||||
console.debug("Annotation created.");
|
||||
});
|
||||
return [4 /*yield*/, App.Instance.create(annotations)];
|
||||
case 7:
|
||||
createdAnnotation = (_b.sent())[0];
|
||||
console.debug(createdAnnotation);
|
||||
createdAnnotations = _b.sent();
|
||||
console.debug(createdAnnotations);
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
App.inchToPoint = function (inch) {
|
||||
return inch * 72;
|
||||
};
|
||||
// Makes a call to the supplied url and fetches the binary response as an array buffer
|
||||
App.loadDocument = function (url) {
|
||||
return fetch(url, { credentials: "include" })
|
||||
@@ -121,57 +105,132 @@ var App = /** @class */ (function () {
|
||||
return fetch(url, { credentials: "include" })
|
||||
.then(function (res) { return res.json(); });
|
||||
};
|
||||
App.postDocument = function (url, buffer) {
|
||||
return fetch(url, { credentials: "include", method: "POST", body: buffer })
|
||||
.then(function (res) { return res.json(); });
|
||||
};
|
||||
// Load the PSPDFKit UI by setting a target element as the container to render in
|
||||
// and a arraybuffer which represents the document that should be displayed.
|
||||
App.loadPSPDFKit = function (arrayBuffer, container) {
|
||||
var annotationPresets = PSPDFKit.defaultAnnotationPresets;
|
||||
console.log(annotationPresets);
|
||||
annotationPresets.ink = {
|
||||
lineWidth: 10
|
||||
};
|
||||
return PSPDFKit.load({
|
||||
container: container,
|
||||
document: arrayBuffer,
|
||||
autoSaveMode: DISABLED,
|
||||
annotationPresets: annotationPresets,
|
||||
annotationPresets: App.ui.getPresets(),
|
||||
electronicSignatures: {
|
||||
creationModes: [DRAW]
|
||||
creationModes: [DRAW, TYPE]
|
||||
},
|
||||
isEditableAnnotation: function (annotation) {
|
||||
// Check if the annotation is a signature
|
||||
// This will allow new signatures, but not allow edits.
|
||||
return !annotation.isSignature;
|
||||
}
|
||||
});
|
||||
};
|
||||
App.configurePSPDFKit = function (instance) {
|
||||
var _this = this;
|
||||
instance.addEventListener("annotations.load", function (loadedAnnotations) {
|
||||
console.log("annotations loaded", loadedAnnotations.toJS());
|
||||
});
|
||||
instance.addEventListener("annotations.change", function () {
|
||||
console.log("annotations changed");
|
||||
});
|
||||
instance.addEventListener("annotations.create", function (createdAnnotations) {
|
||||
var annotation = createdAnnotations[0];
|
||||
console.log("annotations created", createdAnnotations.toJS());
|
||||
});
|
||||
instance.addEventListener("annotations.create", function (createdAnnotations) { return __awaiter(_this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
console.log("annotations created", createdAnnotations.toJS());
|
||||
return [2 /*return*/];
|
||||
});
|
||||
}); });
|
||||
var filteredItems = instance.toolbarItems
|
||||
.filter(function (item) { return allowedToolbarItems.includes(item.type); });
|
||||
var customItems = [
|
||||
{
|
||||
type: "custom",
|
||||
id: "button-finish",
|
||||
title: "Abschlie<69>en",
|
||||
icon: "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"currentColor\" class=\"bi bi-check2-circle\" viewBox=\"0 0 16 16\">\n <path d=\"M2.5 8a5.5 5.5 0 0 1 8.25-4.764.5.5 0 0 0 .5-.866A6.5 6.5 0 1 0 14.5 8a.5.5 0 0 0-1 0 5.5 5.5 0 1 1-11 0z\"/>\n <path d=\"M15.354 3.354a.5.5 0 0 0-.708-.708L8 9.293 5.354 6.646a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0l7-7z\" />\n </svg>",
|
||||
onPress: this.handleFinish
|
||||
}
|
||||
];
|
||||
instance.setToolbarItems(filteredItems.concat(customItems));
|
||||
.filter(function (item) { return App.ui.allowedToolbarItems.includes(item.type); });
|
||||
instance.setToolbarItems(filteredItems.concat(App.ui.getToolbarItems(App.handleClick)));
|
||||
};
|
||||
App.handleClick = function (eventType) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var _a;
|
||||
return __generator(this, function (_b) {
|
||||
switch (_b.label) {
|
||||
case 0:
|
||||
_a = eventType;
|
||||
switch (_a) {
|
||||
case "RESET": return [3 /*break*/, 1];
|
||||
case "FINISH": return [3 /*break*/, 3];
|
||||
}
|
||||
return [3 /*break*/, 5];
|
||||
case 1: return [4 /*yield*/, App.handleReset(null)];
|
||||
case 2:
|
||||
_b.sent();
|
||||
return [3 /*break*/, 5];
|
||||
case 3: return [4 /*yield*/, App.handleFinish(null)];
|
||||
case 4:
|
||||
_b.sent();
|
||||
return [3 /*break*/, 5];
|
||||
case 5: return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
App.handleFinish = function (event) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var json, buffer;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, App.Instance.applyOperations([{ type: "flattenAnnotations" }])
|
||||
//await downloadDocument();
|
||||
];
|
||||
case 0: return [4 /*yield*/, App.Instance.save()];
|
||||
case 1:
|
||||
_a.sent();
|
||||
return [4 /*yield*/, App.Instance.exportInstantJSON()];
|
||||
case 2:
|
||||
json = _a.sent();
|
||||
console.log(json);
|
||||
return [4 /*yield*/, App.Instance.exportPDF({ flatten: true })];
|
||||
case 3:
|
||||
buffer = _a.sent();
|
||||
return [4 /*yield*/, App.uploadDocument(buffer, App.envelopeKey, App.currentDocument.id)];
|
||||
case 4:
|
||||
_a.sent();
|
||||
alert("Signatur wird gespeichert!");
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
App.handleReset = function (event) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var i, annotations;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
if (!confirm("Wollen Sie das Dokument und alle erstellten Signaturen zurücksetzen?")) return [3 /*break*/, 4];
|
||||
i = 0;
|
||||
_a.label = 1;
|
||||
case 1:
|
||||
if (!(i < App.Instance.totalPageCount)) return [3 /*break*/, 4];
|
||||
return [4 /*yield*/, App.Instance.getAnnotations(i)];
|
||||
case 2:
|
||||
annotations = _a.sent();
|
||||
annotations.forEach(function (annotation) {
|
||||
//console.log(annotation)
|
||||
// TODO: Delete only create signatures
|
||||
//App.Instance.delete(annotation.id)
|
||||
});
|
||||
_a.label = 3;
|
||||
case 3:
|
||||
i++;
|
||||
return [3 /*break*/, 1];
|
||||
case 4: return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
App.uploadDocument = function (buffer, envelopeKey, documentId) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var result;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, App.postDocument("/api/upload/".concat(envelopeKey, "/").concat(documentId), buffer)];
|
||||
case 1:
|
||||
result = _a.sent();
|
||||
console.log(result);
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
@@ -215,6 +274,23 @@ var App = /** @class */ (function () {
|
||||
});
|
||||
});
|
||||
};
|
||||
App.createAnnotationFromElement = function (element) {
|
||||
var id = PSPDFKit.generateInstantId();
|
||||
console.log("Creating Annotation", id);
|
||||
var width = App.inchToPoint(element.width);
|
||||
var height = App.inchToPoint(element.height);
|
||||
var top = App.inchToPoint(element.top) - (height / 2);
|
||||
var left = App.inchToPoint(element.left) - (width / 2);
|
||||
var page = element.page - 1;
|
||||
var annotation = App.createSignatureAnnotation(id, width, height, top, left, page);
|
||||
console.log(annotation);
|
||||
var formField = new SignatureFormField({
|
||||
name: id,
|
||||
annotationIds: List([annotation.id])
|
||||
});
|
||||
console.log(formField);
|
||||
return [annotation, formField];
|
||||
};
|
||||
App.createSignatureAnnotation = function (id, width, height, top, left, pageIndex) {
|
||||
var annotation = new PSPDFKit.Annotations.WidgetAnnotation({
|
||||
id: id,
|
||||
@@ -227,4 +303,54 @@ var App = /** @class */ (function () {
|
||||
return App;
|
||||
}());
|
||||
export { App };
|
||||
var UI = /** @class */ (function () {
|
||||
function UI() {
|
||||
this.allowedToolbarItems = [
|
||||
"sidebar-thumbnails",
|
||||
"sidebar-document-ouline",
|
||||
"sidebar-bookmarks",
|
||||
"pager",
|
||||
"pan",
|
||||
"zoom-out",
|
||||
"zoom-in",
|
||||
"zoom-mode",
|
||||
"spacer",
|
||||
"search"
|
||||
];
|
||||
this.getToolbarItems = function (callback) {
|
||||
var customItems = [
|
||||
{
|
||||
type: "custom",
|
||||
id: "button-reset",
|
||||
title: "Zurücksetzen",
|
||||
onPress: function () {
|
||||
callback("RESET");
|
||||
},
|
||||
icon: "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"currentColor\" class=\"bi bi-arrow-counterclockwise\" viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M8 3a5 5 0 1 1-4.546 2.914.5.5 0 0 0-.908-.417A6 6 0 1 0 8 2v1z\"/>\n <path d=\"M8 4.466V.534a.25.25 0 0 0-.41-.192L5.23 2.308a.25.25 0 0 0 0 .384l2.36 1.966A.25.25 0 0 0 8 4.466z\"/>\n </svg>"
|
||||
},
|
||||
{
|
||||
type: "custom",
|
||||
id: "button-finish",
|
||||
title: "Abschließen",
|
||||
onPress: function () {
|
||||
callback("FINISH");
|
||||
},
|
||||
icon: "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"currentColor\" class=\"bi bi-check2-circle\" viewBox=\"0 0 16 16\">\n <path d=\"M2.5 8a5.5 5.5 0 0 1 8.25-4.764.5.5 0 0 0 .5-.866A6.5 6.5 0 1 0 14.5 8a.5.5 0 0 0-1 0 5.5 5.5 0 1 1-11 0z\"/>\n <path d=\"M15.354 3.354a.5.5 0 0 0-.708-.708L8 9.293 5.354 6.646a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0l7-7z\" />\n </svg>"
|
||||
}
|
||||
];
|
||||
return customItems;
|
||||
};
|
||||
}
|
||||
UI.prototype.getPresets = function () {
|
||||
var annotationPresets = PSPDFKit.defaultAnnotationPresets;
|
||||
annotationPresets.ink = {
|
||||
lineWidth: 10
|
||||
};
|
||||
annotationPresets.widget = {
|
||||
readOnly: true
|
||||
};
|
||||
return annotationPresets;
|
||||
};
|
||||
return UI;
|
||||
}());
|
||||
//# sourceMappingURL=app.js.map
|
||||
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user