@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.
- package/README.md +15 -9
- package/dist/browser-C6QEa8uk.cjs +2 -0
- package/dist/browser-C6QEa8uk.cjs.map +1 -0
- package/dist/{browser-Cm3DA8l_.js → browser-awZxztMA.js} +28 -22
- package/dist/browser-awZxztMA.js.map +1 -0
- package/dist/{direct-engine-BZRK27cv.js → direct-engine-DuLFAbiv.js} +23 -21
- package/dist/direct-engine-DuLFAbiv.js.map +1 -0
- package/dist/direct-engine-JeNRkc7w.cjs +2 -0
- package/dist/direct-engine-JeNRkc7w.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +65 -48
- package/dist/index.js.map +1 -1
- package/dist/lib/converters/browser.d.ts +15 -14
- package/dist/lib/converters/index.cjs +1 -1
- package/dist/lib/converters/index.cjs.map +1 -1
- package/dist/lib/converters/index.js +2 -2
- package/dist/lib/orchestrator/pdf-engine.d.ts +0 -1
- package/dist/lib/orchestrator/remote-executor.d.ts +0 -1
- package/dist/lib/pdfium/engine.d.ts +2 -9
- package/dist/lib/pdfium/index.cjs +1 -1
- package/dist/lib/pdfium/index.cjs.map +1 -1
- package/dist/lib/pdfium/index.d.ts +1 -0
- package/dist/lib/pdfium/index.js +6 -4
- package/dist/lib/pdfium/index.js.map +1 -1
- package/dist/lib/pdfium/web/direct-engine.cjs +1 -1
- package/dist/lib/pdfium/web/direct-engine.js +3 -3
- package/dist/lib/pdfium/web/worker-engine.cjs +1 -1
- package/dist/lib/pdfium/web/worker-engine.cjs.map +1 -1
- package/dist/lib/pdfium/web/worker-engine.js +4 -7
- package/dist/lib/pdfium/web/worker-engine.js.map +1 -1
- package/dist/lib/webworker/engine.cjs +1 -1
- package/dist/lib/webworker/engine.cjs.map +1 -1
- package/dist/lib/webworker/engine.d.ts +0 -6
- package/dist/lib/webworker/engine.js +0 -13
- package/dist/lib/webworker/engine.js.map +1 -1
- package/dist/{pdf-engine-yZzBqL_l.js → pdf-engine-BVNF_Yo9.js} +6 -14
- package/dist/pdf-engine-BVNF_Yo9.js.map +1 -0
- package/dist/pdf-engine-C3JeKij1.cjs +2 -0
- package/dist/pdf-engine-C3JeKij1.cjs.map +1 -0
- package/dist/preact/index.cjs +1 -1
- package/dist/preact/index.cjs.map +1 -1
- package/dist/preact/index.js +3 -11
- package/dist/preact/index.js.map +1 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.js +3 -11
- package/dist/react/index.js.map +1 -1
- package/dist/svelte/index.cjs +1 -1
- package/dist/svelte/index.cjs.map +1 -1
- package/dist/svelte/index.js +2 -10
- package/dist/svelte/index.js.map +1 -1
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.js +2 -11
- package/dist/vue/index.js.map +1 -1
- package/package.json +3 -3
- package/dist/browser-B5Y-F6il.cjs +0 -2
- package/dist/browser-B5Y-F6il.cjs.map +0 -1
- package/dist/browser-Cm3DA8l_.js.map +0 -1
- package/dist/direct-engine-BZRK27cv.js.map +0 -1
- package/dist/direct-engine-CZAhOupl.cjs +0 -2
- package/dist/direct-engine-CZAhOupl.cjs.map +0 -1
- package/dist/pdf-engine-CrarIjJ6.cjs +0 -2
- package/dist/pdf-engine-CrarIjJ6.cjs.map +0 -1
- 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 **`
|
|
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 {
|
|
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
|
-
//
|
|
58
|
-
const
|
|
59
|
-
engine.initialize();
|
|
56
|
+
// 1 – boot the low‑level WASM module
|
|
57
|
+
const pdfiumModule = await init({ wasmBinary });
|
|
60
58
|
|
|
61
|
-
//
|
|
62
|
-
const
|
|
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
|
|
1
|
+
class ImageConverterError extends Error {
|
|
2
2
|
constructor(message) {
|
|
3
3
|
super(message);
|
|
4
|
-
this.name = "
|
|
4
|
+
this.name = "ImageConverterError";
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
7
|
const browserImageDataToBlobConverter = (getImageData, imageType = "image/webp", quality) => {
|
|
8
|
-
if (typeof
|
|
8
|
+
if (typeof document === "undefined") {
|
|
9
9
|
return Promise.reject(
|
|
10
|
-
new
|
|
11
|
-
"
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
|
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
|
|
52
|
-
return
|
|
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
|
-
|
|
71
|
+
ImageConverterError as I,
|
|
66
72
|
createHybridImageConverter as a,
|
|
67
73
|
browserImageDataToBlobConverter as b,
|
|
68
74
|
createWorkerPoolImageConverter as c
|
|
69
75
|
};
|
|
70
|
-
//# sourceMappingURL=browser-
|
|
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-
|
|
4
|
-
import { b as browserImageDataToBlobConverter } from "./browser-
|
|
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
|
|
490
|
+
* Create an instance of PdfiumNative and initialize PDFium
|
|
491
491
|
* @param wasmModule - pdfium wasm module
|
|
492
|
-
* @param
|
|
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
|
|
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
|
|
5625
|
-
|
|
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
|
|
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(
|
|
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-
|
|
6784
|
+
//# sourceMappingURL=direct-engine-DuLFAbiv.js.map
|