@embedpdf/engines 2.0.0-next.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +15 -9
  2. package/dist/browser-C6QEa8uk.cjs +2 -0
  3. package/dist/browser-C6QEa8uk.cjs.map +1 -0
  4. package/dist/{browser-Cm3DA8l_.js → browser-awZxztMA.js} +28 -22
  5. package/dist/browser-awZxztMA.js.map +1 -0
  6. package/dist/{direct-engine-BZRK27cv.js → direct-engine-DuLFAbiv.js} +23 -21
  7. package/dist/direct-engine-DuLFAbiv.js.map +1 -0
  8. package/dist/direct-engine-JeNRkc7w.cjs +2 -0
  9. package/dist/direct-engine-JeNRkc7w.cjs.map +1 -0
  10. package/dist/index.cjs +1 -1
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.js +65 -48
  13. package/dist/index.js.map +1 -1
  14. package/dist/lib/converters/browser.d.ts +15 -14
  15. package/dist/lib/converters/index.cjs +1 -1
  16. package/dist/lib/converters/index.cjs.map +1 -1
  17. package/dist/lib/converters/index.js +2 -2
  18. package/dist/lib/orchestrator/pdf-engine.d.ts +0 -1
  19. package/dist/lib/orchestrator/remote-executor.d.ts +0 -1
  20. package/dist/lib/pdfium/engine.d.ts +2 -9
  21. package/dist/lib/pdfium/index.cjs +1 -1
  22. package/dist/lib/pdfium/index.cjs.map +1 -1
  23. package/dist/lib/pdfium/index.d.ts +1 -0
  24. package/dist/lib/pdfium/index.js +6 -4
  25. package/dist/lib/pdfium/index.js.map +1 -1
  26. package/dist/lib/pdfium/web/direct-engine.cjs +1 -1
  27. package/dist/lib/pdfium/web/direct-engine.js +3 -3
  28. package/dist/lib/pdfium/web/worker-engine.cjs +1 -1
  29. package/dist/lib/pdfium/web/worker-engine.cjs.map +1 -1
  30. package/dist/lib/pdfium/web/worker-engine.js +4 -7
  31. package/dist/lib/pdfium/web/worker-engine.js.map +1 -1
  32. package/dist/lib/webworker/engine.cjs +1 -1
  33. package/dist/lib/webworker/engine.cjs.map +1 -1
  34. package/dist/lib/webworker/engine.d.ts +0 -6
  35. package/dist/lib/webworker/engine.js +0 -13
  36. package/dist/lib/webworker/engine.js.map +1 -1
  37. package/dist/{pdf-engine-yZzBqL_l.js → pdf-engine-BVNF_Yo9.js} +6 -14
  38. package/dist/pdf-engine-BVNF_Yo9.js.map +1 -0
  39. package/dist/pdf-engine-C3JeKij1.cjs +2 -0
  40. package/dist/pdf-engine-C3JeKij1.cjs.map +1 -0
  41. package/dist/preact/index.cjs +1 -1
  42. package/dist/preact/index.cjs.map +1 -1
  43. package/dist/preact/index.js +3 -11
  44. package/dist/preact/index.js.map +1 -1
  45. package/dist/react/index.cjs +1 -1
  46. package/dist/react/index.cjs.map +1 -1
  47. package/dist/react/index.js +3 -11
  48. package/dist/react/index.js.map +1 -1
  49. package/dist/svelte/index.cjs +1 -1
  50. package/dist/svelte/index.cjs.map +1 -1
  51. package/dist/svelte/index.js +2 -10
  52. package/dist/svelte/index.js.map +1 -1
  53. package/dist/vue/index.cjs +1 -1
  54. package/dist/vue/index.cjs.map +1 -1
  55. package/dist/vue/index.js +2 -11
  56. package/dist/vue/index.js.map +1 -1
  57. package/package.json +3 -3
  58. package/dist/browser-B5Y-F6il.cjs +0 -2
  59. package/dist/browser-B5Y-F6il.cjs.map +0 -1
  60. package/dist/browser-Cm3DA8l_.js.map +0 -1
  61. package/dist/direct-engine-BZRK27cv.js.map +0 -1
  62. package/dist/direct-engine-CZAhOupl.cjs +0 -2
  63. package/dist/direct-engine-CZAhOupl.cjs.map +0 -1
  64. package/dist/pdf-engine-CrarIjJ6.cjs +0 -2
  65. package/dist/pdf-engine-CrarIjJ6.cjs.map +0 -1
  66. package/dist/pdf-engine-yZzBqL_l.js.map +0 -1
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  # @embedpdf/engines
12
12
 
