@embedpdf/engines 1.0.2 → 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.
Files changed (49) hide show
  1. package/dist/converters.cjs +149 -115
  2. package/dist/converters.cjs.map +1 -1
  3. package/dist/converters.d.ts +2 -1
  4. package/dist/converters.js +143 -86
  5. package/dist/converters.js.map +1 -1
  6. package/dist/index.cjs +5362 -5994
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.d.ts +1479 -6
  9. package/dist/index.js +5399 -356
  10. package/dist/index.js.map +1 -1
  11. package/dist/pdfium-direct-engine.cjs +4037 -0
  12. package/dist/pdfium-direct-engine.cjs.map +1 -0
  13. package/dist/{pdfium.d.cts → pdfium-direct-engine.d.ts} +4 -96
  14. package/dist/pdfium-direct-engine.js +4035 -0
  15. package/dist/pdfium-direct-engine.js.map +1 -0
  16. package/dist/pdfium-worker-engine.cjs +800 -0
  17. package/dist/pdfium-worker-engine.cjs.map +1 -0
  18. package/dist/{worker.d.cts → pdfium-worker-engine.d.ts} +36 -4
  19. package/dist/pdfium-worker-engine.js +798 -0
  20. package/dist/pdfium-worker-engine.js.map +1 -0
  21. package/dist/pdfium.cjs +4243 -5663
  22. package/dist/pdfium.cjs.map +1 -1
  23. package/dist/pdfium.d.ts +131 -3
  24. package/dist/pdfium.js +4288 -21
  25. package/dist/pdfium.js.map +1 -1
  26. package/dist/preact.cjs +39 -0
  27. package/dist/preact.cjs.map +1 -0
  28. package/dist/preact.d.ts +13 -0
  29. package/dist/preact.js +37 -0
  30. package/dist/preact.js.map +1 -0
  31. package/dist/react.cjs +39 -0
  32. package/dist/react.cjs.map +1 -0
  33. package/dist/react.d.ts +13 -0
  34. package/dist/react.js +37 -0
  35. package/dist/react.js.map +1 -0
  36. package/dist/worker.cjs +771 -1104
  37. package/dist/worker.cjs.map +1 -1
  38. package/dist/worker.d.ts +30 -4
  39. package/dist/worker.js +786 -11
  40. package/dist/worker.js.map +1 -1
  41. package/package.json +42 -8
  42. package/dist/chunk-NDTYBBMQ.js +0 -4615
  43. package/dist/chunk-NDTYBBMQ.js.map +0 -1
  44. package/dist/chunk-YZLT3A2D.js +0 -1101
  45. package/dist/chunk-YZLT3A2D.js.map +0 -1
  46. package/dist/converters.d.cts +0 -69
  47. package/dist/index.d.cts +0 -32
  48. package/dist/runner-BvRtPCKL.d.cts +0 -131
  49. package/dist/runner-BvRtPCKL.d.ts +0 -131
package/dist/worker.cjs CHANGED
@@ -1,1122 +1,789 @@
1
- "use strict";
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
- // src/webworker-engine.ts
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
- // src/webworker/engine.ts
30
- var import_models = require("@embedpdf/models");
31
- var LOG_SOURCE = "WebWorkerEngine";
32
- var LOG_CATEGORY = "Engine";
33
- var WorkerTask = class extends import_models.Task {
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
- * All the tasks that is executing
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
- this.tasks = /* @__PURE__ */ new Map();
18
+ constructor(worker, messageId) {
19
+ super();
20
+ this.worker = worker;
21
+ this.messageId = messageId;
22
+ }
77
23
  /**
78
- * Handle event from web worker. There are 2 kinds of event
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
- * @private
26
+ * @override
85
27
  */
86
- this.handle = (evt) => {
87
- this.logger.debug(
88
- LOG_SOURCE,
89
- LOG_CATEGORY,
90
- "webworker engine start handling message: ",
91
- evt.data
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
- _WebWorkerEngine.readyTaskId = "0";
872
- var WebWorkerEngine = _WebWorkerEngine;
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
- * Execute the request
887
- * @param request - request that represent the pdf engine call
888
- * @returns
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
- * @protected
133
+ * @public
891
134
  */
892
- this.execute = (request) => {
893
- this.logger.debug(LOG_SOURCE2, LOG_CATEGORY2, "runner start exeucte request");
894
- if (!this.engine) {
895
- const error = {
896
- type: "reject",
897
- reason: {
898
- code: import_models2.PdfErrorCode.NotReady,
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
- const response = {
903
- id: request.id,
904
- type: "ExecuteResponse",
905
- data: {
906
- type: "error",
907
- value: error
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.respond(response);
911
- return;
912
- }
913
- const engine = this.engine;
914
- const { name, args } = request.data;
915
- if (!engine[name]) {
916
- const error = {
917
- type: "reject",
918
- reason: {
919
- code: import_models2.PdfErrorCode.NotSupport,
920
- message: "engine method has not supported yet"
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
- const response = {
924
- id: request.id,
925
- type: "ExecuteResponse",
926
- data: {
927
- type: "error",
928
- value: error
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.respond(response);
932
- return;
933
- }
934
- let task;
935
- switch (name) {
936
- case "isSupport":
937
- task = this.engine[name](...args);
938
- break;
939
- case "initialize":
940
- task = this.engine[name](...args);
941
- break;
942
- case "destroy":
943
- task = this.engine[name](...args);
944
- break;
945
- case "openDocumentUrl":
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
- type: "result",
1043
- value: result
1044
- }
1045
- };
1046
- this.respond(response);
1047
- },
1048
- (error) => {
1049
- const response = {
1050
- id: request.id,
1051
- type: "ExecuteResponse",
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
- type: "error",
1054
- value: error
1055
- }
1056
- };
1057
- this.respond(response);
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
- * Send the ready response when pdf engine is ready
1093
- * @returns
1094
- *
1095
- * @protected
1096
- */
1097
- ready() {
1098
- this.listen();
1099
- this.respond({
1100
- id: "0",
1101
- type: "ReadyResponse"
1102
- });
1103
- this.logger.debug(LOG_SOURCE2, LOG_CATEGORY2, "runner is ready");
1104
- }
1105
- /**
1106
- * Send back the response
1107
- * @param response - response that needs sent back
1108
- *
1109
- * @protected
1110
- */
1111
- respond(response) {
1112
- this.logger.debug(LOG_SOURCE2, LOG_CATEGORY2, "runner respond: ", response);
1113
- self.postMessage(response);
1114
- }
1115
- };
1116
- // Annotate the CommonJS export names for ESM import in node:
1117
- 0 && (module.exports = {
1118
- EngineRunner,
1119
- WebWorkerEngine,
1120
- WorkerTask
1121
- });
1122
- //# sourceMappingURL=worker.cjs.map
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