@embedpdf/engines 1.0.0
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.
- package/LICENSE +21 -0
- package/README.md +81 -0
- package/dist/chunk-NDTYBBMQ.js +4615 -0
- package/dist/chunk-NDTYBBMQ.js.map +1 -0
- package/dist/chunk-YZLT3A2D.js +1101 -0
- package/dist/chunk-YZLT3A2D.js.map +1 -0
- package/dist/converters.cjs +124 -0
- package/dist/converters.cjs.map +1 -0
- package/dist/converters.d.cts +69 -0
- package/dist/converters.d.ts +69 -0
- package/dist/converters.js +94 -0
- package/dist/converters.js.map +1 -0
- package/dist/index.cjs +6054 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +32 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.js +367 -0
- package/dist/index.js.map +1 -0
- package/dist/pdfium.cjs +5715 -0
- package/dist/pdfium.cjs.map +1 -0
- package/dist/pdfium.d.cts +1083 -0
- package/dist/pdfium.d.ts +1083 -0
- package/dist/pdfium.js +22 -0
- package/dist/pdfium.js.map +1 -0
- package/dist/runner-BvRtPCKL.d.cts +131 -0
- package/dist/runner-BvRtPCKL.d.ts +131 -0
- package/dist/worker.cjs +1122 -0
- package/dist/worker.cjs.map +1 -0
- package/dist/worker.d.cts +274 -0
- package/dist/worker.d.ts +274 -0
- package/dist/worker.js +11 -0
- package/dist/worker.js.map +1 -0
- package/package.json +73 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export { BitmapFormat, ImageDataConverter, PdfiumEngine, PdfiumEngineRunner, PdfiumErrorCode, RenderFlag, SearchContext, browserImageDataToBlobConverter, readArrayBuffer, readString } from './pdfium.cjs';
|
|
2
|
+
export { WebWorkerEngine, WorkerTask } from './worker.cjs';
|
|
3
|
+
export { A as AbortRequest, e as EngineRunner, E as ExecuteRequest, b as ExecuteResponse, P as PdfEngineMethodRequestBody, a as PdfEngineMethodResponseBody, R as ReadyResponse, c as Request, d as Response } from './runner-BvRtPCKL.cjs';
|
|
4
|
+
import { PdfEngine, PdfDocumentObject, PdfFile } from '@embedpdf/models';
|
|
5
|
+
import '@embedpdf/pdfium';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Create mock of pdf engine
|
|
9
|
+
* @param partialEngine - partial configuration of engine
|
|
10
|
+
* @returns - mock of pdf engine
|
|
11
|
+
*
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
declare function createMockPdfEngine(partialEngine?: Partial<PdfEngine>): PdfEngine;
|
|
15
|
+
/**
|
|
16
|
+
* Create mock of pdf document
|
|
17
|
+
* @param doc - partial configuration of document
|
|
18
|
+
* @returns mock of pdf document
|
|
19
|
+
*
|
|
20
|
+
* @public
|
|
21
|
+
*/
|
|
22
|
+
declare function createMockPdfDocument(doc?: Partial<PdfDocumentObject>): PdfDocumentObject;
|
|
23
|
+
/**
|
|
24
|
+
* Create mock of pdf file
|
|
25
|
+
* @param file - partial configuration of file
|
|
26
|
+
* @returns mock of pdf file
|
|
27
|
+
*
|
|
28
|
+
* @public
|
|
29
|
+
*/
|
|
30
|
+
declare function createMockPdfFile(file?: Partial<PdfFile>): PdfFile;
|
|
31
|
+
|
|
32
|
+
export { createMockPdfDocument, createMockPdfEngine, createMockPdfFile };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export { BitmapFormat, ImageDataConverter, PdfiumEngine, PdfiumEngineRunner, PdfiumErrorCode, RenderFlag, SearchContext, browserImageDataToBlobConverter, readArrayBuffer, readString } from './pdfium.js';
|
|
2
|
+
export { WebWorkerEngine, WorkerTask } from './worker.js';
|
|
3
|
+
export { A as AbortRequest, e as EngineRunner, E as ExecuteRequest, b as ExecuteResponse, P as PdfEngineMethodRequestBody, a as PdfEngineMethodResponseBody, R as ReadyResponse, c as Request, d as Response } from './runner-BvRtPCKL.js';
|
|
4
|
+
import { PdfEngine, PdfDocumentObject, PdfFile } from '@embedpdf/models';
|
|
5
|
+
import '@embedpdf/pdfium';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Create mock of pdf engine
|
|
9
|
+
* @param partialEngine - partial configuration of engine
|
|
10
|
+
* @returns - mock of pdf engine
|
|
11
|
+
*
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
declare function createMockPdfEngine(partialEngine?: Partial<PdfEngine>): PdfEngine;
|
|
15
|
+
/**
|
|
16
|
+
* Create mock of pdf document
|
|
17
|
+
* @param doc - partial configuration of document
|
|
18
|
+
* @returns mock of pdf document
|
|
19
|
+
*
|
|
20
|
+
* @public
|
|
21
|
+
*/
|
|
22
|
+
declare function createMockPdfDocument(doc?: Partial<PdfDocumentObject>): PdfDocumentObject;
|
|
23
|
+
/**
|
|
24
|
+
* Create mock of pdf file
|
|
25
|
+
* @param file - partial configuration of file
|
|
26
|
+
* @returns mock of pdf file
|
|
27
|
+
*
|
|
28
|
+
* @public
|
|
29
|
+
*/
|
|
30
|
+
declare function createMockPdfFile(file?: Partial<PdfFile>): PdfFile;
|
|
31
|
+
|
|
32
|
+
export { createMockPdfDocument, createMockPdfEngine, createMockPdfFile };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BitmapFormat,
|
|
3
|
+
PdfiumEngine,
|
|
4
|
+
PdfiumEngineRunner,
|
|
5
|
+
PdfiumErrorCode,
|
|
6
|
+
RenderFlag,
|
|
7
|
+
browserImageDataToBlobConverter,
|
|
8
|
+
readArrayBuffer,
|
|
9
|
+
readString
|
|
10
|
+
} from "./chunk-NDTYBBMQ.js";
|
|
11
|
+
import {
|
|
12
|
+
EngineRunner,
|
|
13
|
+
WebWorkerEngine,
|
|
14
|
+
WorkerTask
|
|
15
|
+
} from "./chunk-YZLT3A2D.js";
|
|
16
|
+
|
|
17
|
+
// src/mock/index.ts
|
|
18
|
+
import {
|
|
19
|
+
PdfAnnotationSubtype,
|
|
20
|
+
swap,
|
|
21
|
+
PdfZoomMode,
|
|
22
|
+
PdfActionType,
|
|
23
|
+
PdfAnnotationObjectStatus,
|
|
24
|
+
PdfTaskHelper,
|
|
25
|
+
PdfPageFlattenResult
|
|
26
|
+
} from "@embedpdf/models";
|
|
27
|
+
function createMockPdfEngine(partialEngine) {
|
|
28
|
+
const engine = {
|
|
29
|
+
openDocumentUrl: jest.fn((file, options) => {
|
|
30
|
+
return PdfTaskHelper.create();
|
|
31
|
+
}),
|
|
32
|
+
openDocumentFromBuffer: jest.fn((file, password) => {
|
|
33
|
+
return PdfTaskHelper.create();
|
|
34
|
+
}),
|
|
35
|
+
openDocumentFromLoader: jest.fn((file, password) => {
|
|
36
|
+
return PdfTaskHelper.create();
|
|
37
|
+
}),
|
|
38
|
+
getMetadata: () => {
|
|
39
|
+
return PdfTaskHelper.resolve({
|
|
40
|
+
title: "title",
|
|
41
|
+
author: "author",
|
|
42
|
+
subject: "subject",
|
|
43
|
+
keywords: "keywords",
|
|
44
|
+
producer: "producer",
|
|
45
|
+
creator: "creator",
|
|
46
|
+
creationDate: "creationDate",
|
|
47
|
+
modificationDate: "modificationDate"
|
|
48
|
+
});
|
|
49
|
+
},
|
|
50
|
+
getDocPermissions: (doc) => {
|
|
51
|
+
return PdfTaskHelper.resolve(4294967295);
|
|
52
|
+
},
|
|
53
|
+
getDocUserPermissions: (doc) => {
|
|
54
|
+
return PdfTaskHelper.resolve(4294967295);
|
|
55
|
+
},
|
|
56
|
+
getSignatures: (doc) => {
|
|
57
|
+
const signatures = [];
|
|
58
|
+
return PdfTaskHelper.resolve(signatures);
|
|
59
|
+
},
|
|
60
|
+
getBookmarks: (doc) => {
|
|
61
|
+
const bookmarks = [];
|
|
62
|
+
bookmarks.push(
|
|
63
|
+
{
|
|
64
|
+
title: "Page 1",
|
|
65
|
+
target: {
|
|
66
|
+
type: "destination",
|
|
67
|
+
destination: {
|
|
68
|
+
pageIndex: 1,
|
|
69
|
+
zoom: {
|
|
70
|
+
mode: PdfZoomMode.FitPage
|
|
71
|
+
},
|
|
72
|
+
view: []
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
title: "Page 2",
|
|
78
|
+
target: {
|
|
79
|
+
type: "destination",
|
|
80
|
+
destination: {
|
|
81
|
+
pageIndex: 2,
|
|
82
|
+
zoom: {
|
|
83
|
+
mode: PdfZoomMode.FitPage
|
|
84
|
+
},
|
|
85
|
+
view: []
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
children: [
|
|
89
|
+
{
|
|
90
|
+
title: "Page 3",
|
|
91
|
+
target: {
|
|
92
|
+
type: "destination",
|
|
93
|
+
destination: {
|
|
94
|
+
pageIndex: 3,
|
|
95
|
+
zoom: {
|
|
96
|
+
mode: PdfZoomMode.FitPage
|
|
97
|
+
},
|
|
98
|
+
view: []
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
);
|
|
105
|
+
return PdfTaskHelper.resolve({
|
|
106
|
+
bookmarks
|
|
107
|
+
});
|
|
108
|
+
},
|
|
109
|
+
renderPage: jest.fn(
|
|
110
|
+
(doc, page, scaleFactor, rotation, dpr, options) => {
|
|
111
|
+
const pageSize = rotation % 2 === 0 ? page.size : swap(page.size);
|
|
112
|
+
const imageSize = {
|
|
113
|
+
width: Math.ceil(pageSize.width * scaleFactor),
|
|
114
|
+
height: Math.ceil(pageSize.height * scaleFactor)
|
|
115
|
+
};
|
|
116
|
+
const pixelCount = imageSize.width * imageSize.height;
|
|
117
|
+
const array = new Uint8ClampedArray(pixelCount * 4);
|
|
118
|
+
const rgbValue = page.index % 255;
|
|
119
|
+
const alphaValue = 255;
|
|
120
|
+
for (let i = 0; i < pixelCount; i++) {
|
|
121
|
+
for (let j = 0; j < 3; j++) {
|
|
122
|
+
const index = i * 4 + j;
|
|
123
|
+
array[index] = rgbValue;
|
|
124
|
+
}
|
|
125
|
+
array[i * 4 + 3] = alphaValue;
|
|
126
|
+
}
|
|
127
|
+
const ab = array.buffer;
|
|
128
|
+
const realBuffer = ab instanceof ArrayBuffer ? ab : new Uint8Array(array).buffer;
|
|
129
|
+
const blob = new Blob([realBuffer], { type: "application/octet-stream" });
|
|
130
|
+
return PdfTaskHelper.resolve(blob);
|
|
131
|
+
}
|
|
132
|
+
),
|
|
133
|
+
renderPageRect: jest.fn(
|
|
134
|
+
(doc, page, scaleFactor, rotation, dpr, rect, options) => {
|
|
135
|
+
const pageSize = rotation % 2 === 0 ? page.size : swap(page.size);
|
|
136
|
+
const imageSize = {
|
|
137
|
+
width: Math.ceil(pageSize.width * scaleFactor),
|
|
138
|
+
height: Math.ceil(pageSize.height * scaleFactor)
|
|
139
|
+
};
|
|
140
|
+
const pixelCount = imageSize.width * imageSize.height;
|
|
141
|
+
const array = new Uint8ClampedArray(pixelCount * 4);
|
|
142
|
+
const rgbValue = page.index % 255;
|
|
143
|
+
const alphaValue = 255;
|
|
144
|
+
for (let i = 0; i < pixelCount; i++) {
|
|
145
|
+
for (let j = 0; j < 3; j++) {
|
|
146
|
+
const index = i * 4 + j;
|
|
147
|
+
array[index] = rgbValue;
|
|
148
|
+
}
|
|
149
|
+
array[i * 4 + 3] = alphaValue;
|
|
150
|
+
}
|
|
151
|
+
const ab = array.buffer;
|
|
152
|
+
const realBuffer = ab instanceof ArrayBuffer ? ab : new Uint8Array(array).buffer;
|
|
153
|
+
const blob = new Blob([realBuffer], { type: "application/octet-stream" });
|
|
154
|
+
return PdfTaskHelper.resolve(blob);
|
|
155
|
+
}
|
|
156
|
+
),
|
|
157
|
+
renderThumbnail: jest.fn((doc, page) => {
|
|
158
|
+
const thumbnailWidth = page.size.width / 4;
|
|
159
|
+
const thumbnailHeight = page.size.height / 4;
|
|
160
|
+
const pixelCount = thumbnailWidth * thumbnailHeight;
|
|
161
|
+
const array = new Uint8ClampedArray(pixelCount * 4);
|
|
162
|
+
const rgbValue = page.index % 255;
|
|
163
|
+
const alphaValue = 255;
|
|
164
|
+
for (let i = 0; i < pixelCount; i++) {
|
|
165
|
+
for (let j = 0; j < 3; j++) {
|
|
166
|
+
const index = i * 4 + j;
|
|
167
|
+
array[index] = rgbValue;
|
|
168
|
+
}
|
|
169
|
+
array[i * 4 + 3] = alphaValue;
|
|
170
|
+
}
|
|
171
|
+
const ab = array.buffer;
|
|
172
|
+
const realBuffer = ab instanceof ArrayBuffer ? ab : new Uint8Array(array).buffer;
|
|
173
|
+
const blob = new Blob([realBuffer], { type: "image/png" });
|
|
174
|
+
return PdfTaskHelper.resolve(blob);
|
|
175
|
+
}),
|
|
176
|
+
getAllAnnotations: jest.fn((doc) => {
|
|
177
|
+
return PdfTaskHelper.resolve({});
|
|
178
|
+
}),
|
|
179
|
+
getPageAnnotations: jest.fn((doc, page) => {
|
|
180
|
+
const link = {
|
|
181
|
+
status: PdfAnnotationObjectStatus.Committed,
|
|
182
|
+
pageIndex: page.index,
|
|
183
|
+
id: page.index + 1,
|
|
184
|
+
type: PdfAnnotationSubtype.LINK,
|
|
185
|
+
target: {
|
|
186
|
+
type: "action",
|
|
187
|
+
action: {
|
|
188
|
+
type: PdfActionType.URI,
|
|
189
|
+
uri: "https://localhost"
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
text: "localhost",
|
|
193
|
+
rect: {
|
|
194
|
+
origin: {
|
|
195
|
+
x: 0,
|
|
196
|
+
y: 0
|
|
197
|
+
},
|
|
198
|
+
size: {
|
|
199
|
+
width: 100,
|
|
200
|
+
height: 100
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
appearances: {
|
|
204
|
+
normal: "",
|
|
205
|
+
rollover: "",
|
|
206
|
+
down: ""
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
const annotations = [];
|
|
210
|
+
annotations.push(link);
|
|
211
|
+
return PdfTaskHelper.resolve(annotations);
|
|
212
|
+
}),
|
|
213
|
+
createPageAnnotation: jest.fn(() => {
|
|
214
|
+
return PdfTaskHelper.resolve(true);
|
|
215
|
+
}),
|
|
216
|
+
transformPageAnnotation: () => {
|
|
217
|
+
return PdfTaskHelper.resolve(true);
|
|
218
|
+
},
|
|
219
|
+
removePageAnnotation: jest.fn(() => {
|
|
220
|
+
return PdfTaskHelper.resolve(true);
|
|
221
|
+
}),
|
|
222
|
+
getPageTextRects: jest.fn(
|
|
223
|
+
(doc, page, scaleFactor, rotation) => {
|
|
224
|
+
const textRects = [
|
|
225
|
+
{
|
|
226
|
+
content: "pdf text",
|
|
227
|
+
font: {
|
|
228
|
+
family: "sans-serif",
|
|
229
|
+
size: 12
|
|
230
|
+
},
|
|
231
|
+
rect: {
|
|
232
|
+
origin: {
|
|
233
|
+
x: 0,
|
|
234
|
+
y: 0
|
|
235
|
+
},
|
|
236
|
+
size: {
|
|
237
|
+
width: 100,
|
|
238
|
+
height: 100
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
];
|
|
243
|
+
return PdfTaskHelper.resolve(textRects);
|
|
244
|
+
}
|
|
245
|
+
),
|
|
246
|
+
closeDocument: (pdf) => {
|
|
247
|
+
return PdfTaskHelper.resolve(true);
|
|
248
|
+
},
|
|
249
|
+
saveAsCopy: (pdf) => {
|
|
250
|
+
return PdfTaskHelper.resolve(new ArrayBuffer(0));
|
|
251
|
+
},
|
|
252
|
+
flattenPage: (pdf, page, flag) => {
|
|
253
|
+
return PdfTaskHelper.resolve(PdfPageFlattenResult.Success);
|
|
254
|
+
},
|
|
255
|
+
extractPages: (pdf, pageIndexes) => {
|
|
256
|
+
return PdfTaskHelper.resolve(new ArrayBuffer(0));
|
|
257
|
+
},
|
|
258
|
+
extractText: (pdf, pageIndexes) => {
|
|
259
|
+
return PdfTaskHelper.resolve("");
|
|
260
|
+
},
|
|
261
|
+
getPageGlyphs: (doc, page) => {
|
|
262
|
+
return PdfTaskHelper.resolve([]);
|
|
263
|
+
},
|
|
264
|
+
getPageGeometry: (doc, page) => {
|
|
265
|
+
return PdfTaskHelper.resolve({
|
|
266
|
+
runs: []
|
|
267
|
+
});
|
|
268
|
+
},
|
|
269
|
+
merge: (files) => {
|
|
270
|
+
return PdfTaskHelper.resolve({
|
|
271
|
+
id: "id",
|
|
272
|
+
content: new ArrayBuffer(0)
|
|
273
|
+
});
|
|
274
|
+
},
|
|
275
|
+
mergePages: (mergeConfigs) => {
|
|
276
|
+
return PdfTaskHelper.resolve({
|
|
277
|
+
id: "id",
|
|
278
|
+
content: new ArrayBuffer(0)
|
|
279
|
+
});
|
|
280
|
+
},
|
|
281
|
+
searchAllPages: (doc, keyword, flags) => {
|
|
282
|
+
const mockResult = {
|
|
283
|
+
pageIndex: 0,
|
|
284
|
+
charIndex: 0,
|
|
285
|
+
charCount: keyword.length,
|
|
286
|
+
rects: [
|
|
287
|
+
{
|
|
288
|
+
origin: {
|
|
289
|
+
x: 0,
|
|
290
|
+
y: 0
|
|
291
|
+
},
|
|
292
|
+
size: {
|
|
293
|
+
width: 50,
|
|
294
|
+
height: 20
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
],
|
|
298
|
+
context: {
|
|
299
|
+
before: "",
|
|
300
|
+
match: "",
|
|
301
|
+
after: "",
|
|
302
|
+
truncatedLeft: false,
|
|
303
|
+
truncatedRight: false
|
|
304
|
+
}
|
|
305
|
+
};
|
|
306
|
+
return PdfTaskHelper.resolve({
|
|
307
|
+
results: [mockResult],
|
|
308
|
+
total: 1
|
|
309
|
+
});
|
|
310
|
+
},
|
|
311
|
+
getAttachments: (doc) => {
|
|
312
|
+
return PdfTaskHelper.resolve([]);
|
|
313
|
+
},
|
|
314
|
+
readAttachmentContent: (doc, attachment) => {
|
|
315
|
+
return PdfTaskHelper.resolve(new ArrayBuffer(0));
|
|
316
|
+
},
|
|
317
|
+
setFormFieldValue: (doc, page, annotation, text) => {
|
|
318
|
+
return PdfTaskHelper.resolve(true);
|
|
319
|
+
},
|
|
320
|
+
...partialEngine
|
|
321
|
+
};
|
|
322
|
+
return engine;
|
|
323
|
+
}
|
|
324
|
+
function createMockPdfDocument(doc) {
|
|
325
|
+
const pageCount = 10;
|
|
326
|
+
const pageWidth = 100;
|
|
327
|
+
const pageHeight = 200;
|
|
328
|
+
const pages = [];
|
|
329
|
+
for (let i = 0; i < pageCount; i++) {
|
|
330
|
+
pages.push({
|
|
331
|
+
index: i,
|
|
332
|
+
size: {
|
|
333
|
+
width: pageWidth,
|
|
334
|
+
height: pageHeight
|
|
335
|
+
}
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
return {
|
|
339
|
+
id: "id",
|
|
340
|
+
pageCount,
|
|
341
|
+
pages,
|
|
342
|
+
...doc
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
function createMockPdfFile(file) {
|
|
346
|
+
return {
|
|
347
|
+
id: "id",
|
|
348
|
+
content: new ArrayBuffer(0)
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
export {
|
|
352
|
+
BitmapFormat,
|
|
353
|
+
EngineRunner,
|
|
354
|
+
PdfiumEngine,
|
|
355
|
+
PdfiumEngineRunner,
|
|
356
|
+
PdfiumErrorCode,
|
|
357
|
+
RenderFlag,
|
|
358
|
+
WebWorkerEngine,
|
|
359
|
+
WorkerTask,
|
|
360
|
+
browserImageDataToBlobConverter,
|
|
361
|
+
createMockPdfDocument,
|
|
362
|
+
createMockPdfEngine,
|
|
363
|
+
createMockPdfFile,
|
|
364
|
+
readArrayBuffer,
|
|
365
|
+
readString
|
|
366
|
+
};
|
|
367
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/mock/index.ts"],"sourcesContent":["import {\n PdfDocumentObject,\n PdfEngine,\n PdfPageObject,\n PdfAnnotationSubtype,\n PdfLinkAnnoObject,\n Rotation,\n swap,\n PdfZoomMode,\n PdfActionType,\n PdfAnnotationObject,\n PdfBookmarkObject,\n PdfTextRectObject,\n SearchTarget,\n SearchResult,\n PdfAttachmentObject,\n PdfSignatureObject,\n Rect,\n PdfRenderOptions,\n PdfFile,\n PdfAnnotationObjectStatus,\n PdfWidgetAnnoObject,\n FormFieldValue,\n PdfTaskHelper,\n PdfPageFlattenFlag,\n PdfPageFlattenResult,\n PdfFileLoader,\n SearchAllPagesResult,\n MatchFlag,\n Task,\n Logger,\n NoopLogger,\n PdfAnnotationTransformation,\n PdfEngineError,\n PdfMetadataObject,\n PdfErrorCode,\n PdfErrorReason,\n PdfBookmarksObject,\n PdfUrlOptions,\n PdfFileUrl,\n PdfGlyphObject,\n PdfPageGeometry,\n} from '@embedpdf/models';\n\n/**\n * Create mock of pdf engine\n * @param partialEngine - partial configuration of engine\n * @returns - mock of pdf engine\n *\n * @public\n */\nexport function createMockPdfEngine(partialEngine?: Partial<PdfEngine>): PdfEngine {\n const engine: PdfEngine = {\n openDocumentUrl: jest.fn((file: PdfFileUrl, options?: PdfUrlOptions) => {\n return PdfTaskHelper.create();\n }),\n openDocumentFromBuffer: jest.fn((file: PdfFile, password: string) => {\n return PdfTaskHelper.create();\n }),\n openDocumentFromLoader: jest.fn((file: PdfFileLoader, password: string) => {\n return PdfTaskHelper.create();\n }),\n getMetadata: () => {\n return PdfTaskHelper.resolve({\n title: 'title',\n author: 'author',\n subject: 'subject',\n keywords: 'keywords',\n producer: 'producer',\n creator: 'creator',\n creationDate: 'creationDate',\n modificationDate: 'modificationDate',\n });\n },\n getDocPermissions: (doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(0xffffffff);\n },\n getDocUserPermissions: (doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(0xffffffff);\n },\n getSignatures: (doc: PdfDocumentObject) => {\n const signatures: PdfSignatureObject[] = [];\n return PdfTaskHelper.resolve(signatures);\n },\n getBookmarks: (doc: PdfDocumentObject) => {\n const bookmarks: PdfBookmarkObject[] = [];\n bookmarks.push(\n {\n title: 'Page 1',\n target: {\n type: 'destination',\n destination: {\n pageIndex: 1,\n zoom: {\n mode: PdfZoomMode.FitPage,\n },\n view: [],\n },\n },\n },\n {\n title: 'Page 2',\n target: {\n type: 'destination',\n destination: {\n pageIndex: 2,\n zoom: {\n mode: PdfZoomMode.FitPage,\n },\n view: [],\n },\n },\n children: [\n {\n title: 'Page 3',\n target: {\n type: 'destination',\n destination: {\n pageIndex: 3,\n zoom: {\n mode: PdfZoomMode.FitPage,\n },\n view: [],\n },\n },\n },\n ],\n },\n );\n return PdfTaskHelper.resolve({\n bookmarks,\n });\n },\n renderPage: jest.fn(\n (\n doc: PdfDocumentObject,\n page: PdfPageObject,\n scaleFactor: number,\n rotation: Rotation,\n dpr: number,\n options: PdfRenderOptions,\n ) => {\n const pageSize = rotation % 2 === 0 ? page.size : swap(page.size);\n const imageSize = {\n width: Math.ceil(pageSize.width * scaleFactor),\n height: Math.ceil(pageSize.height * scaleFactor),\n };\n const pixelCount = imageSize.width * imageSize.height;\n const array = new Uint8ClampedArray(pixelCount * 4);\n const rgbValue = page.index % 255;\n const alphaValue = 255;\n for (let i = 0; i < pixelCount; i++) {\n for (let j = 0; j < 3; j++) {\n const index = i * 4 + j;\n array[index] = rgbValue;\n }\n array[i * 4 + 3] = alphaValue;\n }\n\n const ab = array.buffer;\n const realBuffer = ab instanceof ArrayBuffer ? ab : new Uint8Array(array).buffer;\n const blob = new Blob([realBuffer], { type: 'application/octet-stream' });\n return PdfTaskHelper.resolve(blob);\n },\n ),\n renderPageRect: jest.fn(\n (\n doc: PdfDocumentObject,\n page: PdfPageObject,\n scaleFactor: number,\n rotation: Rotation,\n dpr: number,\n rect: Rect,\n options: PdfRenderOptions,\n ) => {\n const pageSize = rotation % 2 === 0 ? page.size : swap(page.size);\n const imageSize = {\n width: Math.ceil(pageSize.width * scaleFactor),\n height: Math.ceil(pageSize.height * scaleFactor),\n };\n const pixelCount = imageSize.width * imageSize.height;\n const array = new Uint8ClampedArray(pixelCount * 4);\n const rgbValue = page.index % 255;\n const alphaValue = 255;\n for (let i = 0; i < pixelCount; i++) {\n for (let j = 0; j < 3; j++) {\n const index = i * 4 + j;\n array[index] = rgbValue;\n }\n array[i * 4 + 3] = alphaValue;\n }\n\n const ab = array.buffer;\n const realBuffer = ab instanceof ArrayBuffer ? ab : new Uint8Array(array).buffer;\n const blob = new Blob([realBuffer], { type: 'application/octet-stream' });\n return PdfTaskHelper.resolve(blob);\n },\n ),\n renderThumbnail: jest.fn((doc: PdfDocumentObject, page: PdfPageObject) => {\n const thumbnailWidth = page.size.width / 4;\n const thumbnailHeight = page.size.height / 4;\n const pixelCount = thumbnailWidth * thumbnailHeight;\n const array = new Uint8ClampedArray(pixelCount * 4);\n const rgbValue = page.index % 255;\n const alphaValue = 255;\n for (let i = 0; i < pixelCount; i++) {\n for (let j = 0; j < 3; j++) {\n const index = i * 4 + j;\n array[index] = rgbValue;\n }\n array[i * 4 + 3] = alphaValue;\n }\n\n const ab = array.buffer;\n const realBuffer = ab instanceof ArrayBuffer ? ab : new Uint8Array(array).buffer;\n const blob = new Blob([realBuffer], { type: 'image/png' });\n\n return PdfTaskHelper.resolve(blob);\n }),\n getAllAnnotations: jest.fn((doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve({});\n }),\n getPageAnnotations: jest.fn((doc: PdfDocumentObject, page: PdfPageObject) => {\n const link: PdfLinkAnnoObject = {\n status: PdfAnnotationObjectStatus.Committed,\n pageIndex: page.index,\n id: page.index + 1,\n type: PdfAnnotationSubtype.LINK,\n target: {\n type: 'action',\n action: {\n type: PdfActionType.URI,\n uri: 'https://localhost',\n },\n },\n text: 'localhost',\n rect: {\n origin: {\n x: 0,\n y: 0,\n },\n size: {\n width: 100,\n height: 100,\n },\n },\n appearances: {\n normal: '',\n rollover: '',\n down: '',\n },\n };\n const annotations: PdfAnnotationObject[] = [];\n annotations.push(link);\n return PdfTaskHelper.resolve(annotations);\n }),\n createPageAnnotation: jest.fn(() => {\n return PdfTaskHelper.resolve(true);\n }),\n transformPageAnnotation: () => {\n return PdfTaskHelper.resolve(true);\n },\n removePageAnnotation: jest.fn(() => {\n return PdfTaskHelper.resolve(true);\n }),\n getPageTextRects: jest.fn(\n (doc: PdfDocumentObject, page: PdfPageObject, scaleFactor: number, rotation: Rotation) => {\n const textRects: PdfTextRectObject[] = [\n {\n content: 'pdf text',\n font: {\n family: 'sans-serif',\n size: 12,\n },\n rect: {\n origin: {\n x: 0,\n y: 0,\n },\n size: {\n width: 100,\n height: 100,\n },\n },\n },\n ];\n return PdfTaskHelper.resolve(textRects);\n },\n ),\n closeDocument: (pdf: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(true);\n },\n saveAsCopy: (pdf: PdfDocumentObject) => {\n return PdfTaskHelper.resolve(new ArrayBuffer(0));\n },\n flattenPage: (pdf: PdfDocumentObject, page: PdfPageObject, flag: PdfPageFlattenFlag) => {\n return PdfTaskHelper.resolve<PdfPageFlattenResult>(PdfPageFlattenResult.Success);\n },\n extractPages: (pdf: PdfDocumentObject, pageIndexes: number[]) => {\n return PdfTaskHelper.resolve(new ArrayBuffer(0));\n },\n extractText: (pdf: PdfDocumentObject, pageIndexes: number[]) => {\n return PdfTaskHelper.resolve('');\n },\n getPageGlyphs: (doc: PdfDocumentObject, page: PdfPageObject) => {\n return PdfTaskHelper.resolve([] as PdfGlyphObject[]);\n },\n getPageGeometry: (doc: PdfDocumentObject, page: PdfPageObject) => {\n return PdfTaskHelper.resolve({\n runs: [],\n } as PdfPageGeometry);\n },\n merge: (files: PdfFile[]) => {\n return PdfTaskHelper.resolve({\n id: 'id',\n content: new ArrayBuffer(0),\n });\n },\n mergePages: (mergeConfigs: Array<{ docId: string; pageIndices: number[] }>) => {\n return PdfTaskHelper.resolve({\n id: 'id',\n content: new ArrayBuffer(0),\n });\n },\n searchAllPages: (doc: PdfDocumentObject, keyword: string, flags?: MatchFlag[]) => {\n // Create a mock search result\n const mockResult: SearchResult = {\n pageIndex: 0,\n charIndex: 0,\n charCount: keyword.length,\n rects: [\n {\n origin: {\n x: 0,\n y: 0,\n },\n size: {\n width: 50,\n height: 20,\n },\n },\n ],\n context: {\n before: '',\n match: '',\n after: '',\n truncatedLeft: false,\n truncatedRight: false,\n },\n };\n\n // Return a mock SearchAllPagesResult with a single result\n return PdfTaskHelper.resolve<SearchAllPagesResult>({\n results: [mockResult],\n total: 1,\n });\n },\n getAttachments: (doc: PdfDocumentObject) => {\n return PdfTaskHelper.resolve([] as PdfAttachmentObject[]);\n },\n readAttachmentContent: (doc: PdfDocumentObject, attachment: PdfAttachmentObject) => {\n return PdfTaskHelper.resolve(new ArrayBuffer(0));\n },\n setFormFieldValue: (\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfWidgetAnnoObject,\n text: FormFieldValue,\n ) => {\n return PdfTaskHelper.resolve(true);\n },\n ...partialEngine,\n };\n\n return engine;\n}\n/**\n * Create mock of pdf document\n * @param doc - partial configuration of document\n * @returns mock of pdf document\n *\n * @public\n */\nexport function createMockPdfDocument(doc?: Partial<PdfDocumentObject>): PdfDocumentObject {\n const pageCount = 10;\n const pageWidth = 100;\n const pageHeight = 200;\n const pages = [];\n for (let i = 0; i < pageCount; i++) {\n pages.push({\n index: i,\n size: {\n width: pageWidth,\n height: pageHeight,\n },\n });\n }\n\n return {\n id: 'id',\n pageCount: pageCount,\n pages: pages,\n ...doc,\n };\n}\n\n/**\n * Create mock of pdf file\n * @param file - partial configuration of file\n * @returns mock of pdf file\n *\n * @public\n */\nexport function createMockPdfFile(file?: Partial<PdfFile>): PdfFile {\n return {\n id: 'id',\n content: new ArrayBuffer(0),\n };\n}\n"],"mappings":"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","names":[]}
|