@embedpdf/engines 1.0.3 → 1.0.4
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/dist/converters.cjs +149 -115
- package/dist/converters.cjs.map +1 -1
- package/dist/converters.d.ts +2 -1
- package/dist/converters.js +143 -86
- package/dist/converters.js.map +1 -1
- package/dist/index.cjs +5362 -5978
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1479 -6
- package/dist/index.js +5399 -356
- package/dist/index.js.map +1 -1
- package/dist/pdfium-direct-engine.cjs +4037 -0
- package/dist/pdfium-direct-engine.cjs.map +1 -0
- package/dist/{pdfium.d.cts → pdfium-direct-engine.d.ts} +4 -96
- package/dist/pdfium-direct-engine.js +4035 -0
- package/dist/pdfium-direct-engine.js.map +1 -0
- package/dist/pdfium-worker-engine.cjs +800 -0
- package/dist/pdfium-worker-engine.cjs.map +1 -0
- package/dist/{worker.d.cts → pdfium-worker-engine.d.ts} +36 -4
- package/dist/pdfium-worker-engine.js +798 -0
- package/dist/pdfium-worker-engine.js.map +1 -0
- package/dist/pdfium.cjs +4243 -5647
- package/dist/pdfium.cjs.map +1 -1
- package/dist/pdfium.d.ts +131 -3
- package/dist/pdfium.js +4288 -21
- package/dist/pdfium.js.map +1 -1
- package/dist/preact.cjs +39 -0
- package/dist/preact.cjs.map +1 -0
- package/dist/preact.d.ts +13 -0
- package/dist/preact.js +37 -0
- package/dist/preact.js.map +1 -0
- package/dist/react.cjs +39 -0
- package/dist/react.cjs.map +1 -0
- package/dist/react.d.ts +13 -0
- package/dist/react.js +37 -0
- package/dist/react.js.map +1 -0
- package/dist/worker.cjs +771 -1104
- package/dist/worker.cjs.map +1 -1
- package/dist/worker.d.ts +30 -4
- package/dist/worker.js +786 -11
- package/dist/worker.js.map +1 -1
- package/package.json +42 -8
- package/dist/chunk-FXQUMVH5.js +0 -4599
- package/dist/chunk-FXQUMVH5.js.map +0 -1
- package/dist/chunk-YZLT3A2D.js +0 -1101
- package/dist/chunk-YZLT3A2D.js.map +0 -1
- package/dist/converters.d.cts +0 -69
- package/dist/index.d.cts +0 -32
- package/dist/runner-BvRtPCKL.d.cts +0 -131
- package/dist/runner-BvRtPCKL.d.ts +0 -131
package/dist/worker.cjs
CHANGED
|
@@ -1,1122 +1,789 @@
|
|
|
1
|
-
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
'use strict';
|
|
19
2
|
|
|
20
|
-
|
|
21
|
-
var webworker_engine_exports = {};
|
|
22
|
-
__export(webworker_engine_exports, {
|
|
23
|
-
EngineRunner: () => EngineRunner,
|
|
24
|
-
WebWorkerEngine: () => WebWorkerEngine,
|
|
25
|
-
WorkerTask: () => WorkerTask
|
|
26
|
-
});
|
|
27
|
-
module.exports = __toCommonJS(webworker_engine_exports);
|
|
3
|
+
var models = require('@embedpdf/models');
|
|
28
4
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
* Create a task that bind to web worker with specified message id
|
|
36
|
-
* @param worker - web worker instance
|
|
37
|
-
* @param messageId - id of message
|
|
38
|
-
*
|
|
39
|
-
* @public
|
|
40
|
-
*/
|
|
41
|
-
constructor(worker, messageId) {
|
|
42
|
-
super();
|
|
43
|
-
this.worker = worker;
|
|
44
|
-
this.messageId = messageId;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* {@inheritDoc @embedpdf/models!Task.abort}
|
|
48
|
-
*
|
|
49
|
-
* @override
|
|
50
|
-
*/
|
|
51
|
-
abort(e) {
|
|
52
|
-
super.abort(e);
|
|
53
|
-
this.worker.postMessage({
|
|
54
|
-
type: "AbortRequest",
|
|
55
|
-
data: {
|
|
56
|
-
messageId: this.messageId
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
var _WebWorkerEngine = class _WebWorkerEngine {
|
|
62
|
-
/**
|
|
63
|
-
* Create an instance of WebWorkerEngine, it will create a worker with
|
|
64
|
-
* specified url.
|
|
65
|
-
* @param worker - webworker instance, this worker needs to contains the running instance of {@link EngineRunner}
|
|
66
|
-
* @param logger - logger instance
|
|
67
|
-
*
|
|
68
|
-
* @public
|
|
69
|
-
*/
|
|
70
|
-
constructor(worker, logger = new import_models.NoopLogger()) {
|
|
71
|
-
this.worker = worker;
|
|
72
|
-
this.logger = logger;
|
|
5
|
+
const LOG_SOURCE = 'WebWorkerEngine';
|
|
6
|
+
const LOG_CATEGORY = 'Engine';
|
|
7
|
+
/**
|
|
8
|
+
* Task that executed by webworker
|
|
9
|
+
*/
|
|
10
|
+
class WorkerTask extends models.Task {
|
|
73
11
|
/**
|
|
74
|
-
*
|
|
12
|
+
* Create a task that bind to web worker with specified message id
|
|
13
|
+
* @param worker - web worker instance
|
|
14
|
+
* @param messageId - id of message
|
|
15
|
+
*
|
|
16
|
+
* @public
|
|
75
17
|
*/
|
|
76
|
-
|
|
18
|
+
constructor(worker, messageId) {
|
|
19
|
+
super();
|
|
20
|
+
this.worker = worker;
|
|
21
|
+
this.messageId = messageId;
|
|
22
|
+
}
|
|
77
23
|
/**
|
|
78
|
-
*
|
|
79
|
-
* 1. ReadyResponse: web worker is ready
|
|
80
|
-
* 2. ExecuteResponse: result of execution
|
|
81
|
-
* @param evt - message event from web worker
|
|
82
|
-
* @returns
|
|
24
|
+
* {@inheritDoc @embedpdf/models!Task.abort}
|
|
83
25
|
*
|
|
84
|
-
* @
|
|
26
|
+
* @override
|
|
85
27
|
*/
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
try {
|
|
94
|
-
const response = evt.data;
|
|
95
|
-
const task = this.tasks.get(response.id);
|
|
96
|
-
if (!task) {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
switch (response.type) {
|
|
100
|
-
case "ReadyResponse":
|
|
101
|
-
this.readyTask.resolve(true);
|
|
102
|
-
break;
|
|
103
|
-
case "ExecuteResponse":
|
|
104
|
-
{
|
|
105
|
-
switch (response.data.type) {
|
|
106
|
-
case "result":
|
|
107
|
-
task.resolve(response.data.value);
|
|
108
|
-
break;
|
|
109
|
-
case "error":
|
|
110
|
-
task.reject(response.data.value.reason);
|
|
111
|
-
break;
|
|
112
|
-
}
|
|
113
|
-
this.tasks.delete(response.id);
|
|
114
|
-
}
|
|
115
|
-
break;
|
|
116
|
-
}
|
|
117
|
-
} catch (e) {
|
|
118
|
-
this.logger.error(LOG_SOURCE, LOG_CATEGORY, "webworker met error when handling message: ", e);
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
this.worker.addEventListener("message", this.handle);
|
|
122
|
-
this.readyTask = new WorkerTask(this.worker, _WebWorkerEngine.readyTaskId);
|
|
123
|
-
this.tasks.set(_WebWorkerEngine.readyTaskId, this.readyTask);
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Generate a unique message id
|
|
127
|
-
* @returns message id
|
|
128
|
-
*
|
|
129
|
-
* @private
|
|
130
|
-
*/
|
|
131
|
-
generateRequestId(id) {
|
|
132
|
-
return `${id}.${Date.now()}.${Math.random()}`;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.initialize}
|
|
136
|
-
*
|
|
137
|
-
* @public
|
|
138
|
-
*/
|
|
139
|
-
initialize() {
|
|
140
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "initialize");
|
|
141
|
-
const requestId = this.generateRequestId("General");
|
|
142
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
143
|
-
const request = {
|
|
144
|
-
id: requestId,
|
|
145
|
-
type: "ExecuteRequest",
|
|
146
|
-
data: {
|
|
147
|
-
name: "initialize",
|
|
148
|
-
args: []
|
|
149
|
-
}
|
|
150
|
-
};
|
|
151
|
-
this.proxy(task, request);
|
|
152
|
-
return task;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.destroy}
|
|
156
|
-
*
|
|
157
|
-
* @public
|
|
158
|
-
*/
|
|
159
|
-
destroy() {
|
|
160
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "destroy");
|
|
161
|
-
const requestId = this.generateRequestId("General");
|
|
162
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
163
|
-
task.wait(
|
|
164
|
-
() => {
|
|
165
|
-
this.worker.removeEventListener("message", this.handle);
|
|
166
|
-
},
|
|
167
|
-
() => {
|
|
168
|
-
this.worker.removeEventListener("message", this.handle);
|
|
169
|
-
}
|
|
170
|
-
);
|
|
171
|
-
const request = {
|
|
172
|
-
id: requestId,
|
|
173
|
-
type: "ExecuteRequest",
|
|
174
|
-
data: {
|
|
175
|
-
name: "destroy",
|
|
176
|
-
args: []
|
|
177
|
-
}
|
|
178
|
-
};
|
|
179
|
-
this.proxy(task, request);
|
|
180
|
-
return task;
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.openDocumentUrl}
|
|
184
|
-
*
|
|
185
|
-
* @public
|
|
186
|
-
*/
|
|
187
|
-
openDocumentUrl(file, options) {
|
|
188
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "openDocumentUrl", file.url, options);
|
|
189
|
-
const requestId = this.generateRequestId(file.id);
|
|
190
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
191
|
-
const request = {
|
|
192
|
-
id: requestId,
|
|
193
|
-
type: "ExecuteRequest",
|
|
194
|
-
data: {
|
|
195
|
-
name: "openDocumentUrl",
|
|
196
|
-
args: [file, options]
|
|
197
|
-
}
|
|
198
|
-
};
|
|
199
|
-
this.proxy(task, request);
|
|
200
|
-
return task;
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.openDocument}
|
|
204
|
-
*
|
|
205
|
-
* @public
|
|
206
|
-
*/
|
|
207
|
-
openDocumentFromBuffer(file, password) {
|
|
208
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "openDocumentFromBuffer", file, password);
|
|
209
|
-
const requestId = this.generateRequestId(file.id);
|
|
210
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
211
|
-
const request = {
|
|
212
|
-
id: requestId,
|
|
213
|
-
type: "ExecuteRequest",
|
|
214
|
-
data: {
|
|
215
|
-
name: "openDocumentFromBuffer",
|
|
216
|
-
args: [file, password]
|
|
217
|
-
}
|
|
218
|
-
};
|
|
219
|
-
this.proxy(task, request);
|
|
220
|
-
return task;
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.openDocumentFromLoader}
|
|
224
|
-
*
|
|
225
|
-
* @public
|
|
226
|
-
*/
|
|
227
|
-
openDocumentFromLoader(file, password) {
|
|
228
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "openDocumentFromLoader", file, password);
|
|
229
|
-
const requestId = this.generateRequestId(file.id);
|
|
230
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
231
|
-
const request = {
|
|
232
|
-
id: requestId,
|
|
233
|
-
type: "ExecuteRequest",
|
|
234
|
-
data: {
|
|
235
|
-
name: "openDocumentFromLoader",
|
|
236
|
-
args: [file, password]
|
|
237
|
-
}
|
|
238
|
-
};
|
|
239
|
-
this.proxy(task, request);
|
|
240
|
-
return task;
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.getMetadata}
|
|
244
|
-
*
|
|
245
|
-
* @public
|
|
246
|
-
*/
|
|
247
|
-
getMetadata(doc) {
|
|
248
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "getMetadata", doc);
|
|
249
|
-
const requestId = this.generateRequestId(doc.id);
|
|
250
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
251
|
-
const request = {
|
|
252
|
-
id: requestId,
|
|
253
|
-
type: "ExecuteRequest",
|
|
254
|
-
data: {
|
|
255
|
-
name: "getMetadata",
|
|
256
|
-
args: [doc]
|
|
257
|
-
}
|
|
258
|
-
};
|
|
259
|
-
this.proxy(task, request);
|
|
260
|
-
return task;
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.getDocPermissions}
|
|
264
|
-
*
|
|
265
|
-
* @public
|
|
266
|
-
*/
|
|
267
|
-
getDocPermissions(doc) {
|
|
268
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "getDocPermissions", doc);
|
|
269
|
-
const requestId = this.generateRequestId(doc.id);
|
|
270
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
271
|
-
const request = {
|
|
272
|
-
id: requestId,
|
|
273
|
-
type: "ExecuteRequest",
|
|
274
|
-
data: {
|
|
275
|
-
name: "getDocPermissions",
|
|
276
|
-
args: [doc]
|
|
277
|
-
}
|
|
278
|
-
};
|
|
279
|
-
this.proxy(task, request);
|
|
280
|
-
return task;
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.getDocUserPermissions}
|
|
284
|
-
*
|
|
285
|
-
* @public
|
|
286
|
-
*/
|
|
287
|
-
getDocUserPermissions(doc) {
|
|
288
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "getDocUserPermissions", doc);
|
|
289
|
-
const requestId = this.generateRequestId(doc.id);
|
|
290
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
291
|
-
const request = {
|
|
292
|
-
id: requestId,
|
|
293
|
-
type: "ExecuteRequest",
|
|
294
|
-
data: {
|
|
295
|
-
name: "getDocUserPermissions",
|
|
296
|
-
args: [doc]
|
|
297
|
-
}
|
|
298
|
-
};
|
|
299
|
-
this.proxy(task, request);
|
|
300
|
-
return task;
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.getBookmarks}
|
|
304
|
-
*
|
|
305
|
-
* @public
|
|
306
|
-
*/
|
|
307
|
-
getBookmarks(doc) {
|
|
308
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "getBookmarks", doc);
|
|
309
|
-
const requestId = this.generateRequestId(doc.id);
|
|
310
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
311
|
-
const request = {
|
|
312
|
-
id: requestId,
|
|
313
|
-
type: "ExecuteRequest",
|
|
314
|
-
data: {
|
|
315
|
-
name: "getBookmarks",
|
|
316
|
-
args: [doc]
|
|
317
|
-
}
|
|
318
|
-
};
|
|
319
|
-
this.proxy(task, request);
|
|
320
|
-
return task;
|
|
321
|
-
}
|
|
322
|
-
/**
|
|
323
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.getSignatures}
|
|
324
|
-
*
|
|
325
|
-
* @public
|
|
326
|
-
*/
|
|
327
|
-
getSignatures(doc) {
|
|
328
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "getSignatures", doc);
|
|
329
|
-
const requestId = this.generateRequestId(doc.id);
|
|
330
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
331
|
-
const request = {
|
|
332
|
-
id: requestId,
|
|
333
|
-
type: "ExecuteRequest",
|
|
334
|
-
data: {
|
|
335
|
-
name: "getSignatures",
|
|
336
|
-
args: [doc]
|
|
337
|
-
}
|
|
338
|
-
};
|
|
339
|
-
this.proxy(task, request);
|
|
340
|
-
return task;
|
|
341
|
-
}
|
|
342
|
-
/**
|
|
343
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.renderPage}
|
|
344
|
-
*
|
|
345
|
-
* @public
|
|
346
|
-
*/
|
|
347
|
-
renderPage(doc, page, scaleFactor, rotation, dpr, options) {
|
|
348
|
-
this.logger.debug(
|
|
349
|
-
LOG_SOURCE,
|
|
350
|
-
LOG_CATEGORY,
|
|
351
|
-
"renderPage",
|
|
352
|
-
doc,
|
|
353
|
-
page,
|
|
354
|
-
scaleFactor,
|
|
355
|
-
rotation,
|
|
356
|
-
dpr,
|
|
357
|
-
options
|
|
358
|
-
);
|
|
359
|
-
const requestId = this.generateRequestId(doc.id);
|
|
360
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
361
|
-
const request = {
|
|
362
|
-
id: requestId,
|
|
363
|
-
type: "ExecuteRequest",
|
|
364
|
-
data: {
|
|
365
|
-
name: "renderPage",
|
|
366
|
-
args: [doc, page, scaleFactor, rotation, dpr, options]
|
|
367
|
-
}
|
|
368
|
-
};
|
|
369
|
-
this.proxy(task, request);
|
|
370
|
-
return task;
|
|
371
|
-
}
|
|
372
|
-
/**
|
|
373
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.renderPageRect}
|
|
374
|
-
*
|
|
375
|
-
* @public
|
|
376
|
-
*/
|
|
377
|
-
renderPageRect(doc, page, scaleFactor, rotation, dpr, rect, options) {
|
|
378
|
-
this.logger.debug(
|
|
379
|
-
LOG_SOURCE,
|
|
380
|
-
LOG_CATEGORY,
|
|
381
|
-
"renderPageRect",
|
|
382
|
-
doc,
|
|
383
|
-
page,
|
|
384
|
-
scaleFactor,
|
|
385
|
-
rotation,
|
|
386
|
-
dpr,
|
|
387
|
-
rect,
|
|
388
|
-
options
|
|
389
|
-
);
|
|
390
|
-
const requestId = this.generateRequestId(doc.id);
|
|
391
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
392
|
-
const request = {
|
|
393
|
-
id: requestId,
|
|
394
|
-
type: "ExecuteRequest",
|
|
395
|
-
data: {
|
|
396
|
-
name: "renderPageRect",
|
|
397
|
-
args: [doc, page, scaleFactor, rotation, dpr, rect, options]
|
|
398
|
-
}
|
|
399
|
-
};
|
|
400
|
-
this.proxy(task, request);
|
|
401
|
-
return task;
|
|
402
|
-
}
|
|
403
|
-
/**
|
|
404
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.getAllAnnotations}
|
|
405
|
-
*
|
|
406
|
-
* @public
|
|
407
|
-
*/
|
|
408
|
-
getAllAnnotations(doc) {
|
|
409
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "getAllAnnotations", doc);
|
|
410
|
-
const requestId = this.generateRequestId(doc.id);
|
|
411
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
412
|
-
const request = {
|
|
413
|
-
id: requestId,
|
|
414
|
-
type: "ExecuteRequest",
|
|
415
|
-
data: {
|
|
416
|
-
name: "getAllAnnotations",
|
|
417
|
-
args: [doc]
|
|
418
|
-
}
|
|
419
|
-
};
|
|
420
|
-
this.proxy(task, request);
|
|
421
|
-
return task;
|
|
422
|
-
}
|
|
423
|
-
/**
|
|
424
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.getPageAnnotations}
|
|
425
|
-
*
|
|
426
|
-
* @public
|
|
427
|
-
*/
|
|
428
|
-
getPageAnnotations(doc, page) {
|
|
429
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "getPageAnnotations", doc, page);
|
|
430
|
-
const requestId = this.generateRequestId(doc.id);
|
|
431
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
432
|
-
const request = {
|
|
433
|
-
id: requestId,
|
|
434
|
-
type: "ExecuteRequest",
|
|
435
|
-
data: {
|
|
436
|
-
name: "getPageAnnotations",
|
|
437
|
-
args: [doc, page]
|
|
438
|
-
}
|
|
439
|
-
};
|
|
440
|
-
this.proxy(task, request);
|
|
441
|
-
return task;
|
|
442
|
-
}
|
|
443
|
-
/**
|
|
444
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.createPageAnnotation}
|
|
445
|
-
*
|
|
446
|
-
* @public
|
|
447
|
-
*/
|
|
448
|
-
createPageAnnotation(doc, page, annotation) {
|
|
449
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "createPageAnnotations", doc, page, annotation);
|
|
450
|
-
const requestId = this.generateRequestId(doc.id);
|
|
451
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
452
|
-
const request = {
|
|
453
|
-
id: requestId,
|
|
454
|
-
type: "ExecuteRequest",
|
|
455
|
-
data: {
|
|
456
|
-
name: "createPageAnnotation",
|
|
457
|
-
args: [doc, page, annotation]
|
|
458
|
-
}
|
|
459
|
-
};
|
|
460
|
-
this.proxy(task, request);
|
|
461
|
-
return task;
|
|
462
|
-
}
|
|
463
|
-
/**
|
|
464
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.transformPageAnnotation}
|
|
465
|
-
*
|
|
466
|
-
* @public
|
|
467
|
-
*/
|
|
468
|
-
transformPageAnnotation(doc, page, annotation, transformation) {
|
|
469
|
-
this.logger.debug(
|
|
470
|
-
LOG_SOURCE,
|
|
471
|
-
LOG_CATEGORY,
|
|
472
|
-
"transformPageAnnotation",
|
|
473
|
-
doc,
|
|
474
|
-
page,
|
|
475
|
-
annotation,
|
|
476
|
-
transformation
|
|
477
|
-
);
|
|
478
|
-
const requestId = this.generateRequestId(doc.id);
|
|
479
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
480
|
-
const request = {
|
|
481
|
-
id: requestId,
|
|
482
|
-
type: "ExecuteRequest",
|
|
483
|
-
data: {
|
|
484
|
-
name: "transformPageAnnotation",
|
|
485
|
-
args: [doc, page, annotation, transformation]
|
|
486
|
-
}
|
|
487
|
-
};
|
|
488
|
-
this.proxy(task, request);
|
|
489
|
-
return task;
|
|
490
|
-
}
|
|
491
|
-
/**
|
|
492
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.removePageAnnotation}
|
|
493
|
-
*
|
|
494
|
-
* @public
|
|
495
|
-
*/
|
|
496
|
-
removePageAnnotation(doc, page, annotation) {
|
|
497
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "removePageAnnotations", doc, page, annotation);
|
|
498
|
-
const requestId = this.generateRequestId(doc.id);
|
|
499
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
500
|
-
const request = {
|
|
501
|
-
id: requestId,
|
|
502
|
-
type: "ExecuteRequest",
|
|
503
|
-
data: {
|
|
504
|
-
name: "removePageAnnotation",
|
|
505
|
-
args: [doc, page, annotation]
|
|
506
|
-
}
|
|
507
|
-
};
|
|
508
|
-
this.proxy(task, request);
|
|
509
|
-
return task;
|
|
510
|
-
}
|
|
511
|
-
/**
|
|
512
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.getPageTextRects}
|
|
513
|
-
*
|
|
514
|
-
* @public
|
|
515
|
-
*/
|
|
516
|
-
getPageTextRects(doc, page, scaleFactor, rotation) {
|
|
517
|
-
this.logger.debug(
|
|
518
|
-
LOG_SOURCE,
|
|
519
|
-
LOG_CATEGORY,
|
|
520
|
-
"getPageTextRects",
|
|
521
|
-
doc,
|
|
522
|
-
page,
|
|
523
|
-
scaleFactor,
|
|
524
|
-
rotation
|
|
525
|
-
);
|
|
526
|
-
const requestId = this.generateRequestId(doc.id);
|
|
527
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
528
|
-
const request = {
|
|
529
|
-
id: requestId,
|
|
530
|
-
type: "ExecuteRequest",
|
|
531
|
-
data: {
|
|
532
|
-
name: "getPageTextRects",
|
|
533
|
-
args: [doc, page, scaleFactor, rotation]
|
|
534
|
-
}
|
|
535
|
-
};
|
|
536
|
-
this.proxy(task, request);
|
|
537
|
-
return task;
|
|
538
|
-
}
|
|
539
|
-
/**
|
|
540
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.renderThumbnail}
|
|
541
|
-
*
|
|
542
|
-
* @public
|
|
543
|
-
*/
|
|
544
|
-
renderThumbnail(doc, page, scaleFactor, rotation, dpr) {
|
|
545
|
-
this.logger.debug(
|
|
546
|
-
LOG_SOURCE,
|
|
547
|
-
LOG_CATEGORY,
|
|
548
|
-
"renderThumbnail",
|
|
549
|
-
doc,
|
|
550
|
-
page,
|
|
551
|
-
scaleFactor,
|
|
552
|
-
rotation,
|
|
553
|
-
dpr
|
|
554
|
-
);
|
|
555
|
-
const requestId = this.generateRequestId(doc.id);
|
|
556
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
557
|
-
const request = {
|
|
558
|
-
id: requestId,
|
|
559
|
-
type: "ExecuteRequest",
|
|
560
|
-
data: {
|
|
561
|
-
name: "renderThumbnail",
|
|
562
|
-
args: [doc, page, scaleFactor, rotation, dpr]
|
|
563
|
-
}
|
|
564
|
-
};
|
|
565
|
-
this.proxy(task, request);
|
|
566
|
-
return task;
|
|
567
|
-
}
|
|
568
|
-
/**
|
|
569
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.searchAllPages}
|
|
570
|
-
*
|
|
571
|
-
* @public
|
|
572
|
-
*/
|
|
573
|
-
searchAllPages(doc, keyword, flags = []) {
|
|
574
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "searchAllPages 123", doc, keyword, flags);
|
|
575
|
-
const requestId = this.generateRequestId(doc.id);
|
|
576
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
577
|
-
const request = {
|
|
578
|
-
id: requestId,
|
|
579
|
-
type: "ExecuteRequest",
|
|
580
|
-
data: {
|
|
581
|
-
name: "searchAllPages",
|
|
582
|
-
args: [doc, keyword, flags]
|
|
583
|
-
}
|
|
584
|
-
};
|
|
585
|
-
this.proxy(task, request);
|
|
586
|
-
return task;
|
|
587
|
-
}
|
|
588
|
-
/**
|
|
589
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.saveAsCopy}
|
|
590
|
-
*
|
|
591
|
-
* @public
|
|
592
|
-
*/
|
|
593
|
-
saveAsCopy(doc) {
|
|
594
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "saveAsCopy", doc);
|
|
595
|
-
const requestId = this.generateRequestId(doc.id);
|
|
596
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
597
|
-
const request = {
|
|
598
|
-
id: requestId,
|
|
599
|
-
type: "ExecuteRequest",
|
|
600
|
-
data: {
|
|
601
|
-
name: "saveAsCopy",
|
|
602
|
-
args: [doc]
|
|
603
|
-
}
|
|
604
|
-
};
|
|
605
|
-
this.proxy(task, request);
|
|
606
|
-
return task;
|
|
607
|
-
}
|
|
608
|
-
/**
|
|
609
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.getAttachments}
|
|
610
|
-
*
|
|
611
|
-
* @public
|
|
612
|
-
*/
|
|
613
|
-
getAttachments(doc) {
|
|
614
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "getAttachments", doc);
|
|
615
|
-
const requestId = this.generateRequestId(doc.id);
|
|
616
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
617
|
-
const request = {
|
|
618
|
-
id: requestId,
|
|
619
|
-
type: "ExecuteRequest",
|
|
620
|
-
data: {
|
|
621
|
-
name: "getAttachments",
|
|
622
|
-
args: [doc]
|
|
623
|
-
}
|
|
624
|
-
};
|
|
625
|
-
this.proxy(task, request);
|
|
626
|
-
return task;
|
|
627
|
-
}
|
|
628
|
-
/**
|
|
629
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.readAttachmentContent}
|
|
630
|
-
*
|
|
631
|
-
* @public
|
|
632
|
-
*/
|
|
633
|
-
readAttachmentContent(doc, attachment) {
|
|
634
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "readAttachmentContent", doc, attachment);
|
|
635
|
-
const requestId = this.generateRequestId(doc.id);
|
|
636
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
637
|
-
const request = {
|
|
638
|
-
id: requestId,
|
|
639
|
-
type: "ExecuteRequest",
|
|
640
|
-
data: {
|
|
641
|
-
name: "readAttachmentContent",
|
|
642
|
-
args: [doc, attachment]
|
|
643
|
-
}
|
|
644
|
-
};
|
|
645
|
-
this.proxy(task, request);
|
|
646
|
-
return task;
|
|
647
|
-
}
|
|
648
|
-
/**
|
|
649
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.setFormFieldValue}
|
|
650
|
-
*
|
|
651
|
-
* @public
|
|
652
|
-
*/
|
|
653
|
-
setFormFieldValue(doc, page, annotation, value) {
|
|
654
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "setFormFieldValue", doc, annotation, value);
|
|
655
|
-
const requestId = this.generateRequestId(doc.id);
|
|
656
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
657
|
-
const request = {
|
|
658
|
-
id: requestId,
|
|
659
|
-
type: "ExecuteRequest",
|
|
660
|
-
data: {
|
|
661
|
-
name: "setFormFieldValue",
|
|
662
|
-
args: [doc, page, annotation, value]
|
|
663
|
-
}
|
|
664
|
-
};
|
|
665
|
-
this.proxy(task, request);
|
|
666
|
-
return task;
|
|
667
|
-
}
|
|
668
|
-
/**
|
|
669
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.flattenPage}
|
|
670
|
-
*
|
|
671
|
-
* @public
|
|
672
|
-
*/
|
|
673
|
-
flattenPage(doc, page, flag) {
|
|
674
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "flattenPage", doc, page, flag);
|
|
675
|
-
const requestId = this.generateRequestId(doc.id);
|
|
676
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
677
|
-
const request = {
|
|
678
|
-
id: requestId,
|
|
679
|
-
type: "ExecuteRequest",
|
|
680
|
-
data: {
|
|
681
|
-
name: "flattenPage",
|
|
682
|
-
args: [doc, page, flag]
|
|
683
|
-
}
|
|
684
|
-
};
|
|
685
|
-
this.proxy(task, request);
|
|
686
|
-
return task;
|
|
687
|
-
}
|
|
688
|
-
/**
|
|
689
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.extractPages}
|
|
690
|
-
*
|
|
691
|
-
* @public
|
|
692
|
-
*/
|
|
693
|
-
extractPages(doc, pageIndexes) {
|
|
694
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "extractPages", doc);
|
|
695
|
-
const requestId = this.generateRequestId(doc.id);
|
|
696
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
697
|
-
const request = {
|
|
698
|
-
id: requestId,
|
|
699
|
-
type: "ExecuteRequest",
|
|
700
|
-
data: {
|
|
701
|
-
name: "extractPages",
|
|
702
|
-
args: [doc, pageIndexes]
|
|
703
|
-
}
|
|
704
|
-
};
|
|
705
|
-
this.proxy(task, request);
|
|
706
|
-
return task;
|
|
707
|
-
}
|
|
708
|
-
/**
|
|
709
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.extractText}
|
|
710
|
-
*
|
|
711
|
-
* @public
|
|
712
|
-
*/
|
|
713
|
-
extractText(doc, pageIndexes) {
|
|
714
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "extractText", doc);
|
|
715
|
-
const requestId = this.generateRequestId(doc.id);
|
|
716
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
717
|
-
const request = {
|
|
718
|
-
id: requestId,
|
|
719
|
-
type: "ExecuteRequest",
|
|
720
|
-
data: {
|
|
721
|
-
name: "extractText",
|
|
722
|
-
args: [doc, pageIndexes]
|
|
723
|
-
}
|
|
724
|
-
};
|
|
725
|
-
this.proxy(task, request);
|
|
726
|
-
return task;
|
|
727
|
-
}
|
|
728
|
-
/**
|
|
729
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.getPageGlyphs}
|
|
730
|
-
*
|
|
731
|
-
* @public
|
|
732
|
-
*/
|
|
733
|
-
getPageGlyphs(doc, page) {
|
|
734
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "getPageGlyphs", doc, page);
|
|
735
|
-
const requestId = this.generateRequestId(doc.id);
|
|
736
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
737
|
-
const request = {
|
|
738
|
-
id: requestId,
|
|
739
|
-
type: "ExecuteRequest",
|
|
740
|
-
data: {
|
|
741
|
-
name: "getPageGlyphs",
|
|
742
|
-
args: [doc, page]
|
|
743
|
-
}
|
|
744
|
-
};
|
|
745
|
-
this.proxy(task, request);
|
|
746
|
-
return task;
|
|
747
|
-
}
|
|
748
|
-
/**
|
|
749
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.getPageGeometry}
|
|
750
|
-
*
|
|
751
|
-
* @public
|
|
752
|
-
*/
|
|
753
|
-
getPageGeometry(doc, page) {
|
|
754
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "getPageGeometry", doc, page);
|
|
755
|
-
const requestId = this.generateRequestId(doc.id);
|
|
756
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
757
|
-
const request = {
|
|
758
|
-
id: requestId,
|
|
759
|
-
type: "ExecuteRequest",
|
|
760
|
-
data: {
|
|
761
|
-
name: "getPageGeometry",
|
|
762
|
-
args: [doc, page]
|
|
763
|
-
}
|
|
764
|
-
};
|
|
765
|
-
this.proxy(task, request);
|
|
766
|
-
return task;
|
|
767
|
-
}
|
|
768
|
-
/**
|
|
769
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.merge}
|
|
770
|
-
*
|
|
771
|
-
* @public
|
|
772
|
-
*/
|
|
773
|
-
merge(files) {
|
|
774
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "merge", files);
|
|
775
|
-
const fileIds = files.map((file) => file.id).join(".");
|
|
776
|
-
const requestId = this.generateRequestId(fileIds);
|
|
777
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
778
|
-
const request = {
|
|
779
|
-
id: requestId,
|
|
780
|
-
type: "ExecuteRequest",
|
|
781
|
-
data: {
|
|
782
|
-
name: "merge",
|
|
783
|
-
args: [files]
|
|
784
|
-
}
|
|
785
|
-
};
|
|
786
|
-
this.proxy(task, request);
|
|
787
|
-
return task;
|
|
788
|
-
}
|
|
789
|
-
/**
|
|
790
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.mergePages}
|
|
791
|
-
*
|
|
792
|
-
* @public
|
|
793
|
-
*/
|
|
794
|
-
mergePages(mergeConfigs) {
|
|
795
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "mergePages", mergeConfigs);
|
|
796
|
-
const requestId = this.generateRequestId(mergeConfigs.map((config) => config.docId).join("."));
|
|
797
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
798
|
-
const request = {
|
|
799
|
-
id: requestId,
|
|
800
|
-
type: "ExecuteRequest",
|
|
801
|
-
data: {
|
|
802
|
-
name: "mergePages",
|
|
803
|
-
args: [mergeConfigs]
|
|
804
|
-
}
|
|
805
|
-
};
|
|
806
|
-
this.proxy(task, request);
|
|
807
|
-
return task;
|
|
808
|
-
}
|
|
809
|
-
/**
|
|
810
|
-
* {@inheritDoc @embedpdf/models!PdfEngine.closeDocument}
|
|
811
|
-
*
|
|
812
|
-
* @public
|
|
813
|
-
*/
|
|
814
|
-
closeDocument(doc) {
|
|
815
|
-
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "closeDocument", doc);
|
|
816
|
-
const requestId = this.generateRequestId(doc.id);
|
|
817
|
-
const task = new WorkerTask(this.worker, requestId);
|
|
818
|
-
const request = {
|
|
819
|
-
id: requestId,
|
|
820
|
-
type: "ExecuteRequest",
|
|
821
|
-
data: {
|
|
822
|
-
name: "closeDocument",
|
|
823
|
-
args: [doc]
|
|
824
|
-
}
|
|
825
|
-
};
|
|
826
|
-
this.proxy(task, request);
|
|
827
|
-
return task;
|
|
828
|
-
}
|
|
829
|
-
/**
|
|
830
|
-
* Send the request to webworker inside and register the task
|
|
831
|
-
* @param task - task that waiting for the response
|
|
832
|
-
* @param request - request that needs send to web worker
|
|
833
|
-
* @param transferables - transferables that need to transfer to webworker
|
|
834
|
-
* @returns
|
|
835
|
-
*
|
|
836
|
-
* @internal
|
|
837
|
-
*/
|
|
838
|
-
proxy(task, request, transferables = []) {
|
|
839
|
-
this.logger.debug(
|
|
840
|
-
LOG_SOURCE,
|
|
841
|
-
LOG_CATEGORY,
|
|
842
|
-
"send request to worker",
|
|
843
|
-
task,
|
|
844
|
-
request,
|
|
845
|
-
transferables
|
|
846
|
-
);
|
|
847
|
-
this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, "Begin", request.id);
|
|
848
|
-
this.readyTask.wait(
|
|
849
|
-
() => {
|
|
850
|
-
this.worker.postMessage(request, transferables);
|
|
851
|
-
task.wait(
|
|
852
|
-
() => {
|
|
853
|
-
this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, "End", request.id);
|
|
854
|
-
},
|
|
855
|
-
() => {
|
|
856
|
-
this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, "End", request.id);
|
|
857
|
-
}
|
|
858
|
-
);
|
|
859
|
-
this.tasks.set(request.id, task);
|
|
860
|
-
},
|
|
861
|
-
() => {
|
|
862
|
-
this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, "End", request.id);
|
|
863
|
-
task.reject({
|
|
864
|
-
code: import_models.PdfErrorCode.Initialization,
|
|
865
|
-
message: "worker initialization failed"
|
|
28
|
+
abort(e) {
|
|
29
|
+
super.abort(e);
|
|
30
|
+
this.worker.postMessage({
|
|
31
|
+
type: 'AbortRequest',
|
|
32
|
+
data: {
|
|
33
|
+
messageId: this.messageId,
|
|
34
|
+
},
|
|
866
35
|
});
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
// src/webworker/runner.ts
|
|
875
|
-
var import_models2 = require("@embedpdf/models");
|
|
876
|
-
var LOG_SOURCE2 = "WebWorkerEngineRunner";
|
|
877
|
-
var LOG_CATEGORY2 = "Engine";
|
|
878
|
-
var EngineRunner = class {
|
|
879
|
-
/**
|
|
880
|
-
* Create instance of EngineRunnder
|
|
881
|
-
* @param logger - logger instance
|
|
882
|
-
*/
|
|
883
|
-
constructor(logger = new import_models2.NoopLogger()) {
|
|
884
|
-
this.logger = logger;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* PDF engine that runs within webworker
|
|
40
|
+
*/
|
|
41
|
+
class WebWorkerEngine {
|
|
885
42
|
/**
|
|
886
|
-
*
|
|
887
|
-
*
|
|
888
|
-
* @
|
|
43
|
+
* Create an instance of WebWorkerEngine, it will create a worker with
|
|
44
|
+
* specified url.
|
|
45
|
+
* @param worker - webworker instance, this worker needs to contains the running instance of {@link EngineRunner}
|
|
46
|
+
* @param logger - logger instance
|
|
47
|
+
*
|
|
48
|
+
* @public
|
|
49
|
+
*/
|
|
50
|
+
constructor(worker, logger = new models.NoopLogger()) {
|
|
51
|
+
this.worker = worker;
|
|
52
|
+
this.logger = logger;
|
|
53
|
+
/**
|
|
54
|
+
* All the tasks that is executing
|
|
55
|
+
*/
|
|
56
|
+
this.tasks = new Map();
|
|
57
|
+
/**
|
|
58
|
+
* Handle event from web worker. There are 2 kinds of event
|
|
59
|
+
* 1. ReadyResponse: web worker is ready
|
|
60
|
+
* 2. ExecuteResponse: result of execution
|
|
61
|
+
* @param evt - message event from web worker
|
|
62
|
+
* @returns
|
|
63
|
+
*
|
|
64
|
+
* @private
|
|
65
|
+
*/
|
|
66
|
+
this.handle = (evt) => {
|
|
67
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'webworker engine start handling message: ', evt.data);
|
|
68
|
+
try {
|
|
69
|
+
const response = evt.data;
|
|
70
|
+
const task = this.tasks.get(response.id);
|
|
71
|
+
if (!task) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
switch (response.type) {
|
|
75
|
+
case 'ReadyResponse':
|
|
76
|
+
this.readyTask.resolve(true);
|
|
77
|
+
break;
|
|
78
|
+
case 'ExecuteResponse':
|
|
79
|
+
{
|
|
80
|
+
switch (response.data.type) {
|
|
81
|
+
case 'result':
|
|
82
|
+
task.resolve(response.data.value);
|
|
83
|
+
break;
|
|
84
|
+
case 'error':
|
|
85
|
+
task.reject(response.data.value.reason);
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
this.tasks.delete(response.id);
|
|
89
|
+
}
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
this.logger.error(LOG_SOURCE, LOG_CATEGORY, 'webworker met error when handling message: ', e);
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
this.worker.addEventListener('message', this.handle);
|
|
98
|
+
this.readyTask = new WorkerTask(this.worker, WebWorkerEngine.readyTaskId);
|
|
99
|
+
this.tasks.set(WebWorkerEngine.readyTaskId, this.readyTask);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Generate a unique message id
|
|
103
|
+
* @returns message id
|
|
104
|
+
*
|
|
105
|
+
* @private
|
|
106
|
+
*/
|
|
107
|
+
generateRequestId(id) {
|
|
108
|
+
return `${id}.${Date.now()}.${Math.random()}`;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.initialize}
|
|
112
|
+
*
|
|
113
|
+
* @public
|
|
114
|
+
*/
|
|
115
|
+
initialize() {
|
|
116
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'initialize');
|
|
117
|
+
const requestId = this.generateRequestId('General');
|
|
118
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
119
|
+
const request = {
|
|
120
|
+
id: requestId,
|
|
121
|
+
type: 'ExecuteRequest',
|
|
122
|
+
data: {
|
|
123
|
+
name: 'initialize',
|
|
124
|
+
args: [],
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
this.proxy(task, request);
|
|
128
|
+
return task;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.destroy}
|
|
889
132
|
*
|
|
890
|
-
* @
|
|
133
|
+
* @public
|
|
891
134
|
*/
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
const
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
message: "engine has not started yet"
|
|
900
|
-
}
|
|
135
|
+
destroy() {
|
|
136
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'destroy');
|
|
137
|
+
const requestId = this.generateRequestId('General');
|
|
138
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
139
|
+
const finish = () => {
|
|
140
|
+
this.worker.removeEventListener('message', this.handle);
|
|
141
|
+
this.worker.terminate();
|
|
901
142
|
};
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
143
|
+
task.wait(finish, finish);
|
|
144
|
+
const request = {
|
|
145
|
+
id: requestId,
|
|
146
|
+
type: 'ExecuteRequest',
|
|
147
|
+
data: {
|
|
148
|
+
name: 'destroy',
|
|
149
|
+
args: [],
|
|
150
|
+
},
|
|
909
151
|
};
|
|
910
|
-
this.
|
|
911
|
-
return;
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
152
|
+
this.proxy(task, request);
|
|
153
|
+
return task;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.openDocumentUrl}
|
|
157
|
+
*
|
|
158
|
+
* @public
|
|
159
|
+
*/
|
|
160
|
+
openDocumentUrl(file, options) {
|
|
161
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'openDocumentUrl', file.url, options);
|
|
162
|
+
const requestId = this.generateRequestId(file.id);
|
|
163
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
164
|
+
const request = {
|
|
165
|
+
id: requestId,
|
|
166
|
+
type: 'ExecuteRequest',
|
|
167
|
+
data: {
|
|
168
|
+
name: 'openDocumentUrl',
|
|
169
|
+
args: [file, options],
|
|
170
|
+
},
|
|
922
171
|
};
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
172
|
+
this.proxy(task, request);
|
|
173
|
+
return task;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.openDocument}
|
|
177
|
+
*
|
|
178
|
+
* @public
|
|
179
|
+
*/
|
|
180
|
+
openDocumentFromBuffer(file, password) {
|
|
181
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'openDocumentFromBuffer', file, password);
|
|
182
|
+
const requestId = this.generateRequestId(file.id);
|
|
183
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
184
|
+
const request = {
|
|
185
|
+
id: requestId,
|
|
186
|
+
type: 'ExecuteRequest',
|
|
187
|
+
data: {
|
|
188
|
+
name: 'openDocumentFromBuffer',
|
|
189
|
+
args: [file, password],
|
|
190
|
+
},
|
|
930
191
|
};
|
|
931
|
-
this.
|
|
932
|
-
return;
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
task = this.engine[name](...args);
|
|
947
|
-
break;
|
|
948
|
-
case "openDocumentFromBuffer":
|
|
949
|
-
task = this.engine[name](...args);
|
|
950
|
-
break;
|
|
951
|
-
case "openDocumentFromLoader":
|
|
952
|
-
task = this.engine[name](...args);
|
|
953
|
-
break;
|
|
954
|
-
case "getDocPermissions":
|
|
955
|
-
task = this.engine[name](...args);
|
|
956
|
-
break;
|
|
957
|
-
case "getDocUserPermissions":
|
|
958
|
-
task = this.engine[name](...args);
|
|
959
|
-
break;
|
|
960
|
-
case "getMetadata":
|
|
961
|
-
task = this.engine[name](...args);
|
|
962
|
-
break;
|
|
963
|
-
case "getBookmarks":
|
|
964
|
-
task = this.engine[name](...args);
|
|
965
|
-
break;
|
|
966
|
-
case "getSignatures":
|
|
967
|
-
task = this.engine[name](...args);
|
|
968
|
-
break;
|
|
969
|
-
case "renderPage":
|
|
970
|
-
task = this.engine[name](...args);
|
|
971
|
-
break;
|
|
972
|
-
case "renderPageRect":
|
|
973
|
-
task = this.engine[name](...args);
|
|
974
|
-
break;
|
|
975
|
-
case "renderThumbnail":
|
|
976
|
-
task = this.engine[name](...args);
|
|
977
|
-
break;
|
|
978
|
-
case "getAllAnnotations":
|
|
979
|
-
task = this.engine[name](...args);
|
|
980
|
-
break;
|
|
981
|
-
case "getPageAnnotations":
|
|
982
|
-
task = this.engine[name](...args);
|
|
983
|
-
break;
|
|
984
|
-
case "createPageAnnotation":
|
|
985
|
-
task = this.engine[name](...args);
|
|
986
|
-
break;
|
|
987
|
-
case "transformPageAnnotation":
|
|
988
|
-
task = this.engine[name](...args);
|
|
989
|
-
break;
|
|
990
|
-
case "removePageAnnotation":
|
|
991
|
-
task = this.engine[name](...args);
|
|
992
|
-
break;
|
|
993
|
-
case "getPageTextRects":
|
|
994
|
-
task = this.engine[name](...args);
|
|
995
|
-
break;
|
|
996
|
-
case "searchAllPages":
|
|
997
|
-
task = this.engine[name](...args);
|
|
998
|
-
break;
|
|
999
|
-
case "closeDocument":
|
|
1000
|
-
task = this.engine[name](...args);
|
|
1001
|
-
break;
|
|
1002
|
-
case "saveAsCopy":
|
|
1003
|
-
task = this.engine[name](...args);
|
|
1004
|
-
break;
|
|
1005
|
-
case "getAttachments":
|
|
1006
|
-
task = this.engine[name](...args);
|
|
1007
|
-
break;
|
|
1008
|
-
case "readAttachmentContent":
|
|
1009
|
-
task = this.engine[name](...args);
|
|
1010
|
-
break;
|
|
1011
|
-
case "setFormFieldValue":
|
|
1012
|
-
task = this.engine[name](...args);
|
|
1013
|
-
break;
|
|
1014
|
-
case "flattenPage":
|
|
1015
|
-
task = this.engine[name](...args);
|
|
1016
|
-
break;
|
|
1017
|
-
case "extractPages":
|
|
1018
|
-
task = this.engine[name](...args);
|
|
1019
|
-
break;
|
|
1020
|
-
case "extractText":
|
|
1021
|
-
task = this.engine[name](...args);
|
|
1022
|
-
break;
|
|
1023
|
-
case "getPageGlyphs":
|
|
1024
|
-
task = this.engine[name](...args);
|
|
1025
|
-
break;
|
|
1026
|
-
case "getPageGeometry":
|
|
1027
|
-
task = this.engine[name](...args);
|
|
1028
|
-
break;
|
|
1029
|
-
case "merge":
|
|
1030
|
-
task = this.engine[name](...args);
|
|
1031
|
-
break;
|
|
1032
|
-
case "mergePages":
|
|
1033
|
-
task = this.engine[name](...args);
|
|
1034
|
-
break;
|
|
1035
|
-
}
|
|
1036
|
-
task.wait(
|
|
1037
|
-
(result) => {
|
|
1038
|
-
const response = {
|
|
1039
|
-
id: request.id,
|
|
1040
|
-
type: "ExecuteResponse",
|
|
192
|
+
this.proxy(task, request);
|
|
193
|
+
return task;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.openDocumentFromLoader}
|
|
197
|
+
*
|
|
198
|
+
* @public
|
|
199
|
+
*/
|
|
200
|
+
openDocumentFromLoader(file, password) {
|
|
201
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'openDocumentFromLoader', file, password);
|
|
202
|
+
const requestId = this.generateRequestId(file.id);
|
|
203
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
204
|
+
const request = {
|
|
205
|
+
id: requestId,
|
|
206
|
+
type: 'ExecuteRequest',
|
|
1041
207
|
data: {
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
}
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
208
|
+
name: 'openDocumentFromLoader',
|
|
209
|
+
args: [file, password],
|
|
210
|
+
},
|
|
211
|
+
};
|
|
212
|
+
this.proxy(task, request);
|
|
213
|
+
return task;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.getMetadata}
|
|
217
|
+
*
|
|
218
|
+
* @public
|
|
219
|
+
*/
|
|
220
|
+
getMetadata(doc) {
|
|
221
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getMetadata', doc);
|
|
222
|
+
const requestId = this.generateRequestId(doc.id);
|
|
223
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
224
|
+
const request = {
|
|
225
|
+
id: requestId,
|
|
226
|
+
type: 'ExecuteRequest',
|
|
1052
227
|
data: {
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
}
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
);
|
|
1060
|
-
};
|
|
1061
|
-
}
|
|
1062
|
-
/**
|
|
1063
|
-
* Listening on post message
|
|
1064
|
-
*/
|
|
1065
|
-
listen() {
|
|
1066
|
-
self.onmessage = (evt) => {
|
|
1067
|
-
return this.handle(evt);
|
|
1068
|
-
};
|
|
1069
|
-
}
|
|
1070
|
-
/**
|
|
1071
|
-
* Handle post message
|
|
1072
|
-
*/
|
|
1073
|
-
handle(evt) {
|
|
1074
|
-
this.logger.debug(LOG_SOURCE2, LOG_CATEGORY2, "webworker receive message event: ", evt.data);
|
|
1075
|
-
try {
|
|
1076
|
-
const request = evt.data;
|
|
1077
|
-
switch (request.type) {
|
|
1078
|
-
case "ExecuteRequest":
|
|
1079
|
-
this.execute(request);
|
|
1080
|
-
break;
|
|
1081
|
-
}
|
|
1082
|
-
} catch (e) {
|
|
1083
|
-
this.logger.info(
|
|
1084
|
-
LOG_SOURCE2,
|
|
1085
|
-
LOG_CATEGORY2,
|
|
1086
|
-
"webworker met error when processing message event:",
|
|
1087
|
-
e
|
|
1088
|
-
);
|
|
228
|
+
name: 'getMetadata',
|
|
229
|
+
args: [doc],
|
|
230
|
+
},
|
|
231
|
+
};
|
|
232
|
+
this.proxy(task, request);
|
|
233
|
+
return task;
|
|
1089
234
|
}
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
235
|
+
/**
|
|
236
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.getDocPermissions}
|
|
237
|
+
*
|
|
238
|
+
* @public
|
|
239
|
+
*/
|
|
240
|
+
getDocPermissions(doc) {
|
|
241
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getDocPermissions', doc);
|
|
242
|
+
const requestId = this.generateRequestId(doc.id);
|
|
243
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
244
|
+
const request = {
|
|
245
|
+
id: requestId,
|
|
246
|
+
type: 'ExecuteRequest',
|
|
247
|
+
data: {
|
|
248
|
+
name: 'getDocPermissions',
|
|
249
|
+
args: [doc],
|
|
250
|
+
},
|
|
251
|
+
};
|
|
252
|
+
this.proxy(task, request);
|
|
253
|
+
return task;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.getDocUserPermissions}
|
|
257
|
+
*
|
|
258
|
+
* @public
|
|
259
|
+
*/
|
|
260
|
+
getDocUserPermissions(doc) {
|
|
261
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getDocUserPermissions', doc);
|
|
262
|
+
const requestId = this.generateRequestId(doc.id);
|
|
263
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
264
|
+
const request = {
|
|
265
|
+
id: requestId,
|
|
266
|
+
type: 'ExecuteRequest',
|
|
267
|
+
data: {
|
|
268
|
+
name: 'getDocUserPermissions',
|
|
269
|
+
args: [doc],
|
|
270
|
+
},
|
|
271
|
+
};
|
|
272
|
+
this.proxy(task, request);
|
|
273
|
+
return task;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.getBookmarks}
|
|
277
|
+
*
|
|
278
|
+
* @public
|
|
279
|
+
*/
|
|
280
|
+
getBookmarks(doc) {
|
|
281
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getBookmarks', doc);
|
|
282
|
+
const requestId = this.generateRequestId(doc.id);
|
|
283
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
284
|
+
const request = {
|
|
285
|
+
id: requestId,
|
|
286
|
+
type: 'ExecuteRequest',
|
|
287
|
+
data: {
|
|
288
|
+
name: 'getBookmarks',
|
|
289
|
+
args: [doc],
|
|
290
|
+
},
|
|
291
|
+
};
|
|
292
|
+
this.proxy(task, request);
|
|
293
|
+
return task;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.getSignatures}
|
|
297
|
+
*
|
|
298
|
+
* @public
|
|
299
|
+
*/
|
|
300
|
+
getSignatures(doc) {
|
|
301
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getSignatures', doc);
|
|
302
|
+
const requestId = this.generateRequestId(doc.id);
|
|
303
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
304
|
+
const request = {
|
|
305
|
+
id: requestId,
|
|
306
|
+
type: 'ExecuteRequest',
|
|
307
|
+
data: {
|
|
308
|
+
name: 'getSignatures',
|
|
309
|
+
args: [doc],
|
|
310
|
+
},
|
|
311
|
+
};
|
|
312
|
+
this.proxy(task, request);
|
|
313
|
+
return task;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.renderPage}
|
|
317
|
+
*
|
|
318
|
+
* @public
|
|
319
|
+
*/
|
|
320
|
+
renderPage(doc, page, scaleFactor, rotation, dpr, options) {
|
|
321
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderPage', doc, page, scaleFactor, rotation, dpr, options);
|
|
322
|
+
const requestId = this.generateRequestId(doc.id);
|
|
323
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
324
|
+
const request = {
|
|
325
|
+
id: requestId,
|
|
326
|
+
type: 'ExecuteRequest',
|
|
327
|
+
data: {
|
|
328
|
+
name: 'renderPage',
|
|
329
|
+
args: [doc, page, scaleFactor, rotation, dpr, options],
|
|
330
|
+
},
|
|
331
|
+
};
|
|
332
|
+
this.proxy(task, request);
|
|
333
|
+
return task;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.renderPageRect}
|
|
337
|
+
*
|
|
338
|
+
* @public
|
|
339
|
+
*/
|
|
340
|
+
renderPageRect(doc, page, scaleFactor, rotation, dpr, rect, options) {
|
|
341
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderPageRect', doc, page, scaleFactor, rotation, dpr, rect, options);
|
|
342
|
+
const requestId = this.generateRequestId(doc.id);
|
|
343
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
344
|
+
const request = {
|
|
345
|
+
id: requestId,
|
|
346
|
+
type: 'ExecuteRequest',
|
|
347
|
+
data: {
|
|
348
|
+
name: 'renderPageRect',
|
|
349
|
+
args: [doc, page, scaleFactor, rotation, dpr, rect, options],
|
|
350
|
+
},
|
|
351
|
+
};
|
|
352
|
+
this.proxy(task, request);
|
|
353
|
+
return task;
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.getAllAnnotations}
|
|
357
|
+
*
|
|
358
|
+
* @public
|
|
359
|
+
*/
|
|
360
|
+
getAllAnnotations(doc) {
|
|
361
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getAllAnnotations', doc);
|
|
362
|
+
const requestId = this.generateRequestId(doc.id);
|
|
363
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
364
|
+
const request = {
|
|
365
|
+
id: requestId,
|
|
366
|
+
type: 'ExecuteRequest',
|
|
367
|
+
data: {
|
|
368
|
+
name: 'getAllAnnotations',
|
|
369
|
+
args: [doc],
|
|
370
|
+
},
|
|
371
|
+
};
|
|
372
|
+
this.proxy(task, request);
|
|
373
|
+
return task;
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.getPageAnnotations}
|
|
377
|
+
*
|
|
378
|
+
* @public
|
|
379
|
+
*/
|
|
380
|
+
getPageAnnotations(doc, page) {
|
|
381
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageAnnotations', doc, page);
|
|
382
|
+
const requestId = this.generateRequestId(doc.id);
|
|
383
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
384
|
+
const request = {
|
|
385
|
+
id: requestId,
|
|
386
|
+
type: 'ExecuteRequest',
|
|
387
|
+
data: {
|
|
388
|
+
name: 'getPageAnnotations',
|
|
389
|
+
args: [doc, page],
|
|
390
|
+
},
|
|
391
|
+
};
|
|
392
|
+
this.proxy(task, request);
|
|
393
|
+
return task;
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.createPageAnnotation}
|
|
397
|
+
*
|
|
398
|
+
* @public
|
|
399
|
+
*/
|
|
400
|
+
createPageAnnotation(doc, page, annotation) {
|
|
401
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'createPageAnnotations', doc, page, annotation);
|
|
402
|
+
const requestId = this.generateRequestId(doc.id);
|
|
403
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
404
|
+
const request = {
|
|
405
|
+
id: requestId,
|
|
406
|
+
type: 'ExecuteRequest',
|
|
407
|
+
data: {
|
|
408
|
+
name: 'createPageAnnotation',
|
|
409
|
+
args: [doc, page, annotation],
|
|
410
|
+
},
|
|
411
|
+
};
|
|
412
|
+
this.proxy(task, request);
|
|
413
|
+
return task;
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.transformPageAnnotation}
|
|
417
|
+
*
|
|
418
|
+
* @public
|
|
419
|
+
*/
|
|
420
|
+
transformPageAnnotation(doc, page, annotation, transformation) {
|
|
421
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'transformPageAnnotation', doc, page, annotation, transformation);
|
|
422
|
+
const requestId = this.generateRequestId(doc.id);
|
|
423
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
424
|
+
const request = {
|
|
425
|
+
id: requestId,
|
|
426
|
+
type: 'ExecuteRequest',
|
|
427
|
+
data: {
|
|
428
|
+
name: 'transformPageAnnotation',
|
|
429
|
+
args: [doc, page, annotation, transformation],
|
|
430
|
+
},
|
|
431
|
+
};
|
|
432
|
+
this.proxy(task, request);
|
|
433
|
+
return task;
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.removePageAnnotation}
|
|
437
|
+
*
|
|
438
|
+
* @public
|
|
439
|
+
*/
|
|
440
|
+
removePageAnnotation(doc, page, annotation) {
|
|
441
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'removePageAnnotations', doc, page, annotation);
|
|
442
|
+
const requestId = this.generateRequestId(doc.id);
|
|
443
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
444
|
+
const request = {
|
|
445
|
+
id: requestId,
|
|
446
|
+
type: 'ExecuteRequest',
|
|
447
|
+
data: {
|
|
448
|
+
name: 'removePageAnnotation',
|
|
449
|
+
args: [doc, page, annotation],
|
|
450
|
+
},
|
|
451
|
+
};
|
|
452
|
+
this.proxy(task, request);
|
|
453
|
+
return task;
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.getPageTextRects}
|
|
457
|
+
*
|
|
458
|
+
* @public
|
|
459
|
+
*/
|
|
460
|
+
getPageTextRects(doc, page, scaleFactor, rotation) {
|
|
461
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageTextRects', doc, page, scaleFactor, rotation);
|
|
462
|
+
const requestId = this.generateRequestId(doc.id);
|
|
463
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
464
|
+
const request = {
|
|
465
|
+
id: requestId,
|
|
466
|
+
type: 'ExecuteRequest',
|
|
467
|
+
data: {
|
|
468
|
+
name: 'getPageTextRects',
|
|
469
|
+
args: [doc, page, scaleFactor, rotation],
|
|
470
|
+
},
|
|
471
|
+
};
|
|
472
|
+
this.proxy(task, request);
|
|
473
|
+
return task;
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.renderThumbnail}
|
|
477
|
+
*
|
|
478
|
+
* @public
|
|
479
|
+
*/
|
|
480
|
+
renderThumbnail(doc, page, scaleFactor, rotation, dpr) {
|
|
481
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderThumbnail', doc, page, scaleFactor, rotation, dpr);
|
|
482
|
+
const requestId = this.generateRequestId(doc.id);
|
|
483
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
484
|
+
const request = {
|
|
485
|
+
id: requestId,
|
|
486
|
+
type: 'ExecuteRequest',
|
|
487
|
+
data: {
|
|
488
|
+
name: 'renderThumbnail',
|
|
489
|
+
args: [doc, page, scaleFactor, rotation, dpr],
|
|
490
|
+
},
|
|
491
|
+
};
|
|
492
|
+
this.proxy(task, request);
|
|
493
|
+
return task;
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.searchAllPages}
|
|
497
|
+
*
|
|
498
|
+
* @public
|
|
499
|
+
*/
|
|
500
|
+
searchAllPages(doc, keyword, flags = []) {
|
|
501
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'searchAllPages 123', doc, keyword, flags);
|
|
502
|
+
const requestId = this.generateRequestId(doc.id);
|
|
503
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
504
|
+
const request = {
|
|
505
|
+
id: requestId,
|
|
506
|
+
type: 'ExecuteRequest',
|
|
507
|
+
data: {
|
|
508
|
+
name: 'searchAllPages',
|
|
509
|
+
args: [doc, keyword, flags],
|
|
510
|
+
},
|
|
511
|
+
};
|
|
512
|
+
this.proxy(task, request);
|
|
513
|
+
return task;
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.saveAsCopy}
|
|
517
|
+
*
|
|
518
|
+
* @public
|
|
519
|
+
*/
|
|
520
|
+
saveAsCopy(doc) {
|
|
521
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'saveAsCopy', doc);
|
|
522
|
+
const requestId = this.generateRequestId(doc.id);
|
|
523
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
524
|
+
const request = {
|
|
525
|
+
id: requestId,
|
|
526
|
+
type: 'ExecuteRequest',
|
|
527
|
+
data: {
|
|
528
|
+
name: 'saveAsCopy',
|
|
529
|
+
args: [doc],
|
|
530
|
+
},
|
|
531
|
+
};
|
|
532
|
+
this.proxy(task, request);
|
|
533
|
+
return task;
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.getAttachments}
|
|
537
|
+
*
|
|
538
|
+
* @public
|
|
539
|
+
*/
|
|
540
|
+
getAttachments(doc) {
|
|
541
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getAttachments', doc);
|
|
542
|
+
const requestId = this.generateRequestId(doc.id);
|
|
543
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
544
|
+
const request = {
|
|
545
|
+
id: requestId,
|
|
546
|
+
type: 'ExecuteRequest',
|
|
547
|
+
data: {
|
|
548
|
+
name: 'getAttachments',
|
|
549
|
+
args: [doc],
|
|
550
|
+
},
|
|
551
|
+
};
|
|
552
|
+
this.proxy(task, request);
|
|
553
|
+
return task;
|
|
554
|
+
}
|
|
555
|
+
/**
|
|
556
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.readAttachmentContent}
|
|
557
|
+
*
|
|
558
|
+
* @public
|
|
559
|
+
*/
|
|
560
|
+
readAttachmentContent(doc, attachment) {
|
|
561
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'readAttachmentContent', doc, attachment);
|
|
562
|
+
const requestId = this.generateRequestId(doc.id);
|
|
563
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
564
|
+
const request = {
|
|
565
|
+
id: requestId,
|
|
566
|
+
type: 'ExecuteRequest',
|
|
567
|
+
data: {
|
|
568
|
+
name: 'readAttachmentContent',
|
|
569
|
+
args: [doc, attachment],
|
|
570
|
+
},
|
|
571
|
+
};
|
|
572
|
+
this.proxy(task, request);
|
|
573
|
+
return task;
|
|
574
|
+
}
|
|
575
|
+
/**
|
|
576
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.setFormFieldValue}
|
|
577
|
+
*
|
|
578
|
+
* @public
|
|
579
|
+
*/
|
|
580
|
+
setFormFieldValue(doc, page, annotation, value) {
|
|
581
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'setFormFieldValue', doc, annotation, value);
|
|
582
|
+
const requestId = this.generateRequestId(doc.id);
|
|
583
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
584
|
+
const request = {
|
|
585
|
+
id: requestId,
|
|
586
|
+
type: 'ExecuteRequest',
|
|
587
|
+
data: {
|
|
588
|
+
name: 'setFormFieldValue',
|
|
589
|
+
args: [doc, page, annotation, value],
|
|
590
|
+
},
|
|
591
|
+
};
|
|
592
|
+
this.proxy(task, request);
|
|
593
|
+
return task;
|
|
594
|
+
}
|
|
595
|
+
/**
|
|
596
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.flattenPage}
|
|
597
|
+
*
|
|
598
|
+
* @public
|
|
599
|
+
*/
|
|
600
|
+
flattenPage(doc, page, flag) {
|
|
601
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'flattenPage', doc, page, flag);
|
|
602
|
+
const requestId = this.generateRequestId(doc.id);
|
|
603
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
604
|
+
const request = {
|
|
605
|
+
id: requestId,
|
|
606
|
+
type: 'ExecuteRequest',
|
|
607
|
+
data: {
|
|
608
|
+
name: 'flattenPage',
|
|
609
|
+
args: [doc, page, flag],
|
|
610
|
+
},
|
|
611
|
+
};
|
|
612
|
+
this.proxy(task, request);
|
|
613
|
+
return task;
|
|
614
|
+
}
|
|
615
|
+
/**
|
|
616
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.extractPages}
|
|
617
|
+
*
|
|
618
|
+
* @public
|
|
619
|
+
*/
|
|
620
|
+
extractPages(doc, pageIndexes) {
|
|
621
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'extractPages', doc);
|
|
622
|
+
const requestId = this.generateRequestId(doc.id);
|
|
623
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
624
|
+
const request = {
|
|
625
|
+
id: requestId,
|
|
626
|
+
type: 'ExecuteRequest',
|
|
627
|
+
data: {
|
|
628
|
+
name: 'extractPages',
|
|
629
|
+
args: [doc, pageIndexes],
|
|
630
|
+
},
|
|
631
|
+
};
|
|
632
|
+
this.proxy(task, request);
|
|
633
|
+
return task;
|
|
634
|
+
}
|
|
635
|
+
/**
|
|
636
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.extractText}
|
|
637
|
+
*
|
|
638
|
+
* @public
|
|
639
|
+
*/
|
|
640
|
+
extractText(doc, pageIndexes) {
|
|
641
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'extractText', doc);
|
|
642
|
+
const requestId = this.generateRequestId(doc.id);
|
|
643
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
644
|
+
const request = {
|
|
645
|
+
id: requestId,
|
|
646
|
+
type: 'ExecuteRequest',
|
|
647
|
+
data: {
|
|
648
|
+
name: 'extractText',
|
|
649
|
+
args: [doc, pageIndexes],
|
|
650
|
+
},
|
|
651
|
+
};
|
|
652
|
+
this.proxy(task, request);
|
|
653
|
+
return task;
|
|
654
|
+
}
|
|
655
|
+
/**
|
|
656
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.getPageGlyphs}
|
|
657
|
+
*
|
|
658
|
+
* @public
|
|
659
|
+
*/
|
|
660
|
+
getPageGlyphs(doc, page) {
|
|
661
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageGlyphs', doc, page);
|
|
662
|
+
const requestId = this.generateRequestId(doc.id);
|
|
663
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
664
|
+
const request = {
|
|
665
|
+
id: requestId,
|
|
666
|
+
type: 'ExecuteRequest',
|
|
667
|
+
data: {
|
|
668
|
+
name: 'getPageGlyphs',
|
|
669
|
+
args: [doc, page],
|
|
670
|
+
},
|
|
671
|
+
};
|
|
672
|
+
this.proxy(task, request);
|
|
673
|
+
return task;
|
|
674
|
+
}
|
|
675
|
+
/**
|
|
676
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.getPageGeometry}
|
|
677
|
+
*
|
|
678
|
+
* @public
|
|
679
|
+
*/
|
|
680
|
+
getPageGeometry(doc, page) {
|
|
681
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageGeometry', doc, page);
|
|
682
|
+
const requestId = this.generateRequestId(doc.id);
|
|
683
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
684
|
+
const request = {
|
|
685
|
+
id: requestId,
|
|
686
|
+
type: 'ExecuteRequest',
|
|
687
|
+
data: {
|
|
688
|
+
name: 'getPageGeometry',
|
|
689
|
+
args: [doc, page],
|
|
690
|
+
},
|
|
691
|
+
};
|
|
692
|
+
this.proxy(task, request);
|
|
693
|
+
return task;
|
|
694
|
+
}
|
|
695
|
+
/**
|
|
696
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.merge}
|
|
697
|
+
*
|
|
698
|
+
* @public
|
|
699
|
+
*/
|
|
700
|
+
merge(files) {
|
|
701
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'merge', files);
|
|
702
|
+
const fileIds = files.map((file) => file.id).join('.');
|
|
703
|
+
const requestId = this.generateRequestId(fileIds);
|
|
704
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
705
|
+
const request = {
|
|
706
|
+
id: requestId,
|
|
707
|
+
type: 'ExecuteRequest',
|
|
708
|
+
data: {
|
|
709
|
+
name: 'merge',
|
|
710
|
+
args: [files],
|
|
711
|
+
},
|
|
712
|
+
};
|
|
713
|
+
this.proxy(task, request);
|
|
714
|
+
return task;
|
|
715
|
+
}
|
|
716
|
+
/**
|
|
717
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.mergePages}
|
|
718
|
+
*
|
|
719
|
+
* @public
|
|
720
|
+
*/
|
|
721
|
+
mergePages(mergeConfigs) {
|
|
722
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'mergePages', mergeConfigs);
|
|
723
|
+
const requestId = this.generateRequestId(mergeConfigs.map((config) => config.docId).join('.'));
|
|
724
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
725
|
+
const request = {
|
|
726
|
+
id: requestId,
|
|
727
|
+
type: 'ExecuteRequest',
|
|
728
|
+
data: {
|
|
729
|
+
name: 'mergePages',
|
|
730
|
+
args: [mergeConfigs],
|
|
731
|
+
},
|
|
732
|
+
};
|
|
733
|
+
this.proxy(task, request);
|
|
734
|
+
return task;
|
|
735
|
+
}
|
|
736
|
+
/**
|
|
737
|
+
* {@inheritDoc @embedpdf/models!PdfEngine.closeDocument}
|
|
738
|
+
*
|
|
739
|
+
* @public
|
|
740
|
+
*/
|
|
741
|
+
closeDocument(doc) {
|
|
742
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'closeDocument', doc);
|
|
743
|
+
const requestId = this.generateRequestId(doc.id);
|
|
744
|
+
const task = new WorkerTask(this.worker, requestId);
|
|
745
|
+
const request = {
|
|
746
|
+
id: requestId,
|
|
747
|
+
type: 'ExecuteRequest',
|
|
748
|
+
data: {
|
|
749
|
+
name: 'closeDocument',
|
|
750
|
+
args: [doc],
|
|
751
|
+
},
|
|
752
|
+
};
|
|
753
|
+
this.proxy(task, request);
|
|
754
|
+
return task;
|
|
755
|
+
}
|
|
756
|
+
/**
|
|
757
|
+
* Send the request to webworker inside and register the task
|
|
758
|
+
* @param task - task that waiting for the response
|
|
759
|
+
* @param request - request that needs send to web worker
|
|
760
|
+
* @param transferables - transferables that need to transfer to webworker
|
|
761
|
+
* @returns
|
|
762
|
+
*
|
|
763
|
+
* @internal
|
|
764
|
+
*/
|
|
765
|
+
proxy(task, request, transferables = []) {
|
|
766
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'send request to worker', task, request, transferables);
|
|
767
|
+
this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'Begin', request.id);
|
|
768
|
+
this.readyTask.wait(() => {
|
|
769
|
+
this.worker.postMessage(request, transferables);
|
|
770
|
+
task.wait(() => {
|
|
771
|
+
this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);
|
|
772
|
+
}, () => {
|
|
773
|
+
this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);
|
|
774
|
+
});
|
|
775
|
+
this.tasks.set(request.id, task);
|
|
776
|
+
}, () => {
|
|
777
|
+
this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);
|
|
778
|
+
task.reject({
|
|
779
|
+
code: models.PdfErrorCode.Initialization,
|
|
780
|
+
message: 'worker initialization failed',
|
|
781
|
+
});
|
|
782
|
+
});
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
WebWorkerEngine.readyTaskId = '0';
|
|
786
|
+
|
|
787
|
+
exports.WebWorkerEngine = WebWorkerEngine;
|
|
788
|
+
exports.WorkerTask = WorkerTask;
|
|
789
|
+
//# sourceMappingURL=worker.cjs.map
|