@embedpdf/engines 1.0.3 → 1.0.5

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 +130 -115
  2. package/dist/converters.cjs.map +1 -1
  3. package/dist/converters.d.ts +7 -12
  4. package/dist/converters.js +125 -86
  5. package/dist/converters.js.map +1 -1
  6. package/dist/index.cjs +5362 -5978
  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} +7 -99
  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} +38 -6
  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 -5647
  22. package/dist/pdfium.cjs.map +1 -1
  23. package/dist/pdfium.d.ts +134 -6
  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 +32 -6
  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-FXQUMVH5.js +0 -4599
  43. package/dist/chunk-FXQUMVH5.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.js CHANGED
@@ -1,11 +1,786 @@
1
- import {
2
- EngineRunner,
3
- WebWorkerEngine,
4
- WorkerTask
5
- } from "./chunk-YZLT3A2D.js";
6
- export {
7
- EngineRunner,
8
- WebWorkerEngine,
9
- WorkerTask
10
- };
11
- //# sourceMappingURL=worker.js.map
1
+ import { Task, NoopLogger, PdfErrorCode } from '@embedpdf/models';
2
+
3
+ const LOG_SOURCE = 'WebWorkerEngine';
4
+ const LOG_CATEGORY = 'Engine';
5
+ /**
6
+ * Task that executed by webworker
7
+ */
8
+ class WorkerTask extends Task {
9
+ /**
10
+ * Create a task that bind to web worker with specified message id
11
+ * @param worker - web worker instance
12
+ * @param messageId - id of message
13
+ *
14
+ * @public
15
+ */
16
+ constructor(worker, messageId) {
17
+ super();
18
+ this.worker = worker;
19
+ this.messageId = messageId;
20
+ }
21
+ /**
22
+ * {@inheritDoc @embedpdf/models!Task.abort}
23
+ *
24
+ * @override
25
+ */
26
+ abort(e) {
27
+ super.abort(e);
28
+ this.worker.postMessage({
29
+ type: 'AbortRequest',
30
+ data: {
31
+ messageId: this.messageId,
32
+ },
33
+ });
34
+ }
35
+ }
36
+ /**
37
+ * PDF engine that runs within webworker
38
+ */
39
+ class WebWorkerEngine {
40
+ /**
41
+ * Create an instance of WebWorkerEngine, it will create a worker with
42
+ * specified url.
43
+ * @param worker - webworker instance, this worker needs to contains the running instance of {@link EngineRunner}
44
+ * @param logger - logger instance
45
+ *
46
+ * @public
47
+ */
48
+ constructor(worker, logger = new NoopLogger()) {
49
+ this.worker = worker;
50
+ this.logger = logger;
51
+ /**
52
+ * All the tasks that is executing
53
+ */
54
+ this.tasks = new Map();
55
+ /**
56
+ * Handle event from web worker. There are 2 kinds of event
57
+ * 1. ReadyResponse: web worker is ready
58
+ * 2. ExecuteResponse: result of execution
59
+ * @param evt - message event from web worker
60
+ * @returns
61
+ *
62
+ * @private
63
+ */
64
+ this.handle = (evt) => {
65
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'webworker engine start handling message: ', evt.data);
66
+ try {
67
+ const response = evt.data;
68
+ const task = this.tasks.get(response.id);
69
+ if (!task) {
70
+ return;
71
+ }
72
+ switch (response.type) {
73
+ case 'ReadyResponse':
74
+ this.readyTask.resolve(true);
75
+ break;
76
+ case 'ExecuteResponse':
77
+ {
78
+ switch (response.data.type) {
79
+ case 'result':
80
+ task.resolve(response.data.value);
81
+ break;
82
+ case 'error':
83
+ task.reject(response.data.value.reason);
84
+ break;
85
+ }
86
+ this.tasks.delete(response.id);
87
+ }
88
+ break;
89
+ }
90
+ }
91
+ catch (e) {
92
+ this.logger.error(LOG_SOURCE, LOG_CATEGORY, 'webworker met error when handling message: ', e);
93
+ }
94
+ };
95
+ this.worker.addEventListener('message', this.handle);
96
+ this.readyTask = new WorkerTask(this.worker, WebWorkerEngine.readyTaskId);
97
+ this.tasks.set(WebWorkerEngine.readyTaskId, this.readyTask);
98
+ }
99
+ /**
100
+ * Generate a unique message id
101
+ * @returns message id
102
+ *
103
+ * @private
104
+ */
105
+ generateRequestId(id) {
106
+ return `${id}.${Date.now()}.${Math.random()}`;
107
+ }
108
+ /**
109
+ * {@inheritDoc @embedpdf/models!PdfEngine.initialize}
110
+ *
111
+ * @public
112
+ */
113
+ initialize() {
114
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'initialize');
115
+ const requestId = this.generateRequestId('General');
116
+ const task = new WorkerTask(this.worker, requestId);
117
+ const request = {
118
+ id: requestId,
119
+ type: 'ExecuteRequest',
120
+ data: {
121
+ name: 'initialize',
122
+ args: [],
123
+ },
124
+ };
125
+ this.proxy(task, request);
126
+ return task;
127
+ }
128
+ /**
129
+ * {@inheritDoc @embedpdf/models!PdfEngine.destroy}
130
+ *
131
+ * @public
132
+ */
133
+ destroy() {
134
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'destroy');
135
+ const requestId = this.generateRequestId('General');
136
+ const task = new WorkerTask(this.worker, requestId);
137
+ const finish = () => {
138
+ this.worker.removeEventListener('message', this.handle);
139
+ this.worker.terminate();
140
+ };
141
+ task.wait(finish, finish);
142
+ const request = {
143
+ id: requestId,
144
+ type: 'ExecuteRequest',
145
+ data: {
146
+ name: 'destroy',
147
+ args: [],
148
+ },
149
+ };
150
+ this.proxy(task, request);
151
+ return task;
152
+ }
153
+ /**
154
+ * {@inheritDoc @embedpdf/models!PdfEngine.openDocumentUrl}
155
+ *
156
+ * @public
157
+ */
158
+ openDocumentUrl(file, options) {
159
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'openDocumentUrl', file.url, options);
160
+ const requestId = this.generateRequestId(file.id);
161
+ const task = new WorkerTask(this.worker, requestId);
162
+ const request = {
163
+ id: requestId,
164
+ type: 'ExecuteRequest',
165
+ data: {
166
+ name: 'openDocumentUrl',
167
+ args: [file, options],
168
+ },
169
+ };
170
+ this.proxy(task, request);
171
+ return task;
172
+ }
173
+ /**
174
+ * {@inheritDoc @embedpdf/models!PdfEngine.openDocument}
175
+ *
176
+ * @public
177
+ */
178
+ openDocumentFromBuffer(file, password) {
179
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'openDocumentFromBuffer', file, password);
180
+ const requestId = this.generateRequestId(file.id);
181
+ const task = new WorkerTask(this.worker, requestId);
182
+ const request = {
183
+ id: requestId,
184
+ type: 'ExecuteRequest',
185
+ data: {
186
+ name: 'openDocumentFromBuffer',
187
+ args: [file, password],
188
+ },
189
+ };
190
+ this.proxy(task, request);
191
+ return task;
192
+ }
193
+ /**
194
+ * {@inheritDoc @embedpdf/models!PdfEngine.openDocumentFromLoader}
195
+ *
196
+ * @public
197
+ */
198
+ openDocumentFromLoader(file, password) {
199
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'openDocumentFromLoader', file, password);
200
+ const requestId = this.generateRequestId(file.id);
201
+ const task = new WorkerTask(this.worker, requestId);
202
+ const request = {
203
+ id: requestId,
204
+ type: 'ExecuteRequest',
205
+ data: {
206
+ name: 'openDocumentFromLoader',
207
+ args: [file, password],
208
+ },
209
+ };
210
+ this.proxy(task, request);
211
+ return task;
212
+ }
213
+ /**
214
+ * {@inheritDoc @embedpdf/models!PdfEngine.getMetadata}
215
+ *
216
+ * @public
217
+ */
218
+ getMetadata(doc) {
219
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getMetadata', doc);
220
+ const requestId = this.generateRequestId(doc.id);
221
+ const task = new WorkerTask(this.worker, requestId);
222
+ const request = {
223
+ id: requestId,
224
+ type: 'ExecuteRequest',
225
+ data: {
226
+ name: 'getMetadata',
227
+ args: [doc],
228
+ },
229
+ };
230
+ this.proxy(task, request);
231
+ return task;
232
+ }
233
+ /**
234
+ * {@inheritDoc @embedpdf/models!PdfEngine.getDocPermissions}
235
+ *
236
+ * @public
237
+ */
238
+ getDocPermissions(doc) {
239
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getDocPermissions', doc);
240
+ const requestId = this.generateRequestId(doc.id);
241
+ const task = new WorkerTask(this.worker, requestId);
242
+ const request = {
243
+ id: requestId,
244
+ type: 'ExecuteRequest',
245
+ data: {
246
+ name: 'getDocPermissions',
247
+ args: [doc],
248
+ },
249
+ };
250
+ this.proxy(task, request);
251
+ return task;
252
+ }
253
+ /**
254
+ * {@inheritDoc @embedpdf/models!PdfEngine.getDocUserPermissions}
255
+ *
256
+ * @public
257
+ */
258
+ getDocUserPermissions(doc) {
259
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getDocUserPermissions', doc);
260
+ const requestId = this.generateRequestId(doc.id);
261
+ const task = new WorkerTask(this.worker, requestId);
262
+ const request = {
263
+ id: requestId,
264
+ type: 'ExecuteRequest',
265
+ data: {
266
+ name: 'getDocUserPermissions',
267
+ args: [doc],
268
+ },
269
+ };
270
+ this.proxy(task, request);
271
+ return task;
272
+ }
273
+ /**
274
+ * {@inheritDoc @embedpdf/models!PdfEngine.getBookmarks}
275
+ *
276
+ * @public
277
+ */
278
+ getBookmarks(doc) {
279
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getBookmarks', doc);
280
+ const requestId = this.generateRequestId(doc.id);
281
+ const task = new WorkerTask(this.worker, requestId);
282
+ const request = {
283
+ id: requestId,
284
+ type: 'ExecuteRequest',
285
+ data: {
286
+ name: 'getBookmarks',
287
+ args: [doc],
288
+ },
289
+ };
290
+ this.proxy(task, request);
291
+ return task;
292
+ }
293
+ /**
294
+ * {@inheritDoc @embedpdf/models!PdfEngine.getSignatures}
295
+ *
296
+ * @public
297
+ */
298
+ getSignatures(doc) {
299
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getSignatures', doc);
300
+ const requestId = this.generateRequestId(doc.id);
301
+ const task = new WorkerTask(this.worker, requestId);
302
+ const request = {
303
+ id: requestId,
304
+ type: 'ExecuteRequest',
305
+ data: {
306
+ name: 'getSignatures',
307
+ args: [doc],
308
+ },
309
+ };
310
+ this.proxy(task, request);
311
+ return task;
312
+ }
313
+ /**
314
+ * {@inheritDoc @embedpdf/models!PdfEngine.renderPage}
315
+ *
316
+ * @public
317
+ */
318
+ renderPage(doc, page, scaleFactor, rotation, dpr, options, imageType = 'image/webp') {
319
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderPage', doc, page, scaleFactor, rotation, dpr, options);
320
+ const requestId = this.generateRequestId(doc.id);
321
+ const task = new WorkerTask(this.worker, requestId);
322
+ const request = {
323
+ id: requestId,
324
+ type: 'ExecuteRequest',
325
+ data: {
326
+ name: 'renderPage',
327
+ args: [doc, page, scaleFactor, rotation, dpr, options, imageType],
328
+ },
329
+ };
330
+ this.proxy(task, request);
331
+ return task;
332
+ }
333
+ /**
334
+ * {@inheritDoc @embedpdf/models!PdfEngine.renderPageRect}
335
+ *
336
+ * @public
337
+ */
338
+ renderPageRect(doc, page, scaleFactor, rotation, dpr, rect, options, imageType = 'image/webp') {
339
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderPageRect', doc, page, scaleFactor, rotation, dpr, rect, options);
340
+ const requestId = this.generateRequestId(doc.id);
341
+ const task = new WorkerTask(this.worker, requestId);
342
+ const request = {
343
+ id: requestId,
344
+ type: 'ExecuteRequest',
345
+ data: {
346
+ name: 'renderPageRect',
347
+ args: [doc, page, scaleFactor, rotation, dpr, rect, options, imageType],
348
+ },
349
+ };
350
+ this.proxy(task, request);
351
+ return task;
352
+ }
353
+ /**
354
+ * {@inheritDoc @embedpdf/models!PdfEngine.getAllAnnotations}
355
+ *
356
+ * @public
357
+ */
358
+ getAllAnnotations(doc) {
359
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getAllAnnotations', doc);
360
+ const requestId = this.generateRequestId(doc.id);
361
+ const task = new WorkerTask(this.worker, requestId);
362
+ const request = {
363
+ id: requestId,
364
+ type: 'ExecuteRequest',
365
+ data: {
366
+ name: 'getAllAnnotations',
367
+ args: [doc],
368
+ },
369
+ };
370
+ this.proxy(task, request);
371
+ return task;
372
+ }
373
+ /**
374
+ * {@inheritDoc @embedpdf/models!PdfEngine.getPageAnnotations}
375
+ *
376
+ * @public
377
+ */
378
+ getPageAnnotations(doc, page) {
379
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageAnnotations', doc, page);
380
+ const requestId = this.generateRequestId(doc.id);
381
+ const task = new WorkerTask(this.worker, requestId);
382
+ const request = {
383
+ id: requestId,
384
+ type: 'ExecuteRequest',
385
+ data: {
386
+ name: 'getPageAnnotations',
387
+ args: [doc, page],
388
+ },
389
+ };
390
+ this.proxy(task, request);
391
+ return task;
392
+ }
393
+ /**
394
+ * {@inheritDoc @embedpdf/models!PdfEngine.createPageAnnotation}
395
+ *
396
+ * @public
397
+ */
398
+ createPageAnnotation(doc, page, annotation) {
399
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'createPageAnnotations', doc, page, annotation);
400
+ const requestId = this.generateRequestId(doc.id);
401
+ const task = new WorkerTask(this.worker, requestId);
402
+ const request = {
403
+ id: requestId,
404
+ type: 'ExecuteRequest',
405
+ data: {
406
+ name: 'createPageAnnotation',
407
+ args: [doc, page, annotation],
408
+ },
409
+ };
410
+ this.proxy(task, request);
411
+ return task;
412
+ }
413
+ /**
414
+ * {@inheritDoc @embedpdf/models!PdfEngine.transformPageAnnotation}
415
+ *
416
+ * @public
417
+ */
418
+ transformPageAnnotation(doc, page, annotation, transformation) {
419
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'transformPageAnnotation', doc, page, annotation, transformation);
420
+ const requestId = this.generateRequestId(doc.id);
421
+ const task = new WorkerTask(this.worker, requestId);
422
+ const request = {
423
+ id: requestId,
424
+ type: 'ExecuteRequest',
425
+ data: {
426
+ name: 'transformPageAnnotation',
427
+ args: [doc, page, annotation, transformation],
428
+ },
429
+ };
430
+ this.proxy(task, request);
431
+ return task;
432
+ }
433
+ /**
434
+ * {@inheritDoc @embedpdf/models!PdfEngine.removePageAnnotation}
435
+ *
436
+ * @public
437
+ */
438
+ removePageAnnotation(doc, page, annotation) {
439
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'removePageAnnotations', doc, page, annotation);
440
+ const requestId = this.generateRequestId(doc.id);
441
+ const task = new WorkerTask(this.worker, requestId);
442
+ const request = {
443
+ id: requestId,
444
+ type: 'ExecuteRequest',
445
+ data: {
446
+ name: 'removePageAnnotation',
447
+ args: [doc, page, annotation],
448
+ },
449
+ };
450
+ this.proxy(task, request);
451
+ return task;
452
+ }
453
+ /**
454
+ * {@inheritDoc @embedpdf/models!PdfEngine.getPageTextRects}
455
+ *
456
+ * @public
457
+ */
458
+ getPageTextRects(doc, page, scaleFactor, rotation) {
459
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageTextRects', doc, page, scaleFactor, rotation);
460
+ const requestId = this.generateRequestId(doc.id);
461
+ const task = new WorkerTask(this.worker, requestId);
462
+ const request = {
463
+ id: requestId,
464
+ type: 'ExecuteRequest',
465
+ data: {
466
+ name: 'getPageTextRects',
467
+ args: [doc, page, scaleFactor, rotation],
468
+ },
469
+ };
470
+ this.proxy(task, request);
471
+ return task;
472
+ }
473
+ /**
474
+ * {@inheritDoc @embedpdf/models!PdfEngine.renderThumbnail}
475
+ *
476
+ * @public
477
+ */
478
+ renderThumbnail(doc, page, scaleFactor, rotation, dpr) {
479
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderThumbnail', doc, page, scaleFactor, rotation, dpr);
480
+ const requestId = this.generateRequestId(doc.id);
481
+ const task = new WorkerTask(this.worker, requestId);
482
+ const request = {
483
+ id: requestId,
484
+ type: 'ExecuteRequest',
485
+ data: {
486
+ name: 'renderThumbnail',
487
+ args: [doc, page, scaleFactor, rotation, dpr],
488
+ },
489
+ };
490
+ this.proxy(task, request);
491
+ return task;
492
+ }
493
+ /**
494
+ * {@inheritDoc @embedpdf/models!PdfEngine.searchAllPages}
495
+ *
496
+ * @public
497
+ */
498
+ searchAllPages(doc, keyword, flags = []) {
499
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'searchAllPages 123', doc, keyword, flags);
500
+ const requestId = this.generateRequestId(doc.id);
501
+ const task = new WorkerTask(this.worker, requestId);
502
+ const request = {
503
+ id: requestId,
504
+ type: 'ExecuteRequest',
505
+ data: {
506
+ name: 'searchAllPages',
507
+ args: [doc, keyword, flags],
508
+ },
509
+ };
510
+ this.proxy(task, request);
511
+ return task;
512
+ }
513
+ /**
514
+ * {@inheritDoc @embedpdf/models!PdfEngine.saveAsCopy}
515
+ *
516
+ * @public
517
+ */
518
+ saveAsCopy(doc) {
519
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'saveAsCopy', doc);
520
+ const requestId = this.generateRequestId(doc.id);
521
+ const task = new WorkerTask(this.worker, requestId);
522
+ const request = {
523
+ id: requestId,
524
+ type: 'ExecuteRequest',
525
+ data: {
526
+ name: 'saveAsCopy',
527
+ args: [doc],
528
+ },
529
+ };
530
+ this.proxy(task, request);
531
+ return task;
532
+ }
533
+ /**
534
+ * {@inheritDoc @embedpdf/models!PdfEngine.getAttachments}
535
+ *
536
+ * @public
537
+ */
538
+ getAttachments(doc) {
539
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getAttachments', doc);
540
+ const requestId = this.generateRequestId(doc.id);
541
+ const task = new WorkerTask(this.worker, requestId);
542
+ const request = {
543
+ id: requestId,
544
+ type: 'ExecuteRequest',
545
+ data: {
546
+ name: 'getAttachments',
547
+ args: [doc],
548
+ },
549
+ };
550
+ this.proxy(task, request);
551
+ return task;
552
+ }
553
+ /**
554
+ * {@inheritDoc @embedpdf/models!PdfEngine.readAttachmentContent}
555
+ *
556
+ * @public
557
+ */
558
+ readAttachmentContent(doc, attachment) {
559
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'readAttachmentContent', doc, attachment);
560
+ const requestId = this.generateRequestId(doc.id);
561
+ const task = new WorkerTask(this.worker, requestId);
562
+ const request = {
563
+ id: requestId,
564
+ type: 'ExecuteRequest',
565
+ data: {
566
+ name: 'readAttachmentContent',
567
+ args: [doc, attachment],
568
+ },
569
+ };
570
+ this.proxy(task, request);
571
+ return task;
572
+ }
573
+ /**
574
+ * {@inheritDoc @embedpdf/models!PdfEngine.setFormFieldValue}
575
+ *
576
+ * @public
577
+ */
578
+ setFormFieldValue(doc, page, annotation, value) {
579
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'setFormFieldValue', doc, annotation, value);
580
+ const requestId = this.generateRequestId(doc.id);
581
+ const task = new WorkerTask(this.worker, requestId);
582
+ const request = {
583
+ id: requestId,
584
+ type: 'ExecuteRequest',
585
+ data: {
586
+ name: 'setFormFieldValue',
587
+ args: [doc, page, annotation, value],
588
+ },
589
+ };
590
+ this.proxy(task, request);
591
+ return task;
592
+ }
593
+ /**
594
+ * {@inheritDoc @embedpdf/models!PdfEngine.flattenPage}
595
+ *
596
+ * @public
597
+ */
598
+ flattenPage(doc, page, flag) {
599
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'flattenPage', doc, page, flag);
600
+ const requestId = this.generateRequestId(doc.id);
601
+ const task = new WorkerTask(this.worker, requestId);
602
+ const request = {
603
+ id: requestId,
604
+ type: 'ExecuteRequest',
605
+ data: {
606
+ name: 'flattenPage',
607
+ args: [doc, page, flag],
608
+ },
609
+ };
610
+ this.proxy(task, request);
611
+ return task;
612
+ }
613
+ /**
614
+ * {@inheritDoc @embedpdf/models!PdfEngine.extractPages}
615
+ *
616
+ * @public
617
+ */
618
+ extractPages(doc, pageIndexes) {
619
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'extractPages', doc);
620
+ const requestId = this.generateRequestId(doc.id);
621
+ const task = new WorkerTask(this.worker, requestId);
622
+ const request = {
623
+ id: requestId,
624
+ type: 'ExecuteRequest',
625
+ data: {
626
+ name: 'extractPages',
627
+ args: [doc, pageIndexes],
628
+ },
629
+ };
630
+ this.proxy(task, request);
631
+ return task;
632
+ }
633
+ /**
634
+ * {@inheritDoc @embedpdf/models!PdfEngine.extractText}
635
+ *
636
+ * @public
637
+ */
638
+ extractText(doc, pageIndexes) {
639
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'extractText', doc);
640
+ const requestId = this.generateRequestId(doc.id);
641
+ const task = new WorkerTask(this.worker, requestId);
642
+ const request = {
643
+ id: requestId,
644
+ type: 'ExecuteRequest',
645
+ data: {
646
+ name: 'extractText',
647
+ args: [doc, pageIndexes],
648
+ },
649
+ };
650
+ this.proxy(task, request);
651
+ return task;
652
+ }
653
+ /**
654
+ * {@inheritDoc @embedpdf/models!PdfEngine.getPageGlyphs}
655
+ *
656
+ * @public
657
+ */
658
+ getPageGlyphs(doc, page) {
659
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageGlyphs', doc, page);
660
+ const requestId = this.generateRequestId(doc.id);
661
+ const task = new WorkerTask(this.worker, requestId);
662
+ const request = {
663
+ id: requestId,
664
+ type: 'ExecuteRequest',
665
+ data: {
666
+ name: 'getPageGlyphs',
667
+ args: [doc, page],
668
+ },
669
+ };
670
+ this.proxy(task, request);
671
+ return task;
672
+ }
673
+ /**
674
+ * {@inheritDoc @embedpdf/models!PdfEngine.getPageGeometry}
675
+ *
676
+ * @public
677
+ */
678
+ getPageGeometry(doc, page) {
679
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageGeometry', doc, page);
680
+ const requestId = this.generateRequestId(doc.id);
681
+ const task = new WorkerTask(this.worker, requestId);
682
+ const request = {
683
+ id: requestId,
684
+ type: 'ExecuteRequest',
685
+ data: {
686
+ name: 'getPageGeometry',
687
+ args: [doc, page],
688
+ },
689
+ };
690
+ this.proxy(task, request);
691
+ return task;
692
+ }
693
+ /**
694
+ * {@inheritDoc @embedpdf/models!PdfEngine.merge}
695
+ *
696
+ * @public
697
+ */
698
+ merge(files) {
699
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'merge', files);
700
+ const fileIds = files.map((file) => file.id).join('.');
701
+ const requestId = this.generateRequestId(fileIds);
702
+ const task = new WorkerTask(this.worker, requestId);
703
+ const request = {
704
+ id: requestId,
705
+ type: 'ExecuteRequest',
706
+ data: {
707
+ name: 'merge',
708
+ args: [files],
709
+ },
710
+ };
711
+ this.proxy(task, request);
712
+ return task;
713
+ }
714
+ /**
715
+ * {@inheritDoc @embedpdf/models!PdfEngine.mergePages}
716
+ *
717
+ * @public
718
+ */
719
+ mergePages(mergeConfigs) {
720
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'mergePages', mergeConfigs);
721
+ const requestId = this.generateRequestId(mergeConfigs.map((config) => config.docId).join('.'));
722
+ const task = new WorkerTask(this.worker, requestId);
723
+ const request = {
724
+ id: requestId,
725
+ type: 'ExecuteRequest',
726
+ data: {
727
+ name: 'mergePages',
728
+ args: [mergeConfigs],
729
+ },
730
+ };
731
+ this.proxy(task, request);
732
+ return task;
733
+ }
734
+ /**
735
+ * {@inheritDoc @embedpdf/models!PdfEngine.closeDocument}
736
+ *
737
+ * @public
738
+ */
739
+ closeDocument(doc) {
740
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'closeDocument', doc);
741
+ const requestId = this.generateRequestId(doc.id);
742
+ const task = new WorkerTask(this.worker, requestId);
743
+ const request = {
744
+ id: requestId,
745
+ type: 'ExecuteRequest',
746
+ data: {
747
+ name: 'closeDocument',
748
+ args: [doc],
749
+ },
750
+ };
751
+ this.proxy(task, request);
752
+ return task;
753
+ }
754
+ /**
755
+ * Send the request to webworker inside and register the task
756
+ * @param task - task that waiting for the response
757
+ * @param request - request that needs send to web worker
758
+ * @param transferables - transferables that need to transfer to webworker
759
+ * @returns
760
+ *
761
+ * @internal
762
+ */
763
+ proxy(task, request, transferables = []) {
764
+ this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'send request to worker', task, request, transferables);
765
+ this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'Begin', request.id);
766
+ this.readyTask.wait(() => {
767
+ this.worker.postMessage(request, transferables);
768
+ task.wait(() => {
769
+ this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);
770
+ }, () => {
771
+ this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);
772
+ });
773
+ this.tasks.set(request.id, task);
774
+ }, () => {
775
+ this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);
776
+ task.reject({
777
+ code: PdfErrorCode.Initialization,
778
+ message: 'worker initialization failed',
779
+ });
780
+ });
781
+ }
782
+ }
783
+ WebWorkerEngine.readyTaskId = '0';
784
+
785
+ export { WebWorkerEngine, WorkerTask };
786
+ //# sourceMappingURL=worker.js.map