medusajs-documents-plugin 1.1.45 → 1.1.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -90,6 +90,7 @@ async function GET(req, res) {
|
|
|
90
90
|
res.setHeader("Content-Disposition", `inline; filename="${safeFilename}.pdf"`);
|
|
91
91
|
res.setHeader("Accept-Ranges", "none");
|
|
92
92
|
res.setHeader("Content-Length", String(totalLength));
|
|
93
|
+
res.setHeader("X-Content-Type-Options", "nosniff");
|
|
93
94
|
res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
|
|
94
95
|
if (req.method === "HEAD") {
|
|
95
96
|
return res.status(200).end();
|
|
@@ -106,4 +107,4 @@ async function GET(req, res) {
|
|
|
106
107
|
}
|
|
107
108
|
// HEAD /admin/documents/:id/document
|
|
108
109
|
exports.HEAD = GET;
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2RvY3VtZW50cy9baWRdL2RvY3VtZW50L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU9BLGtCQXNHQztBQTVHRCxnRUFBb0U7QUFDcEUsc0VBQXdHO0FBRTNGLFFBQUEsWUFBWSxHQUFHLEtBQUssQ0FBQztBQUVsQyxvQ0FBb0M7QUFDN0IsS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUFrQyxFQUFFLEdBQW1CO0lBQy9FLE1BQU0sZUFBZSxHQUEwQixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyw0QkFBZ0IsQ0FBQyxDQUFDO0lBQ25GLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUUsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDakQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRTdELElBQUksQ0FBQztRQUNILElBQUksTUFBTSxHQUFRLElBQUksQ0FBQztRQUN2Qiw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLE1BQU0sZUFBZSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDcEYsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDO1FBRWQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDO2dCQUNILE1BQU0sT0FBTyxHQUFH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
|
|
@@ -74,7 +74,8 @@ async function GET(req, res) {
|
|
|
74
74
|
res.setHeader("Content-Disposition", `inline; filename="${safeFilename}.pdf"`);
|
|
75
75
|
res.setHeader("Accept-Ranges", "none");
|
|
76
76
|
res.setHeader("Content-Length", String(totalLength));
|
|
77
|
-
res.setHeader("
|
|
77
|
+
res.setHeader("X-Content-Type-Options", "nosniff");
|
|
78
|
+
res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
|
|
78
79
|
if (req.method === "HEAD") {
|
|
79
80
|
return res.status(200).end();
|
|
80
81
|
}
|
|
@@ -90,4 +91,4 @@ async function GET(req, res) {
|
|
|
90
91
|
}
|
|
91
92
|
// HEAD /documents/:id/document
|
|
92
93
|
exports.HEAD = GET;
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2RvY3VtZW50cy9baWRdL2RvY3VtZW50L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU9BLGtCQXlGQztBQS9GRCw2REFBaUU7QUFDakUsbUVBQXFHO0FBRXhGLFFBQUEsWUFBWSxHQUFHLEtBQUssQ0FBQztBQUVsQywwRUFBMEU7QUFDbkUsS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUFrQyxFQUFFLEdBQW1CO0lBQy9FLE1BQU0sZUFBZSxHQUEwQixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyw0QkFBZ0IsQ0FBQyxDQUFDO0lBQ25GLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUU3RCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBRWpELElBQUksQ0FBQztRQUNILElBQUksTUFBTSxHQUFRLElBQUksQ0FBQztRQUN2Qiw2RUFBNkU7UUFDN0UsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLE1BQU0sZUFBZSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDcEYsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDO1FBRWQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxPQUFPLEdBQUcsTUFBTSxlQUFlLENBQUMsbUJBQW1CLENB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
|
|
@@ -3,15 +3,229 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.decryptStandardPdf = decryptStandardPdf;
|
|
7
|
+
exports.ensureDecryptedPdf = ensureDecryptedPdf;
|
|
6
8
|
exports.postProcessPdf = postProcessPdf;
|
|
9
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
7
10
|
const pdf_lib_1 = require("pdf-lib");
|
|
8
11
|
const qrcode_1 = __importDefault(require("qrcode"));
|
|
12
|
+
const pdf_decrypt_1 = require("@pdfsmaller/pdf-decrypt");
|
|
13
|
+
const PADDING = Buffer.from([
|
|
14
|
+
0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41,
|
|
15
|
+
0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08,
|
|
16
|
+
0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80,
|
|
17
|
+
0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a,
|
|
18
|
+
]);
|
|
19
|
+
function computeEncryptionKey(password, ownerKey, permissions, fileId, revision, keyLength, encryptMetadata) {
|
|
20
|
+
const pwd = Buffer.from(password);
|
|
21
|
+
const padded = Buffer.alloc(32);
|
|
22
|
+
if (pwd.length >= 32) {
|
|
23
|
+
pwd.copy(padded, 0, 0, 32);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
pwd.copy(padded, 0);
|
|
27
|
+
PADDING.copy(padded, pwd.length, 0, 32 - pwd.length);
|
|
28
|
+
}
|
|
29
|
+
const hash = crypto_1.default.createHash("md5");
|
|
30
|
+
hash.update(padded);
|
|
31
|
+
hash.update(Buffer.from(ownerKey));
|
|
32
|
+
const pBuf = Buffer.alloc(4);
|
|
33
|
+
pBuf.writeInt32LE(permissions, 0);
|
|
34
|
+
hash.update(pBuf);
|
|
35
|
+
hash.update(Buffer.from(fileId));
|
|
36
|
+
if (revision >= 4 && !encryptMetadata) {
|
|
37
|
+
hash.update(Buffer.from([0xff, 0xff, 0xff, 0xff]));
|
|
38
|
+
}
|
|
39
|
+
let digest = hash.digest();
|
|
40
|
+
if (revision >= 3) {
|
|
41
|
+
for (let i = 0; i < 50; i++) {
|
|
42
|
+
digest = crypto_1.default.createHash("md5").update(digest.subarray(0, keyLength)).digest();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return digest.subarray(0, keyLength);
|
|
46
|
+
}
|
|
47
|
+
function decryptData(data, objNum, genNum, encKey, keyLength, isAES) {
|
|
48
|
+
if (isAES) {
|
|
49
|
+
if (data.length <= 16)
|
|
50
|
+
return data;
|
|
51
|
+
const saltBuf = Buffer.from("sAlT", "ascii");
|
|
52
|
+
const objKeyInput = Buffer.concat([
|
|
53
|
+
encKey,
|
|
54
|
+
Buffer.from([objNum & 0xff, (objNum >> 8) & 0xff, (objNum >> 16) & 0xff]),
|
|
55
|
+
Buffer.from([genNum & 0xff, (genNum >> 8) & 0xff]),
|
|
56
|
+
saltBuf,
|
|
57
|
+
]);
|
|
58
|
+
const objKey = crypto_1.default.createHash("md5").update(objKeyInput).digest().subarray(0, 16);
|
|
59
|
+
const iv = data.subarray(0, 16);
|
|
60
|
+
const ciphertext = data.subarray(16);
|
|
61
|
+
try {
|
|
62
|
+
const decipher = crypto_1.default.createDecipheriv("aes-128-cbc", objKey, iv);
|
|
63
|
+
return Buffer.concat([decipher.update(ciphertext), decipher.final()]);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return data;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
const objKeyInput = Buffer.concat([
|
|
71
|
+
encKey,
|
|
72
|
+
Buffer.from([objNum & 0xff, (objNum >> 8) & 0xff, (objNum >> 16) & 0xff]),
|
|
73
|
+
Buffer.from([genNum & 0xff, (genNum >> 8) & 0xff]),
|
|
74
|
+
]);
|
|
75
|
+
const objKey = crypto_1.default.createHash("md5").update(objKeyInput).digest();
|
|
76
|
+
const len = Math.min(keyLength + 5, 16);
|
|
77
|
+
const rc4 = new pdf_decrypt_1.RC4(objKey.subarray(0, len));
|
|
78
|
+
return Buffer.from(rc4.process(data));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function decryptStrings(obj, objNum, genNum, encKey, keyLength, isAES) {
|
|
82
|
+
if (!obj)
|
|
83
|
+
return;
|
|
84
|
+
if (obj instanceof pdf_lib_1.PDFString) {
|
|
85
|
+
const orig = Buffer.from(obj.asBytes());
|
|
86
|
+
const dec = decryptData(orig, objNum, genNum, encKey, keyLength, isAES);
|
|
87
|
+
obj.value = Array.from(dec)
|
|
88
|
+
.map((b) => String.fromCharCode(b))
|
|
89
|
+
.join("");
|
|
90
|
+
}
|
|
91
|
+
else if (obj instanceof pdf_lib_1.PDFHexString) {
|
|
92
|
+
const orig = Buffer.from(obj.asBytes());
|
|
93
|
+
const dec = decryptData(orig, objNum, genNum, encKey, keyLength, isAES);
|
|
94
|
+
obj.value = dec.toString("hex");
|
|
95
|
+
}
|
|
96
|
+
else if (obj instanceof pdf_lib_1.PDFDict) {
|
|
97
|
+
for (const [key, val] of obj.entries()) {
|
|
98
|
+
const kn = key.asString();
|
|
99
|
+
if (kn !== "/Length" &&
|
|
100
|
+
kn !== "/Filter" &&
|
|
101
|
+
kn !== "/DecodeParms" &&
|
|
102
|
+
kn !== "/CF" &&
|
|
103
|
+
kn !== "/StdCF") {
|
|
104
|
+
decryptStrings(val, objNum, genNum, encKey, keyLength, isAES);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else if (obj instanceof pdf_lib_1.PDFArray) {
|
|
109
|
+
for (const el of obj.asArray()) {
|
|
110
|
+
decryptStrings(el, objNum, genNum, encKey, keyLength, isAES);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
async function decryptStandardPdf(pdfBuffer, password = "") {
|
|
115
|
+
try {
|
|
116
|
+
const pdfDoc = await pdf_lib_1.PDFDocument.load(pdfBuffer, {
|
|
117
|
+
ignoreEncryption: true,
|
|
118
|
+
updateMetadata: false,
|
|
119
|
+
});
|
|
120
|
+
const context = pdfDoc.context;
|
|
121
|
+
const encryptRef = context.trailerInfo?.Encrypt;
|
|
122
|
+
if (!encryptRef) {
|
|
123
|
+
return pdfBuffer;
|
|
124
|
+
}
|
|
125
|
+
const encryptDict = context.lookup(encryptRef);
|
|
126
|
+
if (!encryptDict || !(encryptDict instanceof pdf_lib_1.PDFDict)) {
|
|
127
|
+
return pdfBuffer;
|
|
128
|
+
}
|
|
129
|
+
const O = encryptDict.get(pdf_lib_1.PDFName.of("O"))?.asBytes?.();
|
|
130
|
+
const P_val = encryptDict.get(pdf_lib_1.PDFName.of("P"));
|
|
131
|
+
const P = P_val
|
|
132
|
+
? typeof P_val.asNumber === "function"
|
|
133
|
+
? P_val.asNumber()
|
|
134
|
+
: Number(P_val.toString())
|
|
135
|
+
: 0;
|
|
136
|
+
const R_val = encryptDict.get(pdf_lib_1.PDFName.of("R"));
|
|
137
|
+
const R = R_val
|
|
138
|
+
? typeof R_val.asNumber === "function"
|
|
139
|
+
? R_val.asNumber()
|
|
140
|
+
: Number(R_val.toString())
|
|
141
|
+
: 3;
|
|
142
|
+
const Length = encryptDict.get(pdf_lib_1.PDFName.of("Length"));
|
|
143
|
+
const keyLengthBits = Length
|
|
144
|
+
? typeof Length.asNumber === "function"
|
|
145
|
+
? Length.asNumber()
|
|
146
|
+
: Number(Length.toString())
|
|
147
|
+
: 128;
|
|
148
|
+
const keyLength = keyLengthBits / 8;
|
|
149
|
+
const encMeta = encryptDict.get(pdf_lib_1.PDFName.of("EncryptMetadata"));
|
|
150
|
+
const encryptMetadata = encMeta ? encMeta.toString() !== "false" : true;
|
|
151
|
+
if (!O) {
|
|
152
|
+
return pdfBuffer;
|
|
153
|
+
}
|
|
154
|
+
const idArray = context.trailerInfo?.ID;
|
|
155
|
+
let fileId = Buffer.alloc(0);
|
|
156
|
+
if (idArray) {
|
|
157
|
+
if (Array.isArray(idArray) && idArray.length > 0) {
|
|
158
|
+
fileId = Buffer.from(idArray[0].asBytes ? idArray[0].asBytes() : idArray[0]);
|
|
159
|
+
}
|
|
160
|
+
else if (idArray instanceof pdf_lib_1.PDFArray) {
|
|
161
|
+
const first = idArray.lookup(0);
|
|
162
|
+
fileId = Buffer.from(first?.asBytes ? first.asBytes() : []);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
let isAES = false;
|
|
166
|
+
const cf = encryptDict.get(pdf_lib_1.PDFName.of("CF"));
|
|
167
|
+
if (cf && cf instanceof pdf_lib_1.PDFDict) {
|
|
168
|
+
const stdcf = cf.get(pdf_lib_1.PDFName.of("StdCF"));
|
|
169
|
+
if (stdcf && stdcf instanceof pdf_lib_1.PDFDict) {
|
|
170
|
+
const cfm = stdcf.get(pdf_lib_1.PDFName.of("CFM"));
|
|
171
|
+
if (cfm && (cfm.toString() === "/AESV2" || cfm.toString() === "/AESV3")) {
|
|
172
|
+
isAES = true;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
const encKey = computeEncryptionKey(password, O, P, fileId, R, keyLength, encryptMetadata);
|
|
177
|
+
const encObjNum = encryptRef instanceof pdf_lib_1.PDFRef ? encryptRef.objectNumber : -1;
|
|
178
|
+
for (const [ref, obj] of context.enumerateIndirectObjects()) {
|
|
179
|
+
const objNum = ref.objectNumber;
|
|
180
|
+
const genNum = ref.generationNumber || 0;
|
|
181
|
+
if (objNum === encObjNum)
|
|
182
|
+
continue;
|
|
183
|
+
if (obj instanceof pdf_lib_1.PDFRawStream) {
|
|
184
|
+
if (obj.dict) {
|
|
185
|
+
const type = obj.dict.get(pdf_lib_1.PDFName.of("Type"));
|
|
186
|
+
if (type && (type.toString() === "/XRef" || type.toString() === "/Sig"))
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
obj.contents = decryptData(Buffer.from(obj.contents), objNum, genNum, encKey, keyLength, isAES);
|
|
190
|
+
if (obj.dict) {
|
|
191
|
+
decryptStrings(obj.dict, objNum, genNum, encKey, keyLength, isAES);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
decryptStrings(obj, objNum, genNum, encKey, keyLength, isAES);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
delete context.trailerInfo.Encrypt;
|
|
199
|
+
const decryptedBytes = await pdfDoc.save({ useObjectStreams: false });
|
|
200
|
+
return Buffer.from(decryptedBytes);
|
|
201
|
+
}
|
|
202
|
+
catch (err) {
|
|
203
|
+
console.warn("[decryptStandardPdf] Fallback failed:", err?.message || err);
|
|
204
|
+
return pdfBuffer;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
async function ensureDecryptedPdf(pdfBuffer) {
|
|
208
|
+
let workingBuffer = pdfBuffer;
|
|
209
|
+
try {
|
|
210
|
+
const encInfo = await (0, pdf_decrypt_1.isEncrypted)(new Uint8Array(workingBuffer)).catch(() => null);
|
|
211
|
+
if (encInfo && encInfo.encrypted) {
|
|
212
|
+
const decryptedBytes = await (0, pdf_decrypt_1.decryptPDF)(new Uint8Array(workingBuffer), "");
|
|
213
|
+
workingBuffer = Buffer.from(decryptedBytes);
|
|
214
|
+
return workingBuffer;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
catch (_e) {
|
|
218
|
+
// If @pdfsmaller/pdf-decrypt throws (e.g. Unsupported encryption: V=4, R=4), fallback to Standard Security Handler
|
|
219
|
+
}
|
|
220
|
+
return await decryptStandardPdf(workingBuffer, "");
|
|
221
|
+
}
|
|
9
222
|
/**
|
|
10
223
|
* Post-processes PDF buffers to embed QR codes, payment links, and clean up Zoho footers.
|
|
11
224
|
*/
|
|
12
225
|
async function postProcessPdf(pdfBuffer, options = {}) {
|
|
13
226
|
try {
|
|
14
|
-
const
|
|
227
|
+
const decryptedBuffer = await ensureDecryptedPdf(pdfBuffer);
|
|
228
|
+
const pdfDoc = await pdf_lib_1.PDFDocument.load(decryptedBuffer, { ignoreEncryption: true });
|
|
15
229
|
// 1. Generate QR Code image if URL is provided
|
|
16
230
|
let qrImage = null;
|
|
17
231
|
if (options.qrUrl) {
|
|
@@ -43,7 +257,11 @@ async function postProcessPdf(pdfBuffer, options = {}) {
|
|
|
43
257
|
// Label under QR code
|
|
44
258
|
try {
|
|
45
259
|
const fontBold = await pdfDoc.embedFont(pdf_lib_1.StandardFonts.HelveticaBold);
|
|
46
|
-
const qrLabel = isInvoice && options.paymentLink
|
|
260
|
+
const qrLabel = isInvoice && options.paymentLink
|
|
261
|
+
? "Scan to Pay Online"
|
|
262
|
+
: options.docType === "receipt"
|
|
263
|
+
? "Scan to Verify"
|
|
264
|
+
: "Scan to View";
|
|
47
265
|
lastPage.drawText(qrLabel, {
|
|
48
266
|
x: 488,
|
|
49
267
|
y: 42,
|
|
@@ -105,7 +323,10 @@ async function postProcessPdf(pdfBuffer, options = {}) {
|
|
|
105
323
|
}
|
|
106
324
|
}
|
|
107
325
|
}
|
|
108
|
-
|
|
326
|
+
if (pdfDoc.context?.trailerInfo?.Encrypt) {
|
|
327
|
+
delete pdfDoc.context.trailerInfo.Encrypt;
|
|
328
|
+
}
|
|
329
|
+
const modifiedPdfBytes = await pdfDoc.save({ useObjectStreams: false });
|
|
109
330
|
return Buffer.from(modifiedPdfBytes);
|
|
110
331
|
}
|
|
111
332
|
catch (err) {
|
|
@@ -114,4 +335,4 @@ async function postProcessPdf(pdfBuffer, options = {}) {
|
|
|
114
335
|
}
|
|
115
336
|
}
|
|
116
337
|
exports.default = postProcessPdf;
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXBvc3QtcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3BkZi1wb3N0LXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWNBLHdDQWdIQztBQTlIRCxxQ0FBdUU7QUFDdkUsb0RBQTRCO0FBVTVCOztHQUVHO0FBQ0ksS0FBSyxVQUFVLGNBQWMsQ0FDbEMsU0FBaUIsRUFDakIsVUFBOEIsRUFBRTtJQUVoQyxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLHFCQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFM0UsK0NBQStDO1FBQy9DLElBQUksT0FBTyxHQUFRLElBQUksQ0FBQztRQUN4QixJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxXQUFXLEdBQUcsTUFBTSxnQkFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO29CQUN2RCxvQkFBb0IsRUFBRSxHQUFHO29CQUN6QixJQUFJLEVBQUUsS0FBSztvQkFDWCxNQUFNLEVBQUUsQ0FBQztvQkFDVCxLQUFLLEVBQUUsRUFBRTtpQkFDVixDQUFDLENBQUM7Z0JBQ0gsT0FBTyxHQUFHLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMvQyxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixPQUFPLENBQUMsS0FBSyxDQUFDLDRDQUE0QyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JFLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQixNQUFNLFFBQVEsR0FB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
|
|
338
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXBvc3QtcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3BkZi1wb3N0LXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXNKQSxnREFpSEM7QUFFRCxnREFhQztBQUtELHdDQTBIQztBQXJaRCxvREFBNEI7QUFDNUIscUNBV2lCO0FBQ2pCLG9EQUE0QjtBQUM1Qix5REFBdUU7QUFVdkUsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztJQUMxQixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM5QyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM5QyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM5QyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtDQUMvQyxDQUFDLENBQUM7QUFFSCxTQUFTLG9CQUFvQixDQUMzQixRQUFnQixFQUNoQixRQUFvQixFQUNwQixXQUFtQixFQUNuQixNQUFrQixFQUNsQixRQUFnQixFQUNoQixTQUFpQixFQUNqQixlQUF3QjtJQUV4QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEMsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ3JCLEdBQUcsQ0FBQyxJQUFJLENB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
|
package/CHANGELOG.md
CHANGED
|
@@ -7,7 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
## [1.1.
|
|
10
|
+
## [1.1.47] - 2026-11-01
|
|
11
|
+
|
|
12
|
+
### Fix Chrome PDFium "Failed to load PDF document" via Full Stream Decryption
|
|
13
|
+
- **PDF Encryption Decryption & Security Trailer Cleanup**:
|
|
14
|
+
- Implemented automatic decryption of standard PDF security / encryption (`Filter: /Standard`, `V: 1..4`, `R: 2..4`, AES-128 / RC4 with empty password `""`) using `@pdfsmaller/pdf-decrypt` and Standard Security Handler.
|
|
15
|
+
- Resolved Chrome PDFium crash where `pdf-lib` loaded Zoho encrypted buffers with `ignoreEncryption: true` without decrypting streams, leaving `/Encrypt` in the trailer and causing decryption key mismatch on newly stamped objects.
|
|
16
|
+
- Stripped `/Encrypt` from trailer dictionary and saved with `useObjectStreams: false`, producing 100% standard unencrypted PDFs that load flawlessly in Chrome and native viewers.
|
|
17
|
+
- **Route Streaming Headers**:
|
|
18
|
+
- Added `X-Content-Type-Options: nosniff` and `Cache-Control: no-cache, no-store, must-revalidate` across both admin (`/admin/documents/:id/document`) and public (`/documents/:id/document`) streaming routes.
|
|
19
|
+
|
|
11
20
|
|
|
12
21
|
### Fix Browser PDF Loading Error and Ensure Visible Invoice Payment Link & QR Code
|
|
13
22
|
- **Browser PDF Loading Reliability**:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "medusajs-documents-plugin",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.47",
|
|
4
4
|
"description": "Comprehensive document generation and management module for Medusa v2 with Zoho Books integration, PDFKit fallback, QR codes, shortlinks, multi-channel notifications and unified admin hub.",
|
|
5
5
|
"author": "Urban Device Care <info@urbandevicecare.co.uk>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"prepack": "medusa plugin:build && node -e \"const fs=require('fs');if(fs.existsSync('src/assets')){fs.mkdirSync('.medusa/server/src/assets',{recursive:true});fs.cpSync('src/assets','.medusa/server/src/assets',{recursive:true})}\""
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
+
"@pdfsmaller/pdf-decrypt": "^1.0.1",
|
|
55
56
|
"bwip-js": "^4.11.4",
|
|
56
57
|
"pdf-lib": "^1.17.1",
|
|
57
58
|
"pdfkit": "^0.18.0",
|