@embedpdf/engines 2.4.0 → 2.5.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 (41) hide show
  1. package/dist/{browser-C6QEa8uk.cjs → browser-13mzox-R.cjs} +2 -2
  2. package/dist/{browser-C6QEa8uk.cjs.map → browser-13mzox-R.cjs.map} +1 -1
  3. package/dist/{browser-awZxztMA.js → browser-qfUHZxQ6.js} +7 -3
  4. package/dist/{browser-awZxztMA.js.map → browser-qfUHZxQ6.js.map} +1 -1
  5. package/dist/direct-engine-BtiOvMLP.cjs +2 -0
  6. package/dist/direct-engine-BtiOvMLP.cjs.map +1 -0
  7. package/dist/{direct-engine-6BoAmGsC.js → direct-engine-D8HGqcIt.js} +198 -162
  8. package/dist/direct-engine-D8HGqcIt.js.map +1 -0
  9. package/dist/index.cjs +1 -1
  10. package/dist/index.js +3 -3
  11. package/dist/lib/converters/browser.d.ts +2 -2
  12. package/dist/lib/converters/index.cjs +1 -1
  13. package/dist/lib/converters/index.js +1 -1
  14. package/dist/lib/converters/types.d.ts +12 -2
  15. package/dist/lib/pdfium/cache.d.ts +9 -1
  16. package/dist/lib/pdfium/engine.d.ts +21 -3
  17. package/dist/lib/pdfium/index.cjs +1 -1
  18. package/dist/lib/pdfium/index.js +4 -4
  19. package/dist/lib/pdfium/web/direct-engine.cjs +1 -1
  20. package/dist/lib/pdfium/web/direct-engine.js +3 -3
  21. package/dist/lib/pdfium/web/worker-engine.cjs +1 -1
  22. package/dist/lib/pdfium/web/worker-engine.js +3 -3
  23. package/dist/pdf-engine-BmrecQLq.cjs +2 -0
  24. package/dist/pdf-engine-BmrecQLq.cjs.map +1 -0
  25. package/dist/{pdf-engine-D_Dua_6w.js → pdf-engine-aJNoNMbt.js} +5 -2
  26. package/dist/pdf-engine-aJNoNMbt.js.map +1 -0
  27. package/dist/preact/index.cjs +1 -1
  28. package/dist/preact/index.js +1 -1
  29. package/dist/react/index.cjs +1 -1
  30. package/dist/react/index.js +1 -1
  31. package/dist/svelte/index.cjs +1 -1
  32. package/dist/svelte/index.js +1 -1
  33. package/dist/vue/index.cjs +1 -1
  34. package/dist/vue/index.js +1 -1
  35. package/package.json +6 -6
  36. package/dist/direct-engine-6BoAmGsC.js.map +0 -1
  37. package/dist/direct-engine-Byh1BweU.cjs +0 -2
  38. package/dist/direct-engine-Byh1BweU.cjs.map +0 -1
  39. package/dist/pdf-engine-BXctylEz.cjs +0 -2
  40. package/dist/pdf-engine-BXctylEz.cjs.map +0 -1
  41. package/dist/pdf-engine-D_Dua_6w.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./lib/pdfium/index.cjs"),r=require("./lib/webworker/engine.cjs"),t=require("@embedpdf/models"),a=require("./direct-engine-Byh1BweU.cjs"),o=require("./lib/pdfium/web/worker-engine.cjs"),s=require("./browser-C6QEa8uk.cjs"),n=require("./pdf-engine-BXctylEz.cjs"),c="WebWorkerEngineRunner",i="Engine";exports.DEFAULT_PDFIUM_WASM_URL=e.DEFAULT_PDFIUM_WASM_URL,exports.FONT_CDN_URLS=e.FONT_CDN_URLS,exports.cdnFontConfig=e.cdnFontConfig,exports.createCdnFontConfig=e.createCdnFontConfig,exports.WebWorkerEngine=r.WebWorkerEngine,exports.WorkerTask=r.WorkerTask,Object.defineProperty(exports,"FontCharset",{enumerable:!0,get:()=>t.FontCharset}),exports.BitmapFormat=a.BitmapFormat,exports.FontFallbackManager=a.FontFallbackManager,exports.PdfiumErrorCode=a.PdfiumErrorCode,exports.PdfiumNative=a.PdfiumNative,exports.RenderFlag=a.RenderFlag,exports.computeFormDrawParams=a.computeFormDrawParams,exports.createNodeFontLoader=a.createNodeFontLoader,exports.createPdfiumDirectEngine=a.createPdfiumEngine,exports.isValidCustomKey=a.isValidCustomKey,exports.readArrayBuffer=a.readArrayBuffer,exports.readString=a.readString,exports.createPdfiumWorkerEngine=o.createPdfiumEngine,exports.ImageConverterError=s.ImageConverterError,exports.browserImageDataToBlobConverter=s.browserImageDataToBlobConverter,exports.createHybridImageConverter=s.createHybridImageConverter,exports.createWorkerPoolImageConverter=s.createWorkerPoolImageConverter,exports.PdfEngine=n.PdfEngine,exports.EngineRunner=class{constructor(e=new t.NoopLogger){this.logger=e,this.execute=async e=>{if(this.logger.debug(c,i,"runner start exeucte request"),!this.engine){const r={type:"reject",reason:{code:t.PdfErrorCode.NotReady,message:"engine has not started yet"}},a={id:e.id,type:"ExecuteResponse",data:{type:"error",value:r}};return void this.respond(a)}const r=this.engine,{name:a,args:o}=e.data;if(!r[a]){const r={type:"reject",reason:{code:t.PdfErrorCode.NotSupport,message:`engine method ${a} is not supported yet`}},o={id:e.id,type:"ExecuteResponse",data:{type:"error",value:r}};return void this.respond(o)}let s;switch(a){case"isSupport":s=r.isSupport(...o);break;case"destroy":s=r.destroy(...o);break;case"openDocumentUrl":s=r.openDocumentUrl(...o);break;case"openDocumentBuffer":s=r.openDocumentBuffer(...o);break;case"getDocPermissions":s=r.getDocPermissions(...o);break;case"getDocUserPermissions":s=r.getDocUserPermissions(...o);break;case"getMetadata":s=r.getMetadata(...o);break;case"setMetadata":s=r.setMetadata(...o);break;case"getBookmarks":s=r.getBookmarks(...o);break;case"setBookmarks":s=r.setBookmarks(...o);break;case"deleteBookmarks":s=r.deleteBookmarks(...o);break;case"getSignatures":s=r.getSignatures(...o);break;case"renderPage":s=r.renderPage(...o);break;case"renderPageRect":s=r.renderPageRect(...o);break;case"renderPageAnnotation":s=r.renderPageAnnotation(...o);break;case"renderThumbnail":s=r.renderThumbnail(...o);break;case"getAllAnnotations":s=r.getAllAnnotations(...o);break;case"getPageAnnotations":s=r.getPageAnnotations(...o);break;case"createPageAnnotation":s=r.createPageAnnotation(...o);break;case"updatePageAnnotation":s=r.updatePageAnnotation(...o);break;case"removePageAnnotation":s=r.removePageAnnotation(...o);break;case"getPageTextRects":s=r.getPageTextRects(...o);break;case"searchAllPages":s=r.searchAllPages(...o);break;case"closeDocument":s=r.closeDocument(...o);break;case"closeAllDocuments":s=r.closeAllDocuments(...o);break;case"saveAsCopy":s=r.saveAsCopy(...o);break;case"getAttachments":s=r.getAttachments(...o);break;case"addAttachment":s=r.addAttachment(...o);break;case"removeAttachment":s=r.removeAttachment(...o);break;case"readAttachmentContent":s=r.readAttachmentContent(...o);break;case"setFormFieldValue":s=r.setFormFieldValue(...o);break;case"flattenPage":s=r.flattenPage(...o);break;case"extractPages":s=r.extractPages(...o);break;case"extractText":s=r.extractText(...o);break;case"redactTextInRects":s=r.redactTextInRects(...o);break;case"applyRedaction":s=r.applyRedaction(...o);break;case"applyAllRedactions":s=r.applyAllRedactions(...o);break;case"flattenAnnotation":s=r.flattenAnnotation(...o);break;case"getTextSlices":s=r.getTextSlices(...o);break;case"getPageGlyphs":s=r.getPageGlyphs(...o);break;case"getPageGeometry":s=r.getPageGeometry(...o);break;case"merge":s=r.merge(...o);break;case"mergePages":s=r.mergePages(...o);break;case"preparePrintDocument":s=r.preparePrintDocument(...o);break;case"setDocumentEncryption":s=r.setDocumentEncryption(...o);break;case"removeEncryption":s=r.removeEncryption(...o);break;case"unlockOwnerPermissions":s=r.unlockOwnerPermissions(...o);break;case"isEncrypted":s=r.isEncrypted(...o);break;case"isOwnerUnlocked":s=r.isOwnerUnlocked(...o);break;default:const n={type:"reject",reason:{code:t.PdfErrorCode.NotSupport,message:`engine method ${a} is not supported`}},c={id:e.id,type:"ExecuteResponse",data:{type:"error",value:n}};return void this.respond(c)}s.onProgress(r=>{const t={id:e.id,type:"ExecuteProgress",data:r};this.respond(t)}),s.wait(r=>{const t={id:e.id,type:"ExecuteResponse",data:{type:"result",value:r}};this.respond(t)},r=>{const t={id:e.id,type:"ExecuteResponse",data:{type:"error",value:r}};this.respond(t)})}}listen(){self.onmessage=e=>this.handle(e)}handle(e){this.logger.debug(c,i,"webworker receive message event: ",e.data);try{const r=e.data;if("ExecuteRequest"===r.type)this.execute(r)}catch(r){this.logger.info(c,i,"webworker met error when processing message event:",r)}}ready(){this.listen(),this.respond({id:"0",type:"ReadyResponse"}),this.logger.debug(c,i,"runner is ready")}respond(e){this.logger.debug(c,i,"runner respond: ",e),self.postMessage(e)}};
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./lib/pdfium/index.cjs"),r=require("./lib/webworker/engine.cjs"),t=require("@embedpdf/models"),a=require("./direct-engine-BtiOvMLP.cjs"),o=require("./lib/pdfium/web/worker-engine.cjs"),s=require("./browser-13mzox-R.cjs"),n=require("./pdf-engine-BmrecQLq.cjs"),c="WebWorkerEngineRunner",i="Engine";exports.DEFAULT_PDFIUM_WASM_URL=e.DEFAULT_PDFIUM_WASM_URL,exports.FONT_CDN_URLS=e.FONT_CDN_URLS,exports.cdnFontConfig=e.cdnFontConfig,exports.createCdnFontConfig=e.createCdnFontConfig,exports.WebWorkerEngine=r.WebWorkerEngine,exports.WorkerTask=r.WorkerTask,Object.defineProperty(exports,"FontCharset",{enumerable:!0,get:()=>t.FontCharset}),exports.BitmapFormat=a.BitmapFormat,exports.FontFallbackManager=a.FontFallbackManager,exports.PdfiumErrorCode=a.PdfiumErrorCode,exports.PdfiumNative=a.PdfiumNative,exports.RenderFlag=a.RenderFlag,exports.computeFormDrawParams=a.computeFormDrawParams,exports.createNodeFontLoader=a.createNodeFontLoader,exports.createPdfiumDirectEngine=a.createPdfiumEngine,exports.isValidCustomKey=a.isValidCustomKey,exports.readArrayBuffer=a.readArrayBuffer,exports.readString=a.readString,exports.createPdfiumWorkerEngine=o.createPdfiumEngine,exports.ImageConverterError=s.ImageConverterError,exports.browserImageDataToBlobConverter=s.browserImageDataToBlobConverter,exports.createHybridImageConverter=s.createHybridImageConverter,exports.createWorkerPoolImageConverter=s.createWorkerPoolImageConverter,exports.PdfEngine=n.PdfEngine,exports.EngineRunner=class{constructor(e=new t.NoopLogger){this.logger=e,this.execute=async e=>{if(this.logger.debug(c,i,"runner start exeucte request"),!this.engine){const r={type:"reject",reason:{code:t.PdfErrorCode.NotReady,message:"engine has not started yet"}},a={id:e.id,type:"ExecuteResponse",data:{type:"error",value:r}};return void this.respond(a)}const r=this.engine,{name:a,args:o}=e.data;if(!r[a]){const r={type:"reject",reason:{code:t.PdfErrorCode.NotSupport,message:`engine method ${a} is not supported yet`}},o={id:e.id,type:"ExecuteResponse",data:{type:"error",value:r}};return void this.respond(o)}let s;switch(a){case"isSupport":s=r.isSupport(...o);break;case"destroy":s=r.destroy(...o);break;case"openDocumentUrl":s=r.openDocumentUrl(...o);break;case"openDocumentBuffer":s=r.openDocumentBuffer(...o);break;case"getDocPermissions":s=r.getDocPermissions(...o);break;case"getDocUserPermissions":s=r.getDocUserPermissions(...o);break;case"getMetadata":s=r.getMetadata(...o);break;case"setMetadata":s=r.setMetadata(...o);break;case"getBookmarks":s=r.getBookmarks(...o);break;case"setBookmarks":s=r.setBookmarks(...o);break;case"deleteBookmarks":s=r.deleteBookmarks(...o);break;case"getSignatures":s=r.getSignatures(...o);break;case"renderPage":s=r.renderPage(...o);break;case"renderPageRect":s=r.renderPageRect(...o);break;case"renderPageAnnotation":s=r.renderPageAnnotation(...o);break;case"renderThumbnail":s=r.renderThumbnail(...o);break;case"getAllAnnotations":s=r.getAllAnnotations(...o);break;case"getPageAnnotations":s=r.getPageAnnotations(...o);break;case"createPageAnnotation":s=r.createPageAnnotation(...o);break;case"updatePageAnnotation":s=r.updatePageAnnotation(...o);break;case"removePageAnnotation":s=r.removePageAnnotation(...o);break;case"getPageTextRects":s=r.getPageTextRects(...o);break;case"searchAllPages":s=r.searchAllPages(...o);break;case"closeDocument":s=r.closeDocument(...o);break;case"closeAllDocuments":s=r.closeAllDocuments(...o);break;case"saveAsCopy":s=r.saveAsCopy(...o);break;case"getAttachments":s=r.getAttachments(...o);break;case"addAttachment":s=r.addAttachment(...o);break;case"removeAttachment":s=r.removeAttachment(...o);break;case"readAttachmentContent":s=r.readAttachmentContent(...o);break;case"setFormFieldValue":s=r.setFormFieldValue(...o);break;case"flattenPage":s=r.flattenPage(...o);break;case"extractPages":s=r.extractPages(...o);break;case"extractText":s=r.extractText(...o);break;case"redactTextInRects":s=r.redactTextInRects(...o);break;case"applyRedaction":s=r.applyRedaction(...o);break;case"applyAllRedactions":s=r.applyAllRedactions(...o);break;case"flattenAnnotation":s=r.flattenAnnotation(...o);break;case"getTextSlices":s=r.getTextSlices(...o);break;case"getPageGlyphs":s=r.getPageGlyphs(...o);break;case"getPageGeometry":s=r.getPageGeometry(...o);break;case"merge":s=r.merge(...o);break;case"mergePages":s=r.mergePages(...o);break;case"preparePrintDocument":s=r.preparePrintDocument(...o);break;case"setDocumentEncryption":s=r.setDocumentEncryption(...o);break;case"removeEncryption":s=r.removeEncryption(...o);break;case"unlockOwnerPermissions":s=r.unlockOwnerPermissions(...o);break;case"isEncrypted":s=r.isEncrypted(...o);break;case"isOwnerUnlocked":s=r.isOwnerUnlocked(...o);break;default:const n={type:"reject",reason:{code:t.PdfErrorCode.NotSupport,message:`engine method ${a} is not supported`}},c={id:e.id,type:"ExecuteResponse",data:{type:"error",value:n}};return void this.respond(c)}s.onProgress(r=>{const t={id:e.id,type:"ExecuteProgress",data:r};this.respond(t)}),s.wait(r=>{const t={id:e.id,type:"ExecuteResponse",data:{type:"result",value:r}};this.respond(t)},r=>{const t={id:e.id,type:"ExecuteResponse",data:{type:"error",value:r}};this.respond(t)})}}listen(){self.onmessage=e=>this.handle(e)}handle(e){this.logger.debug(c,i,"webworker receive message event: ",e.data);try{const r=e.data;if("ExecuteRequest"===r.type)this.execute(r)}catch(r){this.logger.info(c,i,"webworker met error when processing message event:",r)}}ready(){this.listen(),this.respond({id:"0",type:"ReadyResponse"}),this.logger.debug(c,i,"runner is ready")}respond(e){this.logger.debug(c,i,"runner respond: ",e),self.postMessage(e)}};
2
2
  //# sourceMappingURL=index.cjs.map
