mirror of
https://github.com/OpenSignLabs/OpenSign.git
synced 2026-08-18 05:35:50 +02:00
feat: create duplicate template functionality feat: add support of csv and xlsx for bulk contacts import feat: add info text for forms and dashboard button feat: implement functionality to delete a PDF page while editing the document feat: show completed documents in which signers included but not owner in completed reports feat: add delete folder button in opensign drive feat: introduce Bcc email support for sending completed documents feat: allow merging multiple pdf while drafting document and template feat: add 'My Initials' tab for auto-signing in request-sign flow feat: add support for redirect URL to navigate after document completion feat: introduce privacy policy and digital signature terms before signing documents. feat: add feature to allow adding new pages to existing document feat: add save signature, initials, stamp functionality in sign pad for logged in user feat: add preferences menu feat: add save custom email template, notifyonsignature, set timezone, allow signature types in preferences feat: secure local url feat: implement Italian language translation feat: implement German language translation feat: update menu name from report to documents and shift contactbook in main menu feat: provide edit contact functionality fix: unable to delete folder when all its documents are deleted fix: fields.push is not function fix: document loading issue in opensign drive fix: adjust the guest signature flow to display the document in full screen, eliminating any blank space which is displayed below the place holder in mobile view fix: resolve issue of instance of pdfdict or pdfstream but got undefined build(deps): update dependencies refactor: change note text from add contact form
54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
import { PDFArray, CharCodes } from 'pdf-lib';
|
|
|
|
/**
|
|
* Extends PDFArray class in order to make ByteRange look like this:
|
|
* /ByteRange [0 /********** /********** /**********]
|
|
* Not this:
|
|
* /ByteRange [ 0 /********** /********** /********** ]
|
|
*/
|
|
export default class PDFArrayCustom extends PDFArray {
|
|
static withContext(context) {
|
|
return new PDFArrayCustom(context);
|
|
}
|
|
|
|
clone(context) {
|
|
const clone = PDFArrayCustom.withContext(context || this.context);
|
|
for (let idx = 0, len = this.size(); idx < len; idx++) {
|
|
clone.push(this.array[idx]);
|
|
}
|
|
return clone;
|
|
}
|
|
|
|
toString() {
|
|
let arrayString = '[';
|
|
for (let idx = 0, len = this.size(); idx < len; idx++) {
|
|
arrayString += this.get(idx).toString();
|
|
if (idx < len - 1) arrayString += ' ';
|
|
}
|
|
arrayString += ']';
|
|
return arrayString;
|
|
}
|
|
|
|
sizeInBytes() {
|
|
let size = 2;
|
|
for (let idx = 0, len = this.size(); idx < len; idx++) {
|
|
size += this.get(idx).sizeInBytes();
|
|
if (idx < len - 1) size += 1;
|
|
}
|
|
return size;
|
|
}
|
|
|
|
copyBytesInto(buffer, offset) {
|
|
const initialOffset = offset;
|
|
|
|
buffer[offset++] = CharCodes.LeftSquareBracket;
|
|
for (let idx = 0, len = this.size(); idx < len; idx++) {
|
|
offset += this.get(idx).copyBytesInto(buffer, offset);
|
|
if (idx < len - 1) buffer[offset++] = CharCodes.Space;
|
|
}
|
|
buffer[offset++] = CharCodes.RightSquareBracket;
|
|
|
|
return offset - initialOffset;
|
|
}
|
|
}
|