mirror of
https://github.com/documenso/documenso.git
synced 2025-11-13 08:13:56 +10:00
56 lines
1.4 KiB
JavaScript
56 lines
1.4 KiB
JavaScript
const { PDFArray, CharCodes } = require("pdf-lib");
|
|
|
|
/**
|
|
* Extends PDFArray class in order to make ByteRange look like this:
|
|
* /ByteRange [0 /********** /********** /**********]
|
|
* Not this:
|
|
* /ByteRange [ 0 /********** /********** /********** ]
|
|
*/
|
|
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;
|
|
}
|
|
}
|
|
|
|
module.exports = PDFArrayCustom;
|