package/dist/index.js CHANGED
@@ -2,10 +2,10 @@ import { DEFAULT_PDFIUM_WASM_URL, FONT_CDN_URLS, cdnFontConfig, createCdnFontCon
2
2
  import { WebWorkerEngine, WorkerTask } from "./lib/webworker/engine.js";
3
3
  import { NoopLogger, PdfErrorCode } from "@embedpdf/models";
4
4
  import { FontCharset } from "@embedpdf/models";
5
- import { B, F, P, a, R, d, e, c, i, b, r } from "./direct-engine-6BoAmGsC.js";
5
+ import { B, F, P, a, R, d, e, c, i, b, r } from "./direct-engine-D8HGqcIt.js";
6
6
  import { createPdfiumEngine } from "./lib/pdfium/web/worker-engine.js";
7
- import { I, b as b2, a as a2, c as c2 } from "./browser-awZxztMA.js";
8
- import { P as P2 } from "./pdf-engine-D_Dua_6w.js";
7
+ import { I, b as b2, a as a2, c as c2 } from "./browser-qfUHZxQ6.js";
8
+ import { P as P2 } from "./pdf-engine-aJNoNMbt.js";
9
9
  const LOG_SOURCE = "WebWorkerEngineRunner";
10
10
  const LOG_CATEGORY = "Engine";
11
11
  class EngineRunner {
@@ -17,7 +17,7 @@ export declare const browserImageDataToBlobConverter: ImageDataConverter<Blob>;
17
17
  * This is the preferred approach for performance
18
18
  *
19
19
  * @param workerPool - Instance of ImageEncoderWorkerPool
20
- * @returns ImageDataConverter function
20
+ * @returns ImageDataConverter function with destroy() for cleanup
21
21
  */
22
22
  export declare function createWorkerPoolImageConverter(workerPool: ImageEncoderWorkerPool): ImageDataConverter<Blob>;
23
23
  /**
@@ -28,6 +28,6 @@ export declare function createWorkerPoolImageConverter(workerPool: ImageEncoderW
28
28
  * - Fallback: Main-thread Canvas for older browsers without OffscreenCanvas in workers
29
29
  *
30
30
  * @param workerPool - Instance of ImageEncoderWorkerPool
31
- * @returns ImageDataConverter function
31
+ * @returns ImageDataConverter function with destroy() for cleanup
32
32
  */
33
33
  export declare function createHybridImageConverter(workerPool: ImageEncoderWorkerPool): ImageDataConverter<Blob>;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../browser-C6QEa8uk.cjs");function r(e){const{buffer:r,byteOffset:t,byteLength:a}=e;if(r instanceof ArrayBuffer)return r.slice(t,t+a);const o=new ArrayBuffer(a);return new Uint8Array(o).set(new Uint8Array(r,t,a)),o}exports.ImageConverterError=e.ImageConverterError,exports.browserImageDataToBlobConverter=e.browserImageDataToBlobConverter,exports.createHybridImageConverter=e.createHybridImageConverter,exports.createWorkerPoolImageConverter=e.createWorkerPoolImageConverter,exports.createCustomImageDataToBlobConverter=function(e){return async(t,a="image/webp",o)=>{const n=t(),i=await e(n,a,o);return new Blob([r(i)],{type:a})}},exports.createCustomImageDataToBufferConverter=function(e){return async(r,t="image/webp",a)=>{const o=r();return await e(o,t,a)}},exports.createNodeCanvasImageDataToBlobConverter=function(e){return async(r,t="image/webp",a)=>{const o=r(),{width:n,height:i}=o,g=e(n,i);let s;switch(g.getContext("2d").putImageData(o,0,0),t){case"image/webp":s=g.toBuffer("image/webp");break;case"image/png":s=g.toBuffer("image/png");break;case"image/jpeg":s=g.toBuffer("image/jpeg");break;default:throw new Error(`Unsupported image type: ${t}`)}return s}},exports.createNodeImageDataToBufferConverter=function(e){return async(r,t="image/webp",a)=>{const o=r(),{width:n,height:i,data:g}=o;let s,u=e(Buffer.from(g),{raw:{width:n,height:i,channels:4}});switch(t){case"image/webp":s=await u.webp({quality:a}).toBuffer();break;case"image/png":s=await u.png().toBuffer();break;case"image/jpeg":s=await u.flatten({background:{r:255,g:255,b:255}}).jpeg({quality:a}).toBuffer();break;default:throw new Error(`Unsupported image type: ${t}`)}return s}};
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../browser-13mzox-R.cjs");function r(e){const{buffer:r,byteOffset:t,byteLength:a}=e;if(r instanceof ArrayBuffer)return r.slice(t,t+a);const o=new ArrayBuffer(a);return new Uint8Array(o).set(new Uint8Array(r,t,a)),o}exports.ImageConverterError=e.ImageConverterError,exports.browserImageDataToBlobConverter=e.browserImageDataToBlobConverter,exports.createHybridImageConverter=e.createHybridImageConverter,exports.createWorkerPoolImageConverter=e.createWorkerPoolImageConverter,exports.createCustomImageDataToBlobConverter=function(e){return async(t,a="image/webp",o)=>{const n=t(),i=await e(n,a,o);return new Blob([r(i)],{type:a})}},exports.createCustomImageDataToBufferConverter=function(e){return async(r,t="image/webp",a)=>{const o=r();return await e(o,t,a)}},exports.createNodeCanvasImageDataToBlobConverter=function(e){return async(r,t="image/webp",a)=>{const o=r(),{width:n,height:i}=o,g=e(n,i);let s;switch(g.getContext("2d").putImageData(o,0,0),t){case"image/webp":s=g.toBuffer("image/webp");break;case"image/png":s=g.toBuffer("image/png");break;case"image/jpeg":s=g.toBuffer("image/jpeg");break;default:throw new Error(`Unsupported image type: ${t}`)}return s}},exports.createNodeImageDataToBufferConverter=function(e){return async(r,t="image/webp",a)=>{const o=r(),{width:n,height:i,data:g}=o;let s,u=e(Buffer.from(g),{raw:{width:n,height:i,channels:4}});switch(t){case"image/webp":s=await u.webp({quality:a}).toBuffer();break;case"image/png":s=await u.png().toBuffer();break;case"image/jpeg":s=await u.flatten({background:{r:255,g:255,b:255}}).jpeg({quality:a}).toBuffer();break;default:throw new Error(`Unsupported image type: ${t}`)}return s}};
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,4 +1,4 @@
1
- import { I, b, a, c } from "../../browser-awZxztMA.js";
1
+ import { I, b, a, c } from "../../browser-qfUHZxQ6.js";
2
2
  function toArrayBuffer(view) {
3
3
  const { buffer, byteOffset, byteLength } = view;
4
4
  if (buffer instanceof ArrayBuffer) {
@@ -5,8 +5,18 @@ export type { ImageConversionTypes } from '@embedpdf/models';
5
5
  */
6
6
  export type LazyImageData = () => PdfImage;
7
7
  /**
8
- * Function type for converting ImageData to Blob or other format
8
+ * Callable interface for converting ImageData to Blob or other format.
9
9
  * In browser: uses OffscreenCanvas
10
10
  * In Node.js: can use Sharp or other image processing libraries
11
+ *
12
+ * The optional `destroy()` method allows converters with resources (like worker pools)
13
+ * to clean up when the engine is destroyed.
11
14
  */
12
- export type ImageDataConverter<T = Blob> = (getImageData: LazyImageData, imageType?: ImageConversionTypes, imageQuality?: number) => Promise<T>;
15
+ export interface ImageDataConverter<T = Blob> {
16
+ (getImageData: LazyImageData, imageType?: ImageConversionTypes, imageQuality?: number): Promise<T>;
17
+ /**
18
+ * Optional cleanup method. Called when PdfEngine.destroy() is invoked.
19
+ * Converters with resources (e.g., worker pools) should implement this to release them.
20
+ */
21
+ destroy?: () => void;
22
+ }
@@ -5,6 +5,13 @@ export interface CacheConfig {
5
5
  pageTtl?: number;
6
6
  /** Maximum number of pages to keep in cache per document (default: 50) */
7
7
  maxPagesPerDocument?: number;
8
+ /**
9
+ * When true, pages are loaded with normalized rotation:
10
+ * - All coordinates (annotations, text, rendering) are in 0° space
11
+ * - The original rotation is preserved for reference
12
+ * @default false
13
+ */
14
+ normalizeRotation?: boolean;
8
15
  }
9
16
  export declare class PdfCache {
10
17
  private readonly pdfium;
@@ -13,7 +20,7 @@ export declare class PdfCache {
13
20
  private readonly config;
14
21
  constructor(pdfium: WrappedPdfiumModule, memoryManager: MemoryManager, config?: CacheConfig);
15
22
  /** Open (or re-use) a document */
16
- setDocument(id: string, filePtr: number, docPtr: number): void;
23
+ setDocument(id: string, filePtr: number, docPtr: number, normalizeRotation?: boolean): void;
17
24
  /** Retrieve the DocumentContext for a given PdfDocumentObject */
18
25
  getContext(docId: string): DocumentContext | undefined;
19
26
  /** Close & fully release a document and all its pages */
@@ -34,6 +41,7 @@ export declare class DocumentContext {
34
41
  readonly docPtr: number;
35
42
  private readonly memoryManager;
36
43
  private readonly pageCache;
44
+ readonly normalizeRotation: boolean;
37
45
  constructor(filePtr: number, docPtr: number, pdfium: WrappedPdfiumModule, memoryManager: MemoryManager, config: Required<CacheConfig>);
38
46
  /** Main accessor for pages */
39
47
  acquirePage(pageIdx: number): PageContext;
@@ -428,7 +428,7 @@ export declare class PdfiumNative implements IPdfiumExecutor {
428
428
  *
429
429
  * @private
430
430
  */
431
- addTextMarkupContent(page: PdfPageObject, pagePtr: number, annotationPtr: number, annotation: PdfHighlightAnnoObject | PdfUnderlineAnnoObject | PdfStrikeOutAnnoObject | PdfSquigglyAnnoObject): boolean;
431
+ addTextMarkupContent(doc: PdfDocumentObject, page: PdfPageObject, pagePtr: number, annotationPtr: number, annotation: PdfHighlightAnnoObject | PdfUnderlineAnnoObject | PdfStrikeOutAnnoObject | PdfSquigglyAnnoObject): boolean;
432
432
  /**
433
433
  * Add content to redact annotation
434
434
  * @param page - page info
@@ -442,6 +442,7 @@ export declare class PdfiumNative implements IPdfiumExecutor {
442
442
  private addRedactContent;
443
443
  /**
444
444
  * Add contents to stamp annotation
445
+ * @param doc - pdf document object
445
446
  * @param docPtr - pointer to pdf document object
446
447
  * @param page - page info
447
448
  * @param pagePtr - pointer to page object
@@ -452,9 +453,10 @@ export declare class PdfiumNative implements IPdfiumExecutor {
452
453
  *
453
454
  * @private
454
455
  */
455
- addStampContent(docPtr: number, page: PdfPageObject, pagePtr: number, annotationPtr: number, annotation: PdfStampAnnoObject, imageData?: ImageData): boolean;
456
+ addStampContent(doc: PdfDocumentObject, docPtr: number, page: PdfPageObject, pagePtr: number, annotationPtr: number, annotation: PdfStampAnnoObject, imageData?: ImageData): boolean;
456
457
  /**
457
458
  * Add image object to annotation
459
+ * @param doc - pdf document object
458
460
  * @param docPtr - pointer to pdf document object
459
461
  * @param page - page info
460
462
  * @param pagePtr - pointer to page object
@@ -465,7 +467,7 @@ export declare class PdfiumNative implements IPdfiumExecutor {
465
467
  *
466
468
  * @private
467
469
  */
468
- addImageObject(docPtr: number, page: PdfPageObject, pagePtr: number, annotationPtr: number, rect: Rect, imageData: ImageData): boolean;
470
+ addImageObject(doc: PdfDocumentObject, docPtr: number, page: PdfPageObject, pagePtr: number, annotationPtr: number, rect: Rect, imageData: ImageData): boolean;
469
471
  /**
470
472
  * Save document to array buffer
471
473
  * @param docPtr - pointer to pdf document
@@ -622,6 +624,7 @@ export declare class PdfiumNative implements IPdfiumExecutor {
622
624
  /**
623
625
  * Read page annotations
624
626
  *
627
+ * @param doc - pdf document object
625
628
  * @param ctx - document context
626
629
  * @param page - page info
627
630
  * @returns annotations on the pdf page
@@ -632,6 +635,7 @@ export declare class PdfiumNative implements IPdfiumExecutor {
632
635
  /**
633
636
  * Read page annotations without loading the page (raw approach)
634
637
  *
638
+ * @param doc - pdf document object
635
639
  * @param ctx - document context
636
640
  * @param page - page info
637
641
  * @returns annotations on the pdf page
@@ -652,6 +656,7 @@ export declare class PdfiumNative implements IPdfiumExecutor {
652
656
  /**
653
657
  * Read pdf annotation from pdf document
654
658
  *
659
+ * @param doc - pdf document object
655
660
  * @param docPtr - pointer to pdf document
656
661
  * @param page - page info
657
662
  * @param annotationPtr - pointer to pdf annotation
@@ -951,6 +956,7 @@ export declare class PdfiumNative implements IPdfiumExecutor {
951
956
  private setLineEndings;
952
957
  /**
953
958
  * Get the start and end points of a LINE / POLYLINE annot.
959
+ * @param doc - pdf document object
954
960
  * @param annotationPtr - pointer to an `FPDF_ANNOTATION`
955
961
  * @param page - logical page info object (`PdfPageObject`)
956
962
  * @returns `{ start, end }` or `undefined` when PDFium can't read them
@@ -959,6 +965,7 @@ export declare class PdfiumNative implements IPdfiumExecutor {
959
965
  /**
960
966
  * Set the two end‑points of a **Line** annotation
961
967
  * by writing a new /L array `[ x1 y1 x2 y2 ]`.
968
+ * @param doc - pdf document object
962
969
  * @param page - logical page info object (`PdfPageObject`)
963
970
  * @param annotPtr - pointer to the annotation whose line points are needed
964
971
  * @param start - start point
@@ -975,6 +982,7 @@ export declare class PdfiumNative implements IPdfiumExecutor {
975
982
  * This preserves the true shape for rotated / skewed text, whereas callers
976
983
  * that only need axis-aligned boxes can collapse each quad themselves.
977
984
  *
985
+ * @param doc - pdf document object
978
986
  * @param page - logical page info object (`PdfPageObject`)
979
987
  * @param annotationPtr - pointer to the annotation whose quads are needed
980
988
  * @returns Array of `Rect` objects (`[]` if the annotation has no quads)
@@ -985,6 +993,7 @@ export declare class PdfiumNative implements IPdfiumExecutor {
985
993
  /**
986
994
  * Set the quadrilaterals for a **Highlight / Underline / StrikeOut / Squiggly** markup annotation.
987
995
  *
996
+ * @param doc - pdf document object
988
997
  * @param page - logical page info object (`PdfPageObject`)
989
998
  * @param annotationPtr - pointer to the annotation whose quads are needed
990
999
  * @param rects - array of `Rect` objects (`[]` if the annotation has no quads)
@@ -1034,6 +1043,7 @@ export declare class PdfiumNative implements IPdfiumExecutor {
1034
1043
  private allocFSQuadsBufferFromRects;
1035
1044
  /**
1036
1045
  * Read ink list from annotation
1046
+ * @param doc - pdf document object
1037
1047
  * @param page - logical page info object (`PdfPageObject`)
1038
1048
  * @param pagePtr - pointer to the page
1039
1049
  * @param annotationPtr - pointer to the annotation whose ink list is needed
@@ -1042,6 +1052,7 @@ export declare class PdfiumNative implements IPdfiumExecutor {
1042
1052
  private getInkList;
1043
1053
  /**
1044
1054
  * Add ink list to annotation
1055
+ * @param doc - pdf document object
1045
1056
  * @param page - logical page info object (`PdfPageObject`)
1046
1057
  * @param pagePtr - pointer to the page
1047
1058
  * @param annotationPtr - pointer to the annotation whose ink list is needed
@@ -1453,6 +1464,7 @@ export declare class PdfiumNative implements IPdfiumExecutor {
1453
1464
  private setAttachmentString;
1454
1465
  /**
1455
1466
  * Read vertices of pdf annotation
1467
+ * @param doc - pdf document object
1456
1468
  * @param page - pdf page infor
1457
1469
  * @param annotationPtr - pointer to pdf annotation
1458
1470
  * @returns vertices of pdf annotation
@@ -1463,6 +1475,7 @@ export declare class PdfiumNative implements IPdfiumExecutor {
1463
1475
  /**
1464
1476
  * Sync the vertices of a polygon or polyline annotation.
1465
1477
  *
1478
+ * @param doc - pdf document object
1466
1479
  * @param page - pdf page infor
1467
1480
  * @param annotPtr - pointer to pdf annotation
1468
1481
  * @param vertices - the vertices to be set
@@ -1548,6 +1561,7 @@ export declare class PdfiumNative implements IPdfiumExecutor {
1548
1561
  private readPdfAttachment;
1549
1562
  /**
1550
1563
  * Convert coordinate of point from device coordinate to page coordinate
1564
+ * @param doc - pdf document object
1551
1565
  * @param page - pdf page infor
1552
1566
  * @param position - position of point
1553
1567
  * @returns converted position
@@ -1557,6 +1571,7 @@ export declare class PdfiumNative implements IPdfiumExecutor {
1557
1571
  private convertDevicePointToPagePoint;
1558
1572
  /**
1559
1573
  * Convert coordinate of point from page coordinate to device coordinate
1574
+ * @param doc - pdf document object
1560
1575
  * @param page - pdf page infor
1561
1576
  * @param position - position of point
1562
1577
  * @returns converted position
@@ -1566,6 +1581,7 @@ export declare class PdfiumNative implements IPdfiumExecutor {
1566
1581
  private convertPagePointToDevicePoint;
1567
1582
  /**
1568
1583
  * Convert coordinate of rectangle from page coordinate to device coordinate
1584
+ * @param doc - pdf document object
1569
1585
  * @param page - pdf page infor
1570
1586
  * @param pagePtr - pointer to pdf page object
1571
1587
  * @param pageRect - rectangle that needs to be converted
@@ -1604,6 +1620,7 @@ export declare class PdfiumNative implements IPdfiumExecutor {
1604
1620
  private setPageAnnoAppearanceStream;
1605
1621
  /**
1606
1622
  * Set the rect of specified annotation
1623
+ * @param doc - pdf document object
1607
1624
  * @param page - page info that the annotation is belonged to
1608
1625
  * @param annotationPtr - pointer to annotation object
1609
1626
  * @param rect - target rectangle
@@ -1622,6 +1639,7 @@ export declare class PdfiumNative implements IPdfiumExecutor {
1622
1639
  private readPageAnnoRect;
1623
1640
  /**
1624
1641
  * Get highlight rects for a specific character range (for search highlighting)
1642
+ * @param doc - pdf document object
1625
1643
  * @param page - pdf page info
1626
1644
  * @param pagePtr - pointer to pdf page
1627
1645
  * @param textPagePtr - pointer to pdf text page
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../direct-engine-Byh1BweU.cjs"),t=require("../../browser-C6QEa8uk.cjs"),r=require("../../pdf-engine-BXctylEz.cjs"),n=require("@embedpdf/models"),o=require("@embedpdf/fonts-jp"),s=require("@embedpdf/fonts-kr"),a=require("@embedpdf/fonts-sc"),d=require("@embedpdf/fonts-tc"),i=require("@embedpdf/fonts-arabic"),f=require("@embedpdf/fonts-hebrew"),p=require("@embedpdf/fonts-latin"),m=require("./web/worker-engine.cjs");function c(e="latest"){return{jp:`https://cdn.jsdelivr.net/npm/@embedpdf/fonts-jp@${e}/fonts`,kr:`https://cdn.jsdelivr.net/npm/@embedpdf/fonts-kr@${e}/fonts`,sc:`https://cdn.jsdelivr.net/npm/@embedpdf/fonts-sc@${e}/fonts`,tc:`https://cdn.jsdelivr.net/npm/@embedpdf/fonts-tc@${e}/fonts`,arabic:`https://cdn.jsdelivr.net/npm/@embedpdf/fonts-arabic@${e}/fonts`,hebrew:`https://cdn.jsdelivr.net/npm/@embedpdf/fonts-hebrew@${e}/fonts`,latin:`https://cdn.jsdelivr.net/npm/@embedpdf/fonts-latin@${e}/fonts`}}function u(e,t){return e.map(e=>({url:`${t}/${e.file}`,weight:e.weight,italic:e.italic}))}function b(e){return{fonts:{[n.FontCharset.SHIFTJIS]:u(o.fonts,e.jp),[n.FontCharset.HANGEUL]:u(s.fonts,e.kr),[n.FontCharset.GB2312]:u(a.fonts,e.sc),[n.FontCharset.CHINESEBIG5]:u(d.fonts,e.tc),[n.FontCharset.ARABIC]:u(i.fonts,e.arabic),[n.FontCharset.HEBREW]:u(f.fonts,e.hebrew),[n.FontCharset.CYRILLIC]:u(p.fonts,e.latin),[n.FontCharset.GREEK]:u(p.fonts,e.latin),[n.FontCharset.VIETNAMESE]:u(p.fonts,e.latin)}}}const l=c("latest"),C=b(l);exports.BitmapFormat=e.BitmapFormat,exports.FontFallbackManager=e.FontFallbackManager,exports.PdfiumErrorCode=e.PdfiumErrorCode,exports.PdfiumNative=e.PdfiumNative,exports.RenderFlag=e.RenderFlag,exports.computeFormDrawParams=e.computeFormDrawParams,exports.createNodeFontLoader=e.createNodeFontLoader,exports.createPdfiumDirectEngine=e.createPdfiumEngine,exports.isValidCustomKey=e.isValidCustomKey,exports.readArrayBuffer=e.readArrayBuffer,exports.readString=e.readString,exports.ImageConverterError=t.ImageConverterError,exports.browserImageDataToBlobConverter=t.browserImageDataToBlobConverter,exports.createHybridImageConverter=t.createHybridImageConverter,exports.createWorkerPoolImageConverter=t.createWorkerPoolImageConverter,exports.PdfEngine=r.PdfEngine,Object.defineProperty(exports,"FontCharset",{enumerable:!0,get:()=>n.FontCharset}),exports.createPdfiumWorkerEngine=m.createPdfiumEngine,exports.DEFAULT_PDFIUM_WASM_URL="https://cdn.jsdelivr.net/npm/@embedpdf/pdfium@2.4.0/dist/pdfium.wasm",exports.FONT_CDN_URLS=l,exports.cdnFontConfig=C,exports.createCdnFontConfig=function(e="latest"){return b(c(e))};
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../direct-engine-BtiOvMLP.cjs"),t=require("../../browser-13mzox-R.cjs"),r=require("../../pdf-engine-BmrecQLq.cjs"),n=require("@embedpdf/models"),o=require("@embedpdf/fonts-jp"),s=require("@embedpdf/fonts-kr"),a=require("@embedpdf/fonts-sc"),d=require("@embedpdf/fonts-tc"),i=require("@embedpdf/fonts-arabic"),f=require("@embedpdf/fonts-hebrew"),p=require("@embedpdf/fonts-latin"),m=require("./web/worker-engine.cjs");function c(e="latest"){return{jp:`https://cdn.jsdelivr.net/npm/@embedpdf/fonts-jp@${e}/fonts`,kr:`https://cdn.jsdelivr.net/npm/@embedpdf/fonts-kr@${e}/fonts`,sc:`https://cdn.jsdelivr.net/npm/@embedpdf/fonts-sc@${e}/fonts`,tc:`https://cdn.jsdelivr.net/npm/@embedpdf/fonts-tc@${e}/fonts`,arabic:`https://cdn.jsdelivr.net/npm/@embedpdf/fonts-arabic@${e}/fonts`,hebrew:`https://cdn.jsdelivr.net/npm/@embedpdf/fonts-hebrew@${e}/fonts`,latin:`https://cdn.jsdelivr.net/npm/@embedpdf/fonts-latin@${e}/fonts`}}function u(e,t){return e.map(e=>({url:`${t}/${e.file}`,weight:e.weight,italic:e.italic}))}function b(e){return{fonts:{[n.FontCharset.SHIFTJIS]:u(o.fonts,e.jp),[n.FontCharset.HANGEUL]:u(s.fonts,e.kr),[n.FontCharset.GB2312]:u(a.fonts,e.sc),[n.FontCharset.CHINESEBIG5]:u(d.fonts,e.tc),[n.FontCharset.ARABIC]:u(i.fonts,e.arabic),[n.FontCharset.HEBREW]:u(f.fonts,e.hebrew),[n.FontCharset.CYRILLIC]:u(p.fonts,e.latin),[n.FontCharset.GREEK]:u(p.fonts,e.latin),[n.FontCharset.VIETNAMESE]:u(p.fonts,e.latin)}}}const l=c("latest"),C=b(l);exports.BitmapFormat=e.BitmapFormat,exports.FontFallbackManager=e.FontFallbackManager,exports.PdfiumErrorCode=e.PdfiumErrorCode,exports.PdfiumNative=e.PdfiumNative,exports.RenderFlag=e.RenderFlag,exports.computeFormDrawParams=e.computeFormDrawParams,exports.createNodeFontLoader=e.createNodeFontLoader,exports.createPdfiumDirectEngine=e.createPdfiumEngine,exports.isValidCustomKey=e.isValidCustomKey,exports.readArrayBuffer=e.readArrayBuffer,exports.readString=e.readString,exports.ImageConverterError=t.ImageConverterError,exports.browserImageDataToBlobConverter=t.browserImageDataToBlobConverter,exports.createHybridImageConverter=t.createHybridImageConverter,exports.createWorkerPoolImageConverter=t.createWorkerPoolImageConverter,exports.PdfEngine=r.PdfEngine,Object.defineProperty(exports,"FontCharset",{enumerable:!0,get:()=>n.FontCharset}),exports.createPdfiumWorkerEngine=m.createPdfiumEngine,exports.DEFAULT_PDFIUM_WASM_URL="https://cdn.jsdelivr.net/npm/@embedpdf/pdfium@2.5.0/dist/pdfium.wasm",exports.FONT_CDN_URLS=l,exports.cdnFontConfig=C,exports.createCdnFontConfig=function(e="latest"){return b(c(e))};
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,6 +1,6 @@
1
- import { B, F, P, a, R, d, e, c, i, b, r } from "../../direct-engine-6BoAmGsC.js";
2
- import { I, b as b2, a as a2, c as c2 } from "../../browser-awZxztMA.js";
3
- import { P as P2 } from "../../pdf-engine-D_Dua_6w.js";
1
+ import { B, F, P, a, R, d, e, c, i, b, r } from "../../direct-engine-D8HGqcIt.js";
2
+ import { I, b as b2, a as a2, c as c2 } from "../../browser-qfUHZxQ6.js";
3
+ import { P as P2 } from "../../pdf-engine-aJNoNMbt.js";
4
4
  import { FontCharset } from "@embedpdf/models";
5
5
  import { FontCharset as FontCharset2 } from "@embedpdf/models";
6
6
  import { fonts as fonts$6 } from "@embedpdf/fonts-jp";
@@ -49,7 +49,7 @@ const cdnFontConfig = buildCdnFontConfig(FONT_CDN_URLS);
49
49
  function createCdnFontConfig(version = "latest") {
50
50
  return buildCdnFontConfig(buildCdnUrls(version));
51
51
  }
52
- const DEFAULT_PDFIUM_WASM_URL = "https://cdn.jsdelivr.net/npm/@embedpdf/pdfium@2.4.0/dist/pdfium.wasm";
52
+ const DEFAULT_PDFIUM_WASM_URL = "https://cdn.jsdelivr.net/npm/@embedpdf/pdfium@2.5.0/dist/pdfium.wasm";
53
53
  export {
54
54
  B as BitmapFormat,
55
55
  DEFAULT_PDFIUM_WASM_URL,
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),require("@embedpdf/pdfium");const e=require("../../../direct-engine-Byh1BweU.cjs");require("../../../pdf-engine-BXctylEz.cjs"),require("../../../browser-C6QEa8uk.cjs"),exports.createPdfiumEngine=e.createPdfiumEngine;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),require("@embedpdf/pdfium");const e=require("../../../direct-engine-BtiOvMLP.cjs");require("../../../pdf-engine-BmrecQLq.cjs"),require("../../../browser-13mzox-R.cjs"),exports.createPdfiumEngine=e.createPdfiumEngine;
2
2
  //# sourceMappingURL=direct-engine.cjs.map
@@ -1,7 +1,7 @@
1
1
  import "@embedpdf/pdfium";
2
- import { c } from "../../../direct-engine-6BoAmGsC.js";
3
- import "../../../pdf-engine-D_Dua_6w.js";
4
- import "../../../browser-awZxztMA.js";
2
+ import { c } from "../../../direct-engine-D8HGqcIt.js";
3
+ import "../../../pdf-engine-aJNoNMbt.js";
4
+ import "../../../browser-qfUHZxQ6.js";
5
5
  export {
6
6
  c as createPdfiumEngine
7
7
  };