13
- Pluggable rendering engines for EmbedPDF. Ships with **`PdfiumEngine`** a highlevel, promise‑first wrapper built on top of `@embedpdf/pdfium`.
13
+ Pluggable rendering engines for EmbedPDF. Ships with **`PdfiumNative`** (low-level executor) and **`PdfEngine`** (high-level orchestrator) – a promise‑first API built on top of `@embedpdf/pdfium`.
14
14
 
15
15
  ## Documentation
16
16
 
@@ -43,7 +43,8 @@ npm install @embedpdf/engines @embedpdf/pdfium
43
43
 
44
44
  ```typescript
45
45
  import { init } from '@embedpdf/pdfium';
46
- import { PdfiumEngine } from '@embedpdf/engines/pdfium';
46
+ import { PdfiumNative, PdfEngine } from '@embedpdf/engines/pdfium';
47
+ import { browserImageDataToBlobConverter } from '@embedpdf/engines/converters';
47
48
 
48
49
  const pdfiumWasm =
49
50
  'https://cdn.jsdelivr.net/npm/@embedpdf/pdfium/dist/pdfium.wasm';
@@ -51,15 +52,20 @@ const pdfiumWasm =
51
52
  (async () => {
52
53
  const response = await fetch(pdfiumWasm);
53
54
  const wasmBinary = await response.arrayBuffer();
54
- // 1 – boot the low‑level WASM module
55
- const pdfium = await init({ wasmBinary });
56
55
 
57
- // create the high‑level engine
58
- const engine = new PdfiumEngine(pdfium);
59
- engine.initialize();
56
+ // 1 boot the low‑level WASM module
57
+ const pdfiumModule = await init({ wasmBinary });
60
58
 
61
- // open & render
62
- const document = await engine
59
+ // 2 create the native executor (initializes PDFium automatically)
60
+ const native = new PdfiumNative(pdfiumModule);
61
+
62
+ // 3 – create the orchestrator with image converter
63
+ const engine = new PdfEngine(native, {
64
+ imageConverter: browserImageDataToBlobConverter,
65
+ });
66
+
67
+ // 4 – open & render
68
+ const doc = await engine
63
69
  .openDocumentUrl({ id: 'demo', url: '/demo.pdf' })
64
70
  .toPromise();
65
71
  const page0 = doc.pages[0];
@@ -0,0 +1,2 @@
1
+ "use strict";class e extends Error{constructor(e){super(e),this.name="ImageConverterError"}}const t=(t,r="image/webp",n)=>{if("undefined"==typeof document)return Promise.reject(new e("document is not available. This converter requires a browser environment."));const a=t(),o=new ImageData(a.data,a.width,a.height);return new Promise((t,a)=>{const i=document.createElement("canvas");i.width=o.width,i.height=o.height,i.getContext("2d").putImageData(o,0,0),i.toBlob(r=>{r?t(r):a(new e("Canvas toBlob returned null"))},r,n)})};exports.ImageConverterError=e,exports.browserImageDataToBlobConverter=t,exports.createHybridImageConverter=function(e){return async(r,n="image/webp",a)=>{try{const t=r(),o=new Uint8ClampedArray(t.data);return await e.encode({data:o,width:t.width,height:t.height},n,a)}catch(o){return console.warn("Worker encoding failed, falling back to main-thread Canvas:",o),t(r,n,a)}}},exports.createWorkerPoolImageConverter=function(e){return(t,r="image/webp",n)=>{const a=t(),o=new Uint8ClampedArray(a.data);return e.encode({data:o,width:a.width,height:a.height},r,n)}};
2
+ //# sourceMappingURL=browser-C6QEa8uk.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-C6QEa8uk.cjs","sources":["../src/lib/converters/browser.ts"],"sourcesContent":["import type { ImageConversionTypes } from '@embedpdf/models';\nimport type { ImageDataConverter, LazyImageData } from './types';\nimport { ImageEncoderWorkerPool } from '../image-encoder';\n\n// ============================================================================\n// Error Classes\n// ============================================================================\n\nexport class ImageConverterError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'ImageConverterError';\n }\n}\n\n// ============================================================================\n// Browser Converters\n// ============================================================================\n\n/**\n * Main-thread Canvas-based image converter\n * Simple and works everywhere, but blocks the main thread during encoding\n *\n * Use this as a fallback when worker-based encoding isn't available\n */\nexport const browserImageDataToBlobConverter: ImageDataConverter<Blob> = (\n getImageData: LazyImageData,\n imageType: ImageConversionTypes = 'image/webp',\n quality?: number,\n): Promise<Blob> => {\n if (typeof document === 'undefined') {\n return Promise.reject(\n new ImageConverterError(\n 'document is not available. This converter requires a browser environment.',\n ),\n );\n }\n\n const pdfImage = getImageData();\n const imageData = new ImageData(pdfImage.data, pdfImage.width, pdfImage.height);\n\n return new Promise((resolve, reject) => {\n const canvas = document.createElement('canvas');\n canvas.width = imageData.width;\n canvas.height = imageData.height;\n canvas.getContext('2d')!.putImageData(imageData, 0, 0);\n\n canvas.toBlob(\n (blob) => {\n if (blob) {\n resolve(blob);\n } else {\n reject(new ImageConverterError('Canvas toBlob returned null'));\n }\n },\n imageType,\n quality,\n );\n });\n};\n\n/**\n * Worker pool image converter using OffscreenCanvas in dedicated workers\n * Non-blocking - encoding happens off the main thread\n *\n * This is the preferred approach for performance\n *\n * @param workerPool - Instance of ImageEncoderWorkerPool\n * @returns ImageDataConverter function\n */\nexport function createWorkerPoolImageConverter(\n workerPool: ImageEncoderWorkerPool,\n): ImageDataConverter<Blob> {\n return (\n getImageData: LazyImageData,\n imageType: ImageConversionTypes = 'image/webp',\n quality?: number,\n ): Promise<Blob> => {\n const pdfImage = getImageData();\n\n // Copy the data since we'll transfer it to another worker\n const dataCopy = new Uint8ClampedArray(pdfImage.data);\n\n return workerPool.encode(\n {\n data: dataCopy,\n width: pdfImage.width,\n height: pdfImage.height,\n },\n imageType,\n quality,\n );\n };\n}\n\n/**\n * Hybrid converter: Worker pool (OffscreenCanvas) → Main thread Canvas fallback\n *\n * Best of both worlds:\n * - Primary: Non-blocking worker-based encoding with OffscreenCanvas\n * - Fallback: Main-thread Canvas for older browsers without OffscreenCanvas in workers\n *\n * @param workerPool - Instance of ImageEncoderWorkerPool\n * @returns ImageDataConverter function\n */\nexport function createHybridImageConverter(\n workerPool: ImageEncoderWorkerPool,\n): ImageDataConverter<Blob> {\n return async (\n getImageData: LazyImageData,\n imageType: ImageConversionTypes = 'image/webp',\n quality?: number,\n ): Promise<Blob> => {\n try {\n // Try worker pool encoding first (OffscreenCanvas in worker)\n const pdfImage = getImageData();\n const dataCopy = new Uint8ClampedArray(pdfImage.data);\n\n return await workerPool.encode(\n {\n data: dataCopy,\n width: pdfImage.width,\n height: pdfImage.height,\n },\n imageType,\n quality,\n );\n } catch (error) {\n // Fallback to main-thread Canvas\n console.warn('Worker encoding failed, falling back to main-thread Canvas:', error);\n return browserImageDataToBlobConverter(getImageData, imageType, quality);\n }\n };\n}\n"],"names":["ImageConverterError","Error","constructor","message","super","this","name","browserImageDataToBlobConverter","getImageData","imageType","quality","document","Promise","reject","pdfImage","imageData","ImageData","data","width","height","resolve","canvas","createElement","getContext","putImageData","toBlob","blob","workerPool","async","dataCopy","Uint8ClampedArray","encode","error","console","warn"],"mappings":"aAQO,MAAMA,UAA4BC,MACvC,WAAAC,CAAYC,GACVC,MAAMD,GACNE,KAAKC,KAAO,qBACd,EAaK,MAAMC,EAA4D,CACvEC,EACAC,EAAkC,aAClCC,KAEA,GAAwB,oBAAbC,SACT,OAAOC,QAAQC,OACb,IAAIb,EACF,8EAKN,MAAMc,EAAWN,IACXO,EAAY,IAAIC,UAAUF,EAASG,KAAMH,EAASI,MAAOJ,EAASK,QAExE,OAAO,IAAIP,QAAQ,CAACQ,EAASP,KAC3B,MAAMQ,EAASV,SAASW,cAAc,UACtCD,EAAOH,MAAQH,EAAUG,MACzBG,EAAOF,OAASJ,EAAUI,OAC1BE,EAAOE,WAAW,MAAOC,aAAaT,EAAW,EAAG,GAEpDM,EAAOI,OACJC,IACKA,EACFN,EAAQM,GAERb,EAAO,IAAIb,EAAoB,iCAGnCS,EACAC,iHAiDC,SACLiB,GAEA,OAAOC,MACLpB,EACAC,EAAkC,aAClCC,KAEA,IAEE,MAAMI,EAAWN,IACXqB,EAAW,IAAIC,kBAAkBhB,EAASG,MAEhD,aAAaU,EAAWI,OACtB,CACEd,KAAMY,EACNX,MAAOJ,EAASI,MAChBC,OAAQL,EAASK,QAEnBV,EACAC,EAEJ,OAASsB,GAGP,OADAC,QAAQC,KAAK,8DAA+DF,GACrEzB,EAAgCC,EAAcC,EAAWC,EAClE,EAEJ,yCA/DO,SACLiB,GAEA,MAAO,CACLnB,EACAC,EAAkC,aAClCC,KAEA,MAAMI,EAAWN,IAGXqB,EAAW,IAAIC,kBAAkBhB,EAASG,MAEhD,OAAOU,EAAWI,OAChB,CACEd,KAAMY,EACNX,MAAOJ,EAASI,MAChBC,OAAQL,EAASK,QAEnBV,EACAC,GAGN"}
@@ -1,22 +1,36 @@
1
- class OffscreenCanvasError extends Error {
1
+ class ImageConverterError extends Error {
2
2
  constructor(message) {
3
3
  super(message);
4
- this.name = "OffscreenCanvasError";
4
+ this.name = "ImageConverterError";
5
5
  }
6
6
  }
7
7
  const browserImageDataToBlobConverter = (getImageData, imageType = "image/webp", quality) => {
8
- if (typeof OffscreenCanvas === "undefined") {
8
+ if (typeof document === "undefined") {
9
9
  return Promise.reject(
10
- new OffscreenCanvasError(
11
- "OffscreenCanvas is not available in this environment. This converter is intended for browser use only. Falling back to WASM-based image encoding."
10
+ new ImageConverterError(
11
+ "document is not available. This converter requires a browser environment."
12
12
  )
13
13
  );
14
14
  }
15
15
  const pdfImage = getImageData();
16
16
  const imageData = new ImageData(pdfImage.data, pdfImage.width, pdfImage.height);
17
- const off = new OffscreenCanvas(imageData.width, imageData.height);
18
- off.getContext("2d").putImageData(imageData, 0, 0);
19
- return off.convertToBlob({ type: imageType, quality });
17
+ return new Promise((resolve, reject) => {
18
+ const canvas = document.createElement("canvas");
19
+ canvas.width = imageData.width;
20
+ canvas.height = imageData.height;
21
+ canvas.getContext("2d").putImageData(imageData, 0, 0);
22
+ canvas.toBlob(
23
+ (blob) => {
24
+ if (blob) {
25
+ resolve(blob);
26
+ } else {
27
+ reject(new ImageConverterError("Canvas toBlob returned null"));
28
+ }
29
+ },
30
+ imageType,
31
+ quality
32
+ );
33
+ });
20
34
  };
21
35
  function createWorkerPoolImageConverter(workerPool) {
22
36
  return (getImageData, imageType = "image/webp", quality) => {
@@ -33,10 +47,10 @@ function createWorkerPoolImageConverter(workerPool) {
33
47
  );
34
48
  };
35
49
  }
36
- function createHybridImageConverter(workerPool, wasmFallback) {
50
+ function createHybridImageConverter(workerPool) {
37
51
  return async (getImageData, imageType = "image/webp", quality) => {
38
- const pdfImage = getImageData();
39
52
  try {
53
+ const pdfImage = getImageData();
40
54
  const dataCopy = new Uint8ClampedArray(pdfImage.data);
41
55
  return await workerPool.encode(
42
56
  {
@@ -48,23 +62,15 @@ function createHybridImageConverter(workerPool, wasmFallback) {
48
62
  quality
49
63
  );
50
64
  } catch (error) {
51
- console.warn("Worker pool encoding failed, falling back to WASM:", error);
52
- return wasmFallback(
53
- {
54
- data: pdfImage.data,
55
- width: pdfImage.width,
56
- height: pdfImage.height
57
- },
58
- imageType,
59
- quality
60
- );
65
+ console.warn("Worker encoding failed, falling back to main-thread Canvas:", error);
66
+ return browserImageDataToBlobConverter(getImageData, imageType, quality);
61
67
  }
62
68
  };
63
69
  }
64
70
  export {
65
- OffscreenCanvasError as O,
71
+ ImageConverterError as I,
66
72
  createHybridImageConverter as a,
67
73
  browserImageDataToBlobConverter as b,
68
74
  createWorkerPoolImageConverter as c
69
75
  };
70
- //# sourceMappingURL=browser-Cm3DA8l_.js.map
76
+ //# sourceMappingURL=browser-awZxztMA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-awZxztMA.js","sources":["../src/lib/converters/browser.ts"],"sourcesContent":["import type { ImageConversionTypes } from '@embedpdf/models';\nimport type { ImageDataConverter, LazyImageData } from './types';\nimport { ImageEncoderWorkerPool } from '../image-encoder';\n\n// ============================================================================\n// Error Classes\n// ============================================================================\n\nexport class ImageConverterError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'ImageConverterError';\n }\n}\n\n// ============================================================================\n// Browser Converters\n// ============================================================================\n\n/**\n * Main-thread Canvas-based image converter\n * Simple and works everywhere, but blocks the main thread during encoding\n *\n * Use this as a fallback when worker-based encoding isn't available\n */\nexport const browserImageDataToBlobConverter: ImageDataConverter<Blob> = (\n getImageData: LazyImageData,\n imageType: ImageConversionTypes = 'image/webp',\n quality?: number,\n): Promise<Blob> => {\n if (typeof document === 'undefined') {\n return Promise.reject(\n new ImageConverterError(\n 'document is not available. This converter requires a browser environment.',\n ),\n );\n }\n\n const pdfImage = getImageData();\n const imageData = new ImageData(pdfImage.data, pdfImage.width, pdfImage.height);\n\n return new Promise((resolve, reject) => {\n const canvas = document.createElement('canvas');\n canvas.width = imageData.width;\n canvas.height = imageData.height;\n canvas.getContext('2d')!.putImageData(imageData, 0, 0);\n\n canvas.toBlob(\n (blob) => {\n if (blob) {\n resolve(blob);\n } else {\n reject(new ImageConverterError('Canvas toBlob returned null'));\n }\n },\n imageType,\n quality,\n );\n });\n};\n\n/**\n * Worker pool image converter using OffscreenCanvas in dedicated workers\n * Non-blocking - encoding happens off the main thread\n *\n * This is the preferred approach for performance\n *\n * @param workerPool - Instance of ImageEncoderWorkerPool\n * @returns ImageDataConverter function\n */\nexport function createWorkerPoolImageConverter(\n workerPool: ImageEncoderWorkerPool,\n): ImageDataConverter<Blob> {\n return (\n getImageData: LazyImageData,\n imageType: ImageConversionTypes = 'image/webp',\n quality?: number,\n ): Promise<Blob> => {\n const pdfImage = getImageData();\n\n // Copy the data since we'll transfer it to another worker\n const dataCopy = new Uint8ClampedArray(pdfImage.data);\n\n return workerPool.encode(\n {\n data: dataCopy,\n width: pdfImage.width,\n height: pdfImage.height,\n },\n imageType,\n quality,\n );\n };\n}\n\n/**\n * Hybrid converter: Worker pool (OffscreenCanvas) → Main thread Canvas fallback\n *\n * Best of both worlds:\n * - Primary: Non-blocking worker-based encoding with OffscreenCanvas\n * - Fallback: Main-thread Canvas for older browsers without OffscreenCanvas in workers\n *\n * @param workerPool - Instance of ImageEncoderWorkerPool\n * @returns ImageDataConverter function\n */\nexport function createHybridImageConverter(\n workerPool: ImageEncoderWorkerPool,\n): ImageDataConverter<Blob> {\n return async (\n getImageData: LazyImageData,\n imageType: ImageConversionTypes = 'image/webp',\n quality?: number,\n ): Promise<Blob> => {\n try {\n // Try worker pool encoding first (OffscreenCanvas in worker)\n const pdfImage = getImageData();\n const dataCopy = new Uint8ClampedArray(pdfImage.data);\n\n return await workerPool.encode(\n {\n data: dataCopy,\n width: pdfImage.width,\n height: pdfImage.height,\n },\n imageType,\n quality,\n );\n } catch (error) {\n // Fallback to main-thread Canvas\n console.warn('Worker encoding failed, falling back to main-thread Canvas:', error);\n return browserImageDataToBlobConverter(getImageData, imageType, quality);\n }\n };\n}\n"],"names":[],"mappings":"AAQO,MAAM,4BAA4B,MAAM;AAAA,EAC7C,YAAY,SAAiB;AAC3B,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EACd;AACF;AAYO,MAAM,kCAA4D,CACvE,cACA,YAAkC,cAClC,YACkB;AAClB,MAAI,OAAO,aAAa,aAAa;AACnC,WAAO,QAAQ;AAAA,MACb,IAAI;AAAA,QACF;AAAA,MAAA;AAAA,IACF;AAAA,EAEJ;AAEA,QAAM,WAAW,aAAA;AACjB,QAAM,YAAY,IAAI,UAAU,SAAS,MAAM,SAAS,OAAO,SAAS,MAAM;AAE9E,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,WAAO,QAAQ,UAAU;AACzB,WAAO,SAAS,UAAU;AAC1B,WAAO,WAAW,IAAI,EAAG,aAAa,WAAW,GAAG,CAAC;AAErD,WAAO;AAAA,MACL,CAAC,SAAS;AACR,YAAI,MAAM;AACR,kBAAQ,IAAI;AAAA,QACd,OAAO;AACL,iBAAO,IAAI,oBAAoB,6BAA6B,CAAC;AAAA,QAC/D;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ,CAAC;AACH;AAWO,SAAS,+BACd,YAC0B;AAC1B,SAAO,CACL,cACA,YAAkC,cAClC,YACkB;AAClB,UAAM,WAAW,aAAA;AAGjB,UAAM,WAAW,IAAI,kBAAkB,SAAS,IAAI;AAEpD,WAAO,WAAW;AAAA,MAChB;AAAA,QACE,MAAM;AAAA,QACN,OAAO,SAAS;AAAA,QAChB,QAAQ,SAAS;AAAA,MAAA;AAAA,MAEnB;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AACF;AAYO,SAAS,2BACd,YAC0B;AAC1B,SAAO,OACL,cACA,YAAkC,cAClC,YACkB;AAClB,QAAI;AAEF,YAAM,WAAW,aAAA;AACjB,YAAM,WAAW,IAAI,kBAAkB,SAAS,IAAI;AAEpD,aAAO,MAAM,WAAW;AAAA,QACtB;AAAA,UACE,MAAM;AAAA,UACN,OAAO,SAAS;AAAA,UAChB,QAAQ,SAAS;AAAA,QAAA;AAAA,QAEnB;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ,SAAS,OAAO;AAEd,cAAQ,KAAK,+DAA+D,KAAK;AACjF,aAAO,gCAAgC,cAAc,WAAW,OAAO;AAAA,IACzE;AAAA,EACF;AACF;"}
@@ -1,7 +1,7 @@
1
1
  import { init } from "@embedpdf/pdfium";
2
2
  import { Rotation, NoopLogger, PdfTaskHelper, PdfErrorCode, pdfDateToDate, isUuidV4, uuidV4, PdfAnnotationSubtype, PdfPageFlattenFlag, stripPdfUnwantedMarkers, PdfAnnotationIcon, PdfAnnotationBorderStyle, PdfAnnotationColorType, PdfAnnotationLineEnding, PdfStampFit, PdfTrappedStatus, pdfColorToWebColor, webColorToPdfColor, pdfAlphaToWebOpacity, webOpacityToPdfAlpha, dateToPdfDate, quadToRect, rectToQuad, PdfStandardFont, PdfPageObjectType, flagsToNames, namesToFlags, PDF_FORM_FIELD_TYPE, AppearanceMode, Task, toIntRect, transformRect, buildUserToDeviceMatrix, PdfZoomMode, PdfActionType } from "@embedpdf/models";
3
- import { P as PdfEngine } from "./pdf-engine-yZzBqL_l.js";
4
- import { b as browserImageDataToBlobConverter } from "./browser-Cm3DA8l_.js";
3
+ import { P as PdfEngine } from "./pdf-engine-BVNF_Yo9.js";
4
+ import { b as browserImageDataToBlobConverter } from "./browser-awZxztMA.js";
5
5
  function readString(wasmModule, readChars, parseChars, defaultLength = 100) {
6
6
  let buffer = wasmModule.wasmExports.malloc(defaultLength);
7
7
  for (let i = 0; i < defaultLength; i++) {
@@ -487,10 +487,9 @@ var PdfiumErrorCode = /* @__PURE__ */ ((PdfiumErrorCode2) => {
487
487
  })(PdfiumErrorCode || {});
488
488
  class PdfiumNative {
489
489
  /**
490
- * Create an instance of PdfiumEngine
490
+ * Create an instance of PdfiumNative and initialize PDFium
491
491
  * @param wasmModule - pdfium wasm module
492
- * @param logger - logger instance
493
- * @param imageDataToBlobConverter - function to convert ImageData to Blob
492
+ * @param options - configuration options
494
493
  */
495
494
  constructor(pdfiumModule, options = {}) {
496
495
  this.pdfiumModule = pdfiumModule;
@@ -504,18 +503,10 @@ class PdfiumNative {
504
503
  this.memoryManager.checkLeaks();
505
504
  }, 1e4);
506
505
  }
507
- }
508
- /**
509
- * {@inheritDoc @embedpdf/models!PdfEngine.initialize}
510
- *
511
- * @public
512
- */
513
- initialize() {
514
506
  this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "initialize");
515
507
  this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `Initialize`, "Begin", "General");
516
508
  this.pdfiumModule.PDFiumExt_Init();
517
509
  this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `Initialize`, "End", "General");
518
- return PdfTaskHelper.resolve(true);
519
510
  }
520
511
  /**
521
512
  * {@inheritDoc @embedpdf/models!PdfEngine.destroy}
@@ -4874,11 +4865,15 @@ class PdfiumNative {
4874
4865
  break;
4875
4866
  }
4876
4867
  }
4877
- const imageData = new ImageData(array, bitmapWidth, bitmapHeight);
4868
+ const imageDataLike = {
4869
+ data: array,
4870
+ width: bitmapWidth,
4871
+ height: bitmapHeight
4872
+ };
4878
4873
  const matrix = this.readPdfPageObjectTransformMatrix(imageObjectPtr);
4879
4874
  return {
4880
4875
  type: PdfPageObjectType.IMAGE,
4881
- imageData,
4876
+ imageData: imageDataLike,
4882
4877
  matrix
4883
4878
  };
4884
4879
  }
@@ -5621,8 +5616,12 @@ class PdfiumNative {
5621
5616
  });
5622
5617
  }
5623
5618
  const data = this.pdfiumModule.pdfium.HEAPU8.subarray(heapPtr, heapPtr + bytes);
5624
- const imageData = new ImageData(new Uint8ClampedArray(data), wDev, hDev);
5625
- task.resolve(imageData);
5619
+ const imageDataLike = {
5620
+ data: new Uint8ClampedArray(data),
5621
+ width: wDev,
5622
+ height: hDev
5623
+ };
5624
+ task.resolve(imageDataLike);
5626
5625
  this.memoryManager.free(heapPtr);
5627
5626
  return task;
5628
5627
  }
@@ -5717,7 +5716,11 @@ class PdfiumNative {
5717
5716
  "Begin",
5718
5717
  `${doc.id}-${page.index}`
5719
5718
  );
5720
- const imageData = new ImageData(new Uint8ClampedArray(data), wDev, hDev);
5719
+ const imageDataLike = {
5720
+ data: new Uint8ClampedArray(data),
5721
+ width: wDev,
5722
+ height: hDev
5723
+ };
5721
5724
  this.logger.perf(
5722
5725
  LOG_SOURCE,
5723
5726
  LOG_CATEGORY,
@@ -5725,7 +5728,7 @@ class PdfiumNative {
5725
5728
  "End",
5726
5729
  `${doc.id}-${page.index}`
5727
5730
  );
5728
- task.resolve(imageData);
5731
+ task.resolve(imageDataLike);
5729
5732
  this.pdfiumModule.FPDFBitmap_Destroy(bitmapPtr);
5730
5733
  this.memoryManager.free(heapPtr);
5731
5734
  return task;
@@ -6762,7 +6765,6 @@ async function createPdfiumEngine(wasmUrl, options) {
6762
6765
  const wasmBinary = await response.arrayBuffer();
6763
6766
  const wasmModule = await init({ wasmBinary });
6764
6767
  const native = new PdfiumNative(wasmModule, { logger: options == null ? void 0 : options.logger });
6765
- native.initialize();
6766
6768
  return new PdfEngine(native, {
6767
6769
  imageConverter: browserImageDataToBlobConverter,
6768
6770
  logger: options == null ? void 0 : options.logger
@@ -6779,4 +6781,4 @@ export {
6779
6781
  isValidCustomKey as i,
6780
6782
  readString as r
6781
6783
  };
6782
- //# sourceMappingURL=direct-engine-BZRK27cv.js.map
6784
+ //# sourceMappingURL=direct-engine-DuLFAbiv.js.map