@embedpdf/engines 2.0.2 → 2.1.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/dist/direct-engine-BeZ18SKz.cjs +2 -0
- package/dist/direct-engine-BeZ18SKz.cjs.map +1 -0
- package/dist/{direct-engine-CHrj3o_a.js → direct-engine-CB3k-o0I.js} +509 -9
- package/dist/direct-engine-CB3k-o0I.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +11 -4
- package/dist/index.js.map +1 -1
- package/dist/lib/orchestrator/remote-executor.d.ts +5 -0
- package/dist/lib/pdfium/cdn-fonts.d.ts +50 -0
- package/dist/lib/pdfium/engine.d.ts +17 -2
- package/dist/lib/pdfium/font-fallback.d.ts +207 -0
- package/dist/lib/pdfium/index.cjs +1 -1
- package/dist/lib/pdfium/index.cjs.map +1 -1
- package/dist/lib/pdfium/index.d.ts +2 -0
- package/dist/lib/pdfium/index.js +55 -2
- package/dist/lib/pdfium/index.js.map +1 -1
- package/dist/lib/pdfium/runner.d.ts +5 -1
- package/dist/lib/pdfium/web/direct-engine.cjs +1 -1
- package/dist/lib/pdfium/web/direct-engine.d.ts +8 -0
- package/dist/lib/pdfium/web/direct-engine.js +1 -1
- 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.d.ts +8 -0
- package/dist/lib/pdfium/web/worker-engine.js +5 -4
- package/dist/lib/pdfium/web/worker-engine.js.map +1 -1
- package/dist/preact/index.cjs +1 -1
- package/dist/preact/index.cjs.map +1 -1
- package/dist/preact/index.js +14 -4
- 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 +14 -4
- package/dist/react/index.js.map +1 -1
- package/dist/shared-preact/hooks/use-pdfium-engine.d.ts +5 -0
- package/dist/shared-react/hooks/use-pdfium-engine.d.ts +5 -0
- package/dist/svelte/hooks/use-pdfium-engine.svelte.d.ts +5 -0
- package/dist/svelte/index.cjs +1 -1
- package/dist/svelte/index.cjs.map +1 -1
- package/dist/svelte/index.js +8 -3
- package/dist/svelte/index.js.map +1 -1
- package/dist/vue/composables/use-pdfium-engine.d.ts +5 -0
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.js +4 -4
- package/dist/vue/index.js.map +1 -1
- package/package.json +10 -3
- package/dist/direct-engine-B7b7cTsH.cjs +0 -2
- package/dist/direct-engine-B7b7cTsH.cjs.map +0 -1
- package/dist/direct-engine-CHrj3o_a.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-
|
|
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-BeZ18SKz.cjs"),o=require("./lib/pdfium/web/worker-engine.cjs"),s=require("./browser-C6QEa8uk.cjs"),n=require("./pdf-engine-C3JeKij1.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"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;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.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/lib/webworker/runner.ts"],"sourcesContent":["import {\n Logger,\n NoopLogger,\n PdfEngine,\n PdfEngineError,\n PdfEngineMethodArgs,\n PdfEngineMethodName,\n PdfEngineMethodReturnType,\n PdfErrorCode,\n TaskReturn,\n} from '@embedpdf/models';\n\n/**\n * Request body that represent method calls of PdfEngine, it contains the\n * method name and arguments\n */\nexport type PdfEngineMethodRequestBody = {\n [P in PdfEngineMethodName]: {\n name: P;\n args: PdfEngineMethodArgs<P>;\n };\n}[PdfEngineMethodName];\n\n/**\n * Request body that represent method calls of PdfEngine, it contains the\n * method name and arguments\n */\nexport type SpecificExecuteRequest<M extends PdfEngineMethodName> = {\n id: string;\n type: 'ExecuteRequest';\n data: {\n name: M;\n args: PdfEngineMethodArgs<M>;\n };\n};\n\n/**\n * Response body that represent return value of PdfEngine\n */\nexport type PdfEngineMethodResponseBody = {\n [P in PdfEngineMethodName]: TaskReturn<PdfEngineMethodReturnType<P>>;\n}[PdfEngineMethodName];\n\n/**\n * Request that abort the specified task\n */\nexport interface AbortRequest {\n /**\n * message id\n */\n id: string;\n /**\n * request type\n */\n type: 'AbortRequest';\n}\n/**\n * Request that execute pdf engine method\n */\nexport interface ExecuteRequest {\n /**\n * message id\n */\n id: string;\n /**\n * request type\n */\n type: 'ExecuteRequest';\n /**\n * request body\n */\n data: PdfEngineMethodRequestBody;\n}\n/**\n * Response that execute pdf engine method\n */\nexport interface ExecuteResponse {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ExecuteResponse';\n /**\n * response body\n */\n data: PdfEngineMethodResponseBody;\n}\n\n/**\n * Response that indicate progress of the task\n */\nexport interface ExecuteProgress<T = unknown> {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ExecuteProgress';\n /**\n * response body\n */\n data: T;\n}\n\n/**\n * Response that indicate engine is ready\n */\nexport interface ReadyResponse {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ReadyResponse';\n}\n\n/**\n * Request type\n */\nexport type Request = ExecuteRequest | AbortRequest;\n/**\n * Response type\n */\nexport type Response = ExecuteResponse | ReadyResponse | ExecuteProgress;\n\nconst LOG_SOURCE = 'WebWorkerEngineRunner';\nconst LOG_CATEGORY = 'Engine';\n\n/**\n * Pdf engine runner, it will execute pdf engine based on the request it received and\n * send back the response with post message\n */\nexport class EngineRunner {\n engine: PdfEngine | undefined;\n\n /**\n * Create instance of EngineRunnder\n * @param logger - logger instance\n */\n constructor(public logger: Logger = new NoopLogger()) {}\n\n /**\n * Listening on post message\n */\n listen() {\n self.onmessage = (evt: MessageEvent<Request>) => {\n return this.handle(evt);\n };\n }\n\n /**\n * Handle post message\n */\n handle(evt: MessageEvent<Request>) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'webworker receive message event: ', evt.data);\n try {\n const request = evt.data as Request;\n switch (request.type) {\n case 'ExecuteRequest':\n this.execute(request);\n break;\n }\n } catch (e) {\n this.logger.info(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'webworker met error when processing message event:',\n e,\n );\n }\n }\n\n /**\n * Send the ready response when pdf engine is ready\n * @returns\n *\n * @protected\n */\n ready() {\n this.listen();\n\n this.respond({\n id: '0',\n type: 'ReadyResponse',\n });\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner is ready');\n }\n\n /**\n * Execute the request\n * @param request - request that represent the pdf engine call\n * @returns\n *\n * @protected\n */\n execute = async (request: ExecuteRequest) => {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner start exeucte request');\n if (!this.engine) {\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotReady,\n message: 'engine has not started yet',\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n const engine = this.engine;\n const { name, args } = request.data;\n if (!engine[name]) {\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotSupport,\n message: `engine method ${name} is not supported yet`,\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n let task: PdfEngineMethodReturnType<typeof name>;\n switch (name) {\n case 'isSupport':\n task = engine.isSupport!(...args);\n break;\n case 'destroy':\n task = engine.destroy!(...args);\n break;\n case 'openDocumentUrl':\n task = engine.openDocumentUrl!(...args);\n break;\n case 'openDocumentBuffer':\n task = engine.openDocumentBuffer!(...args);\n break;\n case 'getDocPermissions':\n task = engine.getDocPermissions!(...args);\n break;\n case 'getDocUserPermissions':\n task = engine.getDocUserPermissions!(...args);\n break;\n case 'getMetadata':\n task = engine.getMetadata!(...args);\n break;\n case 'setMetadata':\n task = engine.setMetadata!(...args);\n break;\n case 'getBookmarks':\n task = engine.getBookmarks!(...args);\n break;\n case 'setBookmarks':\n task = engine.setBookmarks!(...args);\n break;\n case 'deleteBookmarks':\n task = engine.deleteBookmarks!(...args);\n break;\n case 'getSignatures':\n task = engine.getSignatures!(...args);\n break;\n case 'renderPage':\n task = engine.renderPage!(...args);\n break;\n case 'renderPageRect':\n task = engine.renderPageRect!(...args);\n break;\n case 'renderPageAnnotation':\n task = engine.renderPageAnnotation!(...args);\n break;\n case 'renderThumbnail':\n task = engine.renderThumbnail!(...args);\n break;\n case 'getAllAnnotations':\n task = engine.getAllAnnotations!(...args);\n break;\n case 'getPageAnnotations':\n task = engine.getPageAnnotations!(...args);\n break;\n case 'createPageAnnotation':\n task = engine.createPageAnnotation!(...args);\n break;\n case 'updatePageAnnotation':\n task = engine.updatePageAnnotation!(...args);\n break;\n case 'removePageAnnotation':\n task = engine.removePageAnnotation!(...args);\n break;\n case 'getPageTextRects':\n task = engine.getPageTextRects!(...args);\n break;\n case 'searchAllPages':\n task = engine.searchAllPages!(...args);\n break;\n case 'closeDocument':\n task = engine.closeDocument!(...args);\n break;\n case 'closeAllDocuments':\n task = engine.closeAllDocuments!(...args);\n break;\n case 'saveAsCopy':\n task = engine.saveAsCopy!(...args);\n break;\n case 'getAttachments':\n task = engine.getAttachments!(...args);\n break;\n case 'addAttachment':\n task = engine.addAttachment!(...args);\n break;\n case 'removeAttachment':\n task = engine.removeAttachment!(...args);\n break;\n case 'readAttachmentContent':\n task = engine.readAttachmentContent!(...args);\n break;\n case 'setFormFieldValue':\n task = engine.setFormFieldValue!(...args);\n break;\n case 'flattenPage':\n task = engine.flattenPage!(...args);\n break;\n case 'extractPages':\n task = engine.extractPages!(...args);\n break;\n case 'extractText':\n task = engine.extractText!(...args);\n break;\n case 'redactTextInRects':\n task = engine.redactTextInRects!(...args);\n break;\n case 'getTextSlices':\n task = engine.getTextSlices!(...args);\n break;\n case 'getPageGlyphs':\n task = engine.getPageGlyphs!(...args);\n break;\n case 'getPageGeometry':\n task = engine.getPageGeometry!(...args);\n break;\n case 'merge':\n task = engine.merge!(...args);\n break;\n case 'mergePages':\n task = engine.mergePages!(...args);\n break;\n case 'preparePrintDocument':\n task = engine.preparePrintDocument!(...args);\n break;\n default:\n // This should never be reached due to the earlier check, but provides exhaustiveness\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotSupport,\n message: `engine method ${name} is not supported`,\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n task.onProgress((progress) => {\n const response: ExecuteProgress = {\n id: request.id,\n type: 'ExecuteProgress',\n data: progress,\n };\n this.respond(response);\n });\n\n task.wait(\n (result) => {\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'result',\n value: result,\n },\n };\n this.respond(response);\n },\n (error) => {\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n },\n );\n };\n\n /**\n * Send back the response\n * @param response - response that needs sent back\n *\n * @protected\n */\n respond(response: Response) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner respond: ', response);\n self.postMessage(response);\n }\n}\n"],"names":["LOG_SOURCE","LOG_CATEGORY","constructor","logger","NoopLogger","this","execute","async","request","debug","engine","error","type","reason","code","PdfErrorCode","NotReady","message","response","id","data","value","respond","name","args","NotSupport","task","isSupport","destroy","openDocumentUrl","openDocumentBuffer","getDocPermissions","getDocUserPermissions","getMetadata","setMetadata","getBookmarks","setBookmarks","deleteBookmarks","getSignatures","renderPage","renderPageRect","renderPageAnnotation","renderThumbnail","getAllAnnotations","getPageAnnotations","createPageAnnotation","updatePageAnnotation","removePageAnnotation","getPageTextRects","searchAllPages","closeDocument","closeAllDocuments","saveAsCopy","getAttachments","addAttachment","removeAttachment","readAttachmentContent","setFormFieldValue","flattenPage","extractPages","extractText","redactTextInRects","getTextSlices","getPageGlyphs","getPageGeometry","merge","mergePages","preparePrintDocument","onProgress","progress","wait","result","listen","self","onmessage","evt","handle","e","info","ready","postMessage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/lib/webworker/runner.ts"],"sourcesContent":["import {\n Logger,\n NoopLogger,\n PdfEngine,\n PdfEngineError,\n PdfEngineMethodArgs,\n PdfEngineMethodName,\n PdfEngineMethodReturnType,\n PdfErrorCode,\n TaskReturn,\n} from '@embedpdf/models';\n\n/**\n * Request body that represent method calls of PdfEngine, it contains the\n * method name and arguments\n */\nexport type PdfEngineMethodRequestBody = {\n [P in PdfEngineMethodName]: {\n name: P;\n args: PdfEngineMethodArgs<P>;\n };\n}[PdfEngineMethodName];\n\n/**\n * Request body that represent method calls of PdfEngine, it contains the\n * method name and arguments\n */\nexport type SpecificExecuteRequest<M extends PdfEngineMethodName> = {\n id: string;\n type: 'ExecuteRequest';\n data: {\n name: M;\n args: PdfEngineMethodArgs<M>;\n };\n};\n\n/**\n * Response body that represent return value of PdfEngine\n */\nexport type PdfEngineMethodResponseBody = {\n [P in PdfEngineMethodName]: TaskReturn<PdfEngineMethodReturnType<P>>;\n}[PdfEngineMethodName];\n\n/**\n * Request that abort the specified task\n */\nexport interface AbortRequest {\n /**\n * message id\n */\n id: string;\n /**\n * request type\n */\n type: 'AbortRequest';\n}\n/**\n * Request that execute pdf engine method\n */\nexport interface ExecuteRequest {\n /**\n * message id\n */\n id: string;\n /**\n * request type\n */\n type: 'ExecuteRequest';\n /**\n * request body\n */\n data: PdfEngineMethodRequestBody;\n}\n/**\n * Response that execute pdf engine method\n */\nexport interface ExecuteResponse {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ExecuteResponse';\n /**\n * response body\n */\n data: PdfEngineMethodResponseBody;\n}\n\n/**\n * Response that indicate progress of the task\n */\nexport interface ExecuteProgress<T = unknown> {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ExecuteProgress';\n /**\n * response body\n */\n data: T;\n}\n\n/**\n * Response that indicate engine is ready\n */\nexport interface ReadyResponse {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ReadyResponse';\n}\n\n/**\n * Request type\n */\nexport type Request = ExecuteRequest | AbortRequest;\n/**\n * Response type\n */\nexport type Response = ExecuteResponse | ReadyResponse | ExecuteProgress;\n\nconst LOG_SOURCE = 'WebWorkerEngineRunner';\nconst LOG_CATEGORY = 'Engine';\n\n/**\n * Pdf engine runner, it will execute pdf engine based on the request it received and\n * send back the response with post message\n */\nexport class EngineRunner {\n engine: PdfEngine | undefined;\n\n /**\n * Create instance of EngineRunnder\n * @param logger - logger instance\n */\n constructor(public logger: Logger = new NoopLogger()) {}\n\n /**\n * Listening on post message\n */\n listen() {\n self.onmessage = (evt: MessageEvent<Request>) => {\n return this.handle(evt);\n };\n }\n\n /**\n * Handle post message\n */\n handle(evt: MessageEvent<Request>) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'webworker receive message event: ', evt.data);\n try {\n const request = evt.data as Request;\n switch (request.type) {\n case 'ExecuteRequest':\n this.execute(request);\n break;\n }\n } catch (e) {\n this.logger.info(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'webworker met error when processing message event:',\n e,\n );\n }\n }\n\n /**\n * Send the ready response when pdf engine is ready\n * @returns\n *\n * @protected\n */\n ready() {\n this.listen();\n\n this.respond({\n id: '0',\n type: 'ReadyResponse',\n });\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner is ready');\n }\n\n /**\n * Execute the request\n * @param request - request that represent the pdf engine call\n * @returns\n *\n * @protected\n */\n execute = async (request: ExecuteRequest) => {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner start exeucte request');\n if (!this.engine) {\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotReady,\n message: 'engine has not started yet',\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n const engine = this.engine;\n const { name, args } = request.data;\n if (!engine[name]) {\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotSupport,\n message: `engine method ${name} is not supported yet`,\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n let task: PdfEngineMethodReturnType<typeof name>;\n switch (name) {\n case 'isSupport':\n task = engine.isSupport!(...args);\n break;\n case 'destroy':\n task = engine.destroy!(...args);\n break;\n case 'openDocumentUrl':\n task = engine.openDocumentUrl!(...args);\n break;\n case 'openDocumentBuffer':\n task = engine.openDocumentBuffer!(...args);\n break;\n case 'getDocPermissions':\n task = engine.getDocPermissions!(...args);\n break;\n case 'getDocUserPermissions':\n task = engine.getDocUserPermissions!(...args);\n break;\n case 'getMetadata':\n task = engine.getMetadata!(...args);\n break;\n case 'setMetadata':\n task = engine.setMetadata!(...args);\n break;\n case 'getBookmarks':\n task = engine.getBookmarks!(...args);\n break;\n case 'setBookmarks':\n task = engine.setBookmarks!(...args);\n break;\n case 'deleteBookmarks':\n task = engine.deleteBookmarks!(...args);\n break;\n case 'getSignatures':\n task = engine.getSignatures!(...args);\n break;\n case 'renderPage':\n task = engine.renderPage!(...args);\n break;\n case 'renderPageRect':\n task = engine.renderPageRect!(...args);\n break;\n case 'renderPageAnnotation':\n task = engine.renderPageAnnotation!(...args);\n break;\n case 'renderThumbnail':\n task = engine.renderThumbnail!(...args);\n break;\n case 'getAllAnnotations':\n task = engine.getAllAnnotations!(...args);\n break;\n case 'getPageAnnotations':\n task = engine.getPageAnnotations!(...args);\n break;\n case 'createPageAnnotation':\n task = engine.createPageAnnotation!(...args);\n break;\n case 'updatePageAnnotation':\n task = engine.updatePageAnnotation!(...args);\n break;\n case 'removePageAnnotation':\n task = engine.removePageAnnotation!(...args);\n break;\n case 'getPageTextRects':\n task = engine.getPageTextRects!(...args);\n break;\n case 'searchAllPages':\n task = engine.searchAllPages!(...args);\n break;\n case 'closeDocument':\n task = engine.closeDocument!(...args);\n break;\n case 'closeAllDocuments':\n task = engine.closeAllDocuments!(...args);\n break;\n case 'saveAsCopy':\n task = engine.saveAsCopy!(...args);\n break;\n case 'getAttachments':\n task = engine.getAttachments!(...args);\n break;\n case 'addAttachment':\n task = engine.addAttachment!(...args);\n break;\n case 'removeAttachment':\n task = engine.removeAttachment!(...args);\n break;\n case 'readAttachmentContent':\n task = engine.readAttachmentContent!(...args);\n break;\n case 'setFormFieldValue':\n task = engine.setFormFieldValue!(...args);\n break;\n case 'flattenPage':\n task = engine.flattenPage!(...args);\n break;\n case 'extractPages':\n task = engine.extractPages!(...args);\n break;\n case 'extractText':\n task = engine.extractText!(...args);\n break;\n case 'redactTextInRects':\n task = engine.redactTextInRects!(...args);\n break;\n case 'getTextSlices':\n task = engine.getTextSlices!(...args);\n break;\n case 'getPageGlyphs':\n task = engine.getPageGlyphs!(...args);\n break;\n case 'getPageGeometry':\n task = engine.getPageGeometry!(...args);\n break;\n case 'merge':\n task = engine.merge!(...args);\n break;\n case 'mergePages':\n task = engine.mergePages!(...args);\n break;\n case 'preparePrintDocument':\n task = engine.preparePrintDocument!(...args);\n break;\n default:\n // This should never be reached due to the earlier check, but provides exhaustiveness\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotSupport,\n message: `engine method ${name} is not supported`,\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n task.onProgress((progress) => {\n const response: ExecuteProgress = {\n id: request.id,\n type: 'ExecuteProgress',\n data: progress,\n };\n this.respond(response);\n });\n\n task.wait(\n (result) => {\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'result',\n value: result,\n },\n };\n this.respond(response);\n },\n (error) => {\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n },\n );\n };\n\n /**\n * Send back the response\n * @param response - response that needs sent back\n *\n * @protected\n */\n respond(response: Response) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner respond: ', response);\n self.postMessage(response);\n }\n}\n"],"names":["LOG_SOURCE","LOG_CATEGORY","constructor","logger","NoopLogger","this","execute","async","request","debug","engine","error","type","reason","code","PdfErrorCode","NotReady","message","response","id","data","value","respond","name","args","NotSupport","task","isSupport","destroy","openDocumentUrl","openDocumentBuffer","getDocPermissions","getDocUserPermissions","getMetadata","setMetadata","getBookmarks","setBookmarks","deleteBookmarks","getSignatures","renderPage","renderPageRect","renderPageAnnotation","renderThumbnail","getAllAnnotations","getPageAnnotations","createPageAnnotation","updatePageAnnotation","removePageAnnotation","getPageTextRects","searchAllPages","closeDocument","closeAllDocuments","saveAsCopy","getAttachments","addAttachment","removeAttachment","readAttachmentContent","setFormFieldValue","flattenPage","extractPages","extractText","redactTextInRects","getTextSlices","getPageGlyphs","getPageGeometry","merge","mergePages","preparePrintDocument","onProgress","progress","wait","result","listen","self","onmessage","evt","handle","e","info","ready","postMessage"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { DEFAULT_PDFIUM_WASM_URL } from "./lib/pdfium/index.js";
|
|
1
|
+
import { DEFAULT_PDFIUM_WASM_URL, FONT_CDN_URLS, cdnFontConfig, createCdnFontConfig } from "./lib/pdfium/index.js";
|
|
2
2
|
import { WebWorkerEngine, WorkerTask } from "./lib/webworker/engine.js";
|
|
3
3
|
import { NoopLogger, PdfErrorCode } from "@embedpdf/models";
|
|
4
|
-
import {
|
|
4
|
+
import { FontCharset } from "@embedpdf/models";
|
|
5
|
+
import { B, F, P, a, R, d, e, c, i, b, r } from "./direct-engine-CB3k-o0I.js";
|
|
5
6
|
import { createPdfiumEngine } from "./lib/pdfium/web/worker-engine.js";
|
|
6
7
|
import { I, b as b2, a as a2, c as c2 } from "./browser-awZxztMA.js";
|
|
7
8
|
import { P as P2 } from "./pdf-engine-BVNF_Yo9.js";
|
|
@@ -254,12 +255,12 @@ class EngineRunner {
|
|
|
254
255
|
this.execute(request);
|
|
255
256
|
break;
|
|
256
257
|
}
|
|
257
|
-
} catch (
|
|
258
|
+
} catch (e2) {
|
|
258
259
|
this.logger.info(
|
|
259
260
|
LOG_SOURCE,
|
|
260
261
|
LOG_CATEGORY,
|
|
261
262
|
"webworker met error when processing message event:",
|
|
262
|
-
|
|
263
|
+
e2
|
|
263
264
|
);
|
|
264
265
|
}
|
|
265
266
|
}
|
|
@@ -292,6 +293,9 @@ export {
|
|
|
292
293
|
B as BitmapFormat,
|
|
293
294
|
DEFAULT_PDFIUM_WASM_URL,
|
|
294
295
|
EngineRunner,
|
|
296
|
+
FONT_CDN_URLS,
|
|
297
|
+
FontCharset,
|
|
298
|
+
F as FontFallbackManager,
|
|
295
299
|
I as ImageConverterError,
|
|
296
300
|
P2 as PdfEngine,
|
|
297
301
|
P as PdfiumErrorCode,
|
|
@@ -300,8 +304,11 @@ export {
|
|
|
300
304
|
WebWorkerEngine,
|
|
301
305
|
WorkerTask,
|
|
302
306
|
b2 as browserImageDataToBlobConverter,
|
|
307
|
+
cdnFontConfig,
|
|
303
308
|
d as computeFormDrawParams,
|
|
309
|
+
createCdnFontConfig,
|
|
304
310
|
a2 as createHybridImageConverter,
|
|
311
|
+
e as createNodeFontLoader,
|
|
305
312
|
c as createPdfiumDirectEngine,
|
|
306
313
|
createPdfiumEngine as createPdfiumWorkerEngine,
|
|
307
314
|
c2 as createWorkerPoolImageConverter,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/lib/webworker/runner.ts"],"sourcesContent":["import {\n Logger,\n NoopLogger,\n PdfEngine,\n PdfEngineError,\n PdfEngineMethodArgs,\n PdfEngineMethodName,\n PdfEngineMethodReturnType,\n PdfErrorCode,\n TaskReturn,\n} from '@embedpdf/models';\n\n/**\n * Request body that represent method calls of PdfEngine, it contains the\n * method name and arguments\n */\nexport type PdfEngineMethodRequestBody = {\n [P in PdfEngineMethodName]: {\n name: P;\n args: PdfEngineMethodArgs<P>;\n };\n}[PdfEngineMethodName];\n\n/**\n * Request body that represent method calls of PdfEngine, it contains the\n * method name and arguments\n */\nexport type SpecificExecuteRequest<M extends PdfEngineMethodName> = {\n id: string;\n type: 'ExecuteRequest';\n data: {\n name: M;\n args: PdfEngineMethodArgs<M>;\n };\n};\n\n/**\n * Response body that represent return value of PdfEngine\n */\nexport type PdfEngineMethodResponseBody = {\n [P in PdfEngineMethodName]: TaskReturn<PdfEngineMethodReturnType<P>>;\n}[PdfEngineMethodName];\n\n/**\n * Request that abort the specified task\n */\nexport interface AbortRequest {\n /**\n * message id\n */\n id: string;\n /**\n * request type\n */\n type: 'AbortRequest';\n}\n/**\n * Request that execute pdf engine method\n */\nexport interface ExecuteRequest {\n /**\n * message id\n */\n id: string;\n /**\n * request type\n */\n type: 'ExecuteRequest';\n /**\n * request body\n */\n data: PdfEngineMethodRequestBody;\n}\n/**\n * Response that execute pdf engine method\n */\nexport interface ExecuteResponse {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ExecuteResponse';\n /**\n * response body\n */\n data: PdfEngineMethodResponseBody;\n}\n\n/**\n * Response that indicate progress of the task\n */\nexport interface ExecuteProgress<T = unknown> {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ExecuteProgress';\n /**\n * response body\n */\n data: T;\n}\n\n/**\n * Response that indicate engine is ready\n */\nexport interface ReadyResponse {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ReadyResponse';\n}\n\n/**\n * Request type\n */\nexport type Request = ExecuteRequest | AbortRequest;\n/**\n * Response type\n */\nexport type Response = ExecuteResponse | ReadyResponse | ExecuteProgress;\n\nconst LOG_SOURCE = 'WebWorkerEngineRunner';\nconst LOG_CATEGORY = 'Engine';\n\n/**\n * Pdf engine runner, it will execute pdf engine based on the request it received and\n * send back the response with post message\n */\nexport class EngineRunner {\n engine: PdfEngine | undefined;\n\n /**\n * Create instance of EngineRunnder\n * @param logger - logger instance\n */\n constructor(public logger: Logger = new NoopLogger()) {}\n\n /**\n * Listening on post message\n */\n listen() {\n self.onmessage = (evt: MessageEvent<Request>) => {\n return this.handle(evt);\n };\n }\n\n /**\n * Handle post message\n */\n handle(evt: MessageEvent<Request>) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'webworker receive message event: ', evt.data);\n try {\n const request = evt.data as Request;\n switch (request.type) {\n case 'ExecuteRequest':\n this.execute(request);\n break;\n }\n } catch (e) {\n this.logger.info(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'webworker met error when processing message event:',\n e,\n );\n }\n }\n\n /**\n * Send the ready response when pdf engine is ready\n * @returns\n *\n * @protected\n */\n ready() {\n this.listen();\n\n this.respond({\n id: '0',\n type: 'ReadyResponse',\n });\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner is ready');\n }\n\n /**\n * Execute the request\n * @param request - request that represent the pdf engine call\n * @returns\n *\n * @protected\n */\n execute = async (request: ExecuteRequest) => {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner start exeucte request');\n if (!this.engine) {\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotReady,\n message: 'engine has not started yet',\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n const engine = this.engine;\n const { name, args } = request.data;\n if (!engine[name]) {\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotSupport,\n message: `engine method ${name} is not supported yet`,\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n let task: PdfEngineMethodReturnType<typeof name>;\n switch (name) {\n case 'isSupport':\n task = engine.isSupport!(...args);\n break;\n case 'destroy':\n task = engine.destroy!(...args);\n break;\n case 'openDocumentUrl':\n task = engine.openDocumentUrl!(...args);\n break;\n case 'openDocumentBuffer':\n task = engine.openDocumentBuffer!(...args);\n break;\n case 'getDocPermissions':\n task = engine.getDocPermissions!(...args);\n break;\n case 'getDocUserPermissions':\n task = engine.getDocUserPermissions!(...args);\n break;\n case 'getMetadata':\n task = engine.getMetadata!(...args);\n break;\n case 'setMetadata':\n task = engine.setMetadata!(...args);\n break;\n case 'getBookmarks':\n task = engine.getBookmarks!(...args);\n break;\n case 'setBookmarks':\n task = engine.setBookmarks!(...args);\n break;\n case 'deleteBookmarks':\n task = engine.deleteBookmarks!(...args);\n break;\n case 'getSignatures':\n task = engine.getSignatures!(...args);\n break;\n case 'renderPage':\n task = engine.renderPage!(...args);\n break;\n case 'renderPageRect':\n task = engine.renderPageRect!(...args);\n break;\n case 'renderPageAnnotation':\n task = engine.renderPageAnnotation!(...args);\n break;\n case 'renderThumbnail':\n task = engine.renderThumbnail!(...args);\n break;\n case 'getAllAnnotations':\n task = engine.getAllAnnotations!(...args);\n break;\n case 'getPageAnnotations':\n task = engine.getPageAnnotations!(...args);\n break;\n case 'createPageAnnotation':\n task = engine.createPageAnnotation!(...args);\n break;\n case 'updatePageAnnotation':\n task = engine.updatePageAnnotation!(...args);\n break;\n case 'removePageAnnotation':\n task = engine.removePageAnnotation!(...args);\n break;\n case 'getPageTextRects':\n task = engine.getPageTextRects!(...args);\n break;\n case 'searchAllPages':\n task = engine.searchAllPages!(...args);\n break;\n case 'closeDocument':\n task = engine.closeDocument!(...args);\n break;\n case 'closeAllDocuments':\n task = engine.closeAllDocuments!(...args);\n break;\n case 'saveAsCopy':\n task = engine.saveAsCopy!(...args);\n break;\n case 'getAttachments':\n task = engine.getAttachments!(...args);\n break;\n case 'addAttachment':\n task = engine.addAttachment!(...args);\n break;\n case 'removeAttachment':\n task = engine.removeAttachment!(...args);\n break;\n case 'readAttachmentContent':\n task = engine.readAttachmentContent!(...args);\n break;\n case 'setFormFieldValue':\n task = engine.setFormFieldValue!(...args);\n break;\n case 'flattenPage':\n task = engine.flattenPage!(...args);\n break;\n case 'extractPages':\n task = engine.extractPages!(...args);\n break;\n case 'extractText':\n task = engine.extractText!(...args);\n break;\n case 'redactTextInRects':\n task = engine.redactTextInRects!(...args);\n break;\n case 'getTextSlices':\n task = engine.getTextSlices!(...args);\n break;\n case 'getPageGlyphs':\n task = engine.getPageGlyphs!(...args);\n break;\n case 'getPageGeometry':\n task = engine.getPageGeometry!(...args);\n break;\n case 'merge':\n task = engine.merge!(...args);\n break;\n case 'mergePages':\n task = engine.mergePages!(...args);\n break;\n case 'preparePrintDocument':\n task = engine.preparePrintDocument!(...args);\n break;\n default:\n // This should never be reached due to the earlier check, but provides exhaustiveness\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotSupport,\n message: `engine method ${name} is not supported`,\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n task.onProgress((progress) => {\n const response: ExecuteProgress = {\n id: request.id,\n type: 'ExecuteProgress',\n data: progress,\n };\n this.respond(response);\n });\n\n task.wait(\n (result) => {\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'result',\n value: result,\n },\n };\n this.respond(response);\n },\n (error) => {\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n },\n );\n };\n\n /**\n * Send back the response\n * @param response - response that needs sent back\n *\n * @protected\n */\n respond(response: Response) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner respond: ', response);\n self.postMessage(response);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/lib/webworker/runner.ts"],"sourcesContent":["import {\n Logger,\n NoopLogger,\n PdfEngine,\n PdfEngineError,\n PdfEngineMethodArgs,\n PdfEngineMethodName,\n PdfEngineMethodReturnType,\n PdfErrorCode,\n TaskReturn,\n} from '@embedpdf/models';\n\n/**\n * Request body that represent method calls of PdfEngine, it contains the\n * method name and arguments\n */\nexport type PdfEngineMethodRequestBody = {\n [P in PdfEngineMethodName]: {\n name: P;\n args: PdfEngineMethodArgs<P>;\n };\n}[PdfEngineMethodName];\n\n/**\n * Request body that represent method calls of PdfEngine, it contains the\n * method name and arguments\n */\nexport type SpecificExecuteRequest<M extends PdfEngineMethodName> = {\n id: string;\n type: 'ExecuteRequest';\n data: {\n name: M;\n args: PdfEngineMethodArgs<M>;\n };\n};\n\n/**\n * Response body that represent return value of PdfEngine\n */\nexport type PdfEngineMethodResponseBody = {\n [P in PdfEngineMethodName]: TaskReturn<PdfEngineMethodReturnType<P>>;\n}[PdfEngineMethodName];\n\n/**\n * Request that abort the specified task\n */\nexport interface AbortRequest {\n /**\n * message id\n */\n id: string;\n /**\n * request type\n */\n type: 'AbortRequest';\n}\n/**\n * Request that execute pdf engine method\n */\nexport interface ExecuteRequest {\n /**\n * message id\n */\n id: string;\n /**\n * request type\n */\n type: 'ExecuteRequest';\n /**\n * request body\n */\n data: PdfEngineMethodRequestBody;\n}\n/**\n * Response that execute pdf engine method\n */\nexport interface ExecuteResponse {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ExecuteResponse';\n /**\n * response body\n */\n data: PdfEngineMethodResponseBody;\n}\n\n/**\n * Response that indicate progress of the task\n */\nexport interface ExecuteProgress<T = unknown> {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ExecuteProgress';\n /**\n * response body\n */\n data: T;\n}\n\n/**\n * Response that indicate engine is ready\n */\nexport interface ReadyResponse {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ReadyResponse';\n}\n\n/**\n * Request type\n */\nexport type Request = ExecuteRequest | AbortRequest;\n/**\n * Response type\n */\nexport type Response = ExecuteResponse | ReadyResponse | ExecuteProgress;\n\nconst LOG_SOURCE = 'WebWorkerEngineRunner';\nconst LOG_CATEGORY = 'Engine';\n\n/**\n * Pdf engine runner, it will execute pdf engine based on the request it received and\n * send back the response with post message\n */\nexport class EngineRunner {\n engine: PdfEngine | undefined;\n\n /**\n * Create instance of EngineRunnder\n * @param logger - logger instance\n */\n constructor(public logger: Logger = new NoopLogger()) {}\n\n /**\n * Listening on post message\n */\n listen() {\n self.onmessage = (evt: MessageEvent<Request>) => {\n return this.handle(evt);\n };\n }\n\n /**\n * Handle post message\n */\n handle(evt: MessageEvent<Request>) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'webworker receive message event: ', evt.data);\n try {\n const request = evt.data as Request;\n switch (request.type) {\n case 'ExecuteRequest':\n this.execute(request);\n break;\n }\n } catch (e) {\n this.logger.info(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'webworker met error when processing message event:',\n e,\n );\n }\n }\n\n /**\n * Send the ready response when pdf engine is ready\n * @returns\n *\n * @protected\n */\n ready() {\n this.listen();\n\n this.respond({\n id: '0',\n type: 'ReadyResponse',\n });\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner is ready');\n }\n\n /**\n * Execute the request\n * @param request - request that represent the pdf engine call\n * @returns\n *\n * @protected\n */\n execute = async (request: ExecuteRequest) => {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner start exeucte request');\n if (!this.engine) {\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotReady,\n message: 'engine has not started yet',\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n const engine = this.engine;\n const { name, args } = request.data;\n if (!engine[name]) {\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotSupport,\n message: `engine method ${name} is not supported yet`,\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n let task: PdfEngineMethodReturnType<typeof name>;\n switch (name) {\n case 'isSupport':\n task = engine.isSupport!(...args);\n break;\n case 'destroy':\n task = engine.destroy!(...args);\n break;\n case 'openDocumentUrl':\n task = engine.openDocumentUrl!(...args);\n break;\n case 'openDocumentBuffer':\n task = engine.openDocumentBuffer!(...args);\n break;\n case 'getDocPermissions':\n task = engine.getDocPermissions!(...args);\n break;\n case 'getDocUserPermissions':\n task = engine.getDocUserPermissions!(...args);\n break;\n case 'getMetadata':\n task = engine.getMetadata!(...args);\n break;\n case 'setMetadata':\n task = engine.setMetadata!(...args);\n break;\n case 'getBookmarks':\n task = engine.getBookmarks!(...args);\n break;\n case 'setBookmarks':\n task = engine.setBookmarks!(...args);\n break;\n case 'deleteBookmarks':\n task = engine.deleteBookmarks!(...args);\n break;\n case 'getSignatures':\n task = engine.getSignatures!(...args);\n break;\n case 'renderPage':\n task = engine.renderPage!(...args);\n break;\n case 'renderPageRect':\n task = engine.renderPageRect!(...args);\n break;\n case 'renderPageAnnotation':\n task = engine.renderPageAnnotation!(...args);\n break;\n case 'renderThumbnail':\n task = engine.renderThumbnail!(...args);\n break;\n case 'getAllAnnotations':\n task = engine.getAllAnnotations!(...args);\n break;\n case 'getPageAnnotations':\n task = engine.getPageAnnotations!(...args);\n break;\n case 'createPageAnnotation':\n task = engine.createPageAnnotation!(...args);\n break;\n case 'updatePageAnnotation':\n task = engine.updatePageAnnotation!(...args);\n break;\n case 'removePageAnnotation':\n task = engine.removePageAnnotation!(...args);\n break;\n case 'getPageTextRects':\n task = engine.getPageTextRects!(...args);\n break;\n case 'searchAllPages':\n task = engine.searchAllPages!(...args);\n break;\n case 'closeDocument':\n task = engine.closeDocument!(...args);\n break;\n case 'closeAllDocuments':\n task = engine.closeAllDocuments!(...args);\n break;\n case 'saveAsCopy':\n task = engine.saveAsCopy!(...args);\n break;\n case 'getAttachments':\n task = engine.getAttachments!(...args);\n break;\n case 'addAttachment':\n task = engine.addAttachment!(...args);\n break;\n case 'removeAttachment':\n task = engine.removeAttachment!(...args);\n break;\n case 'readAttachmentContent':\n task = engine.readAttachmentContent!(...args);\n break;\n case 'setFormFieldValue':\n task = engine.setFormFieldValue!(...args);\n break;\n case 'flattenPage':\n task = engine.flattenPage!(...args);\n break;\n case 'extractPages':\n task = engine.extractPages!(...args);\n break;\n case 'extractText':\n task = engine.extractText!(...args);\n break;\n case 'redactTextInRects':\n task = engine.redactTextInRects!(...args);\n break;\n case 'getTextSlices':\n task = engine.getTextSlices!(...args);\n break;\n case 'getPageGlyphs':\n task = engine.getPageGlyphs!(...args);\n break;\n case 'getPageGeometry':\n task = engine.getPageGeometry!(...args);\n break;\n case 'merge':\n task = engine.merge!(...args);\n break;\n case 'mergePages':\n task = engine.mergePages!(...args);\n break;\n case 'preparePrintDocument':\n task = engine.preparePrintDocument!(...args);\n break;\n default:\n // This should never be reached due to the earlier check, but provides exhaustiveness\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotSupport,\n message: `engine method ${name} is not supported`,\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n task.onProgress((progress) => {\n const response: ExecuteProgress = {\n id: request.id,\n type: 'ExecuteProgress',\n data: progress,\n };\n this.respond(response);\n });\n\n task.wait(\n (result) => {\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'result',\n value: result,\n },\n };\n this.respond(response);\n },\n (error) => {\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n },\n );\n };\n\n /**\n * Send back the response\n * @param response - response that needs sent back\n *\n * @protected\n */\n respond(response: Response) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner respond: ', response);\n self.postMessage(response);\n }\n}\n"],"names":["e"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BatchProgress, Logger, PdfDocumentObject, PdfPageObject, PdfTask, PdfFile, PdfOpenDocumentBufferOptions, PdfMetadataObject, PdfBookmarksObject, PdfBookmarkObject, PdfRenderPageOptions, PdfRenderThumbnailOptions, PdfRenderPageAnnotationOptions, PdfAnnotationObject, PdfTextRectObject, PdfAttachmentObject, PdfAddAttachmentParams, PdfWidgetAnnoObject, FormFieldValue, PdfFlattenPageOptions, PdfPageFlattenResult, PdfRedactTextOptions, Rect, PageTextSlice, PdfGlyphObject, PdfPageGeometry, PdfPrintOptions, PdfSignatureObject, AnnotationCreateContext, SearchResult, IPdfiumExecutor, ImageDataLike } from '@embedpdf/models';
|
|
2
|
+
import { FontFallbackConfig } from '../pdfium/font-fallback';
|
|
2
3
|
/**
|
|
3
4
|
* Options for creating a RemoteExecutor
|
|
4
5
|
*/
|
|
@@ -11,6 +12,10 @@ export interface RemoteExecutorOptions {
|
|
|
11
12
|
* Logger instance for debugging
|
|
12
13
|
*/
|
|
13
14
|
logger?: Logger;
|
|
15
|
+
/**
|
|
16
|
+
* Font fallback configuration for handling missing fonts
|
|
17
|
+
*/
|
|
18
|
+
fontFallback?: FontFallbackConfig;
|
|
14
19
|
}
|
|
15
20
|
/**
|
|
16
21
|
* RemoteExecutor - Proxy for worker communication
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { FontFallbackConfig } from './font-fallback';
|
|
2
|
+
/**
|
|
3
|
+
* CDN base URLs for EmbedPDF font packages hosted on jsDelivr (using @latest)
|
|
4
|
+
*/
|
|
5
|
+
export declare const FONT_CDN_URLS: {
|
|
6
|
+
jp: string;
|
|
7
|
+
kr: string;
|
|
8
|
+
sc: string;
|
|
9
|
+
tc: string;
|
|
10
|
+
arabic: string;
|
|
11
|
+
hebrew: string;
|
|
12
|
+
latin: string;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Default CDN font configuration using @embedpdf/fonts-* packages from jsDelivr
|
|
16
|
+
*
|
|
17
|
+
* This is the default configuration for browser-based worker engines.
|
|
18
|
+
* Fonts are loaded on-demand from jsDelivr when PDFium needs them.
|
|
19
|
+
*
|
|
20
|
+
* Uses @latest to always get the newest version of font packages.
|
|
21
|
+
*
|
|
22
|
+
* Included packages:
|
|
23
|
+
* - @embedpdf/fonts-jp: Japanese (7 weights: Thin to Black)
|
|
24
|
+
* - @embedpdf/fonts-kr: Korean (7 weights: Thin to Black)
|
|
25
|
+
* - @embedpdf/fonts-sc: Simplified Chinese (5 weights: Light to Bold)
|
|
26
|
+
* - @embedpdf/fonts-tc: Traditional Chinese (7 weights: Thin to Black)
|
|
27
|
+
* - @embedpdf/fonts-arabic: Arabic (Regular, Bold)
|
|
28
|
+
* - @embedpdf/fonts-hebrew: Hebrew (Regular, Bold)
|
|
29
|
+
* - @embedpdf/fonts-latin: Latin/Cyrillic/Greek/Vietnamese (9 weights with italics)
|
|
30
|
+
*/
|
|
31
|
+
export declare const cdnFontConfig: FontFallbackConfig;
|
|
32
|
+
/**
|
|
33
|
+
* Create a CDN font config with a specific version
|
|
34
|
+
*
|
|
35
|
+
* Use this if you need to pin to a specific version for stability.
|
|
36
|
+
*
|
|
37
|
+
* @param version - Version string (e.g., '1.0.0', '1', 'latest')
|
|
38
|
+
* @returns FontFallbackConfig with versioned CDN URLs
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* // Pin to specific version
|
|
43
|
+
* const fontConfig = createCdnFontConfig('1.0.0');
|
|
44
|
+
*
|
|
45
|
+
* // Use major version (recommended for stability)
|
|
46
|
+
* const fontConfig = createCdnFontConfig('1');
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare function createCdnFontConfig(version?: string): FontFallbackConfig;
|
|
50
|
+
export type { FontFallbackConfig };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BatchProgress, ImageDataLike, IPdfiumExecutor, PdfAnnotationObject, PdfTextRectObject, PdfWidgetAnnoObject, Logger, SearchResult, PdfBookmarkObject, PdfDocumentObject, PdfPageObject, Rect, PdfAttachmentObject, PdfSignatureObject, PdfStampAnnoObject, PdfCircleAnnoObject, PdfSquareAnnoObject, PdfSquigglyAnnoObject, PdfStrikeOutAnnoObject, PdfUnderlineAnnoObject, PdfFile, PdfHighlightAnnoObject, FormFieldValue, PdfPageFlattenResult, PdfTask, PdfOpenDocumentBufferOptions, Task, PdfErrorReason, PdfGlyphObject, PdfPageGeometry, PageTextSlice, AnnotationCreateContext, PdfRenderPageAnnotationOptions, PdfRedactTextOptions, PdfFlattenPageOptions, PdfRenderThumbnailOptions, PdfRenderPageOptions, PdfMetadataObject, PdfPrintOptions, PdfAddAttachmentParams } from '@embedpdf/models';
|
|
2
2
|
import { WrappedPdfiumModule } from '@embedpdf/pdfium';
|
|
3
|
+
import { FontFallbackManager, FontFallbackConfig } from './font-fallback';
|
|
3
4
|
/**
|
|
4
5
|
* Format of bitmap
|
|
5
6
|
*/
|
|
@@ -38,8 +39,14 @@ export declare enum PdfiumErrorCode {
|
|
|
38
39
|
XFALoad = 7,
|
|
39
40
|
XFALayout = 8
|
|
40
41
|
}
|
|
41
|
-
interface PdfiumEngineOptions {
|
|
42
|
+
export interface PdfiumEngineOptions {
|
|
42
43
|
logger?: Logger;
|
|
44
|
+
/**
|
|
45
|
+
* Font fallback configuration for handling missing fonts in PDFs.
|
|
46
|
+
* When enabled, PDFium will request fallback fonts from configured URLs
|
|
47
|
+
* when it encounters text that requires fonts not embedded in the PDF.
|
|
48
|
+
*/
|
|
49
|
+
fontFallback?: FontFallbackConfig;
|
|
43
50
|
}
|
|
44
51
|
/**
|
|
45
52
|
* Pdf engine that based on pdfium wasm
|
|
@@ -62,6 +69,10 @@ export declare class PdfiumNative implements IPdfiumExecutor {
|
|
|
62
69
|
* logger instance
|
|
63
70
|
*/
|
|
64
71
|
private logger;
|
|
72
|
+
/**
|
|
73
|
+
* font fallback manager instance
|
|
74
|
+
*/
|
|
75
|
+
private fontFallbackManager;
|
|
65
76
|
/**
|
|
66
77
|
* Create an instance of PdfiumNative and initialize PDFium
|
|
67
78
|
* @param wasmModule - pdfium wasm module
|
|
@@ -74,6 +85,11 @@ export declare class PdfiumNative implements IPdfiumExecutor {
|
|
|
74
85
|
* @public
|
|
75
86
|
*/
|
|
76
87
|
destroy(): Task<boolean, PdfErrorReason, unknown>;
|
|
88
|
+
/**
|
|
89
|
+
* Get the font fallback manager instance
|
|
90
|
+
* Useful for pre-loading fonts or checking stats
|
|
91
|
+
*/
|
|
92
|
+
getFontFallbackManager(): FontFallbackManager | null;
|
|
77
93
|
/** Write a UTF-16LE (WIDESTRING) to wasm, call `fn(ptr)`, then free. */
|
|
78
94
|
private withWString;
|
|
79
95
|
/** Write a float[] to wasm, call `fn(ptr, count)`, then free. */
|
|
@@ -1516,4 +1532,3 @@ export declare class PdfiumNative implements IPdfiumExecutor {
|
|
|
1516
1532
|
*/
|
|
1517
1533
|
private sanitizePageRange;
|
|
1518
1534
|
}
|
|
1519
|
-
export {};
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { FontCharset, Logger } from '@embedpdf/models';
|
|
2
|
+
import { WrappedPdfiumModule } from '@embedpdf/pdfium';
|
|
3
|
+
export { FontCharset };
|
|
4
|
+
/**
|
|
5
|
+
* A single font variant with weight and italic information
|
|
6
|
+
*/
|
|
7
|
+
export interface FontVariant {
|
|
8
|
+
url: string;
|
|
9
|
+
weight?: number;
|
|
10
|
+
italic?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Font entry can be:
|
|
14
|
+
* - A simple string URL (uses weight 400, non-italic)
|
|
15
|
+
* - A single FontVariant
|
|
16
|
+
* - An array of FontVariants for multiple weights/styles
|
|
17
|
+
*/
|
|
18
|
+
export type FontEntry = string | FontVariant | FontVariant[];
|
|
19
|
+
/**
|
|
20
|
+
* Custom font loader function type
|
|
21
|
+
* Used to load font data from custom sources (e.g., file system in Node.js)
|
|
22
|
+
*
|
|
23
|
+
* @param fontPath - The font path/URL to load
|
|
24
|
+
* @returns The font data as Uint8Array, or null if loading failed
|
|
25
|
+
*/
|
|
26
|
+
export type FontLoader = (fontPath: string) => Uint8Array | null;
|
|
27
|
+
/**
|
|
28
|
+
* Configuration for fallback fonts
|
|
29
|
+
* Maps charset values to font URLs or font variant configurations
|
|
30
|
+
*/
|
|
31
|
+
export interface FontFallbackConfig {
|
|
32
|
+
/**
|
|
33
|
+
* Map of charset to font entry
|
|
34
|
+
* Can be a simple URL string, a FontVariant, or an array of FontVariants
|
|
35
|
+
*/
|
|
36
|
+
fonts: Partial<Record<FontCharset, FontEntry>>;
|
|
37
|
+
/**
|
|
38
|
+
* Optional default font entry for unspecified charsets
|
|
39
|
+
*/
|
|
40
|
+
defaultFont?: FontEntry;
|
|
41
|
+
/**
|
|
42
|
+
* Base URL to prepend to relative font URLs (browser)
|
|
43
|
+
*/
|
|
44
|
+
baseUrl?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Custom font loader function
|
|
47
|
+
*
|
|
48
|
+
* When provided, this function is called to load font data instead of
|
|
49
|
+
* the default XMLHttpRequest-based loader. This is useful for:
|
|
50
|
+
* - Node.js environments (use fs.readFileSync)
|
|
51
|
+
* - Custom caching strategies
|
|
52
|
+
* - Loading from alternative sources
|
|
53
|
+
*
|
|
54
|
+
* @example Node.js usage:
|
|
55
|
+
* ```typescript
|
|
56
|
+
* import { readFileSync } from 'fs';
|
|
57
|
+
* import { join } from 'path';
|
|
58
|
+
*
|
|
59
|
+
* const fontFallback = {
|
|
60
|
+
* fonts: { [FontCharset.SHIFTJIS]: 'NotoSansJP-Regular.otf' },
|
|
61
|
+
* fontLoader: (fontPath) => {
|
|
62
|
+
* try {
|
|
63
|
+
* return new Uint8Array(readFileSync(join('/fonts', fontPath)));
|
|
64
|
+
* } catch {
|
|
65
|
+
* return null;
|
|
66
|
+
* }
|
|
67
|
+
* },
|
|
68
|
+
* };
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
fontLoader?: FontLoader;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Font fallback manager for PDFium - Pure TypeScript Implementation
|
|
75
|
+
*
|
|
76
|
+
* This class handles on-demand font loading when PDFium encounters
|
|
77
|
+
* text that requires fonts not embedded in the PDF.
|
|
78
|
+
*
|
|
79
|
+
* The implementation creates the FPDF_SYSFONTINFO struct entirely
|
|
80
|
+
* in JavaScript using Emscripten's addFunction API.
|
|
81
|
+
*/
|
|
82
|
+
export declare class FontFallbackManager {
|
|
83
|
+
private readonly fontConfig;
|
|
84
|
+
private readonly logger;
|
|
85
|
+
private readonly fontHandles;
|
|
86
|
+
private readonly fontCache;
|
|
87
|
+
private nextHandleId;
|
|
88
|
+
private module;
|
|
89
|
+
private enabled;
|
|
90
|
+
private structPtr;
|
|
91
|
+
private releaseFnPtr;
|
|
92
|
+
private enumFontsFnPtr;
|
|
93
|
+
private mapFontFnPtr;
|
|
94
|
+
private getFontFnPtr;
|
|
95
|
+
private getFontDataFnPtr;
|
|
96
|
+
private getFaceNameFnPtr;
|
|
97
|
+
private getFontCharsetFnPtr;
|
|
98
|
+
private deleteFontFnPtr;
|
|
99
|
+
constructor(config: FontFallbackConfig, logger?: Logger);
|
|
100
|
+
/**
|
|
101
|
+
* Initialize the font fallback system and attach to PDFium module
|
|
102
|
+
*/
|
|
103
|
+
initialize(module: WrappedPdfiumModule): void;
|
|
104
|
+
/**
|
|
105
|
+
* Disable the font fallback system and clean up resources
|
|
106
|
+
*/
|
|
107
|
+
disable(): void;
|
|
108
|
+
/**
|
|
109
|
+
* Clean up allocated resources
|
|
110
|
+
*/
|
|
111
|
+
private cleanup;
|
|
112
|
+
/**
|
|
113
|
+
* Check if font fallback is enabled
|
|
114
|
+
*/
|
|
115
|
+
isEnabled(): boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Get statistics about font loading
|
|
118
|
+
*/
|
|
119
|
+
getStats(): {
|
|
120
|
+
handleCount: number;
|
|
121
|
+
cacheSize: number;
|
|
122
|
+
cachedUrls: string[];
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Pre-load fonts for specific charsets (optional optimization)
|
|
126
|
+
* This can be called to warm the cache before rendering
|
|
127
|
+
*/
|
|
128
|
+
preloadFonts(charsets: FontCharset[]): Promise<void>;
|
|
129
|
+
/**
|
|
130
|
+
* MapFont - called by PDFium when it needs a font
|
|
131
|
+
*/
|
|
132
|
+
private mapFont;
|
|
133
|
+
/**
|
|
134
|
+
* GetFontData - called by PDFium to get font bytes
|
|
135
|
+
*/
|
|
136
|
+
private getFontData;
|
|
137
|
+
/**
|
|
138
|
+
* DeleteFont - called by PDFium when done with a font
|
|
139
|
+
*/
|
|
140
|
+
private deleteFont;
|
|
141
|
+
/**
|
|
142
|
+
* Find the best matching font variant for the given parameters
|
|
143
|
+
*/
|
|
144
|
+
private findBestFontMatch;
|
|
145
|
+
/**
|
|
146
|
+
* Normalize a FontEntry to an array of FontVariants
|
|
147
|
+
*/
|
|
148
|
+
private normalizeToVariants;
|
|
149
|
+
/**
|
|
150
|
+
* Select the best matching variant based on weight and italic
|
|
151
|
+
* Uses CSS font matching algorithm principles:
|
|
152
|
+
* 1. Exact italic match preferred
|
|
153
|
+
* 2. Closest weight (with bias toward bolder for weights >= 400)
|
|
154
|
+
*/
|
|
155
|
+
private selectBestVariant;
|
|
156
|
+
/**
|
|
157
|
+
* Get font URL for a charset (backward compatible helper)
|
|
158
|
+
*/
|
|
159
|
+
private getFontUrlForCharset;
|
|
160
|
+
/**
|
|
161
|
+
* Fetch font data synchronously
|
|
162
|
+
* Uses custom fontLoader if provided, otherwise falls back to XMLHttpRequest (browser)
|
|
163
|
+
*/
|
|
164
|
+
private fetchFontSync;
|
|
165
|
+
/**
|
|
166
|
+
* Fetch font data asynchronously (for preloading)
|
|
167
|
+
* Uses custom fontLoader if provided, otherwise falls back to fetch API
|
|
168
|
+
*/
|
|
169
|
+
private fetchFontAsync;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Create a file system font loader for Node.js environments
|
|
173
|
+
*
|
|
174
|
+
* This helper creates a FontLoader function that reads fonts from the file system.
|
|
175
|
+
* It requires Node.js's `fs` and `path` modules to be passed in to avoid
|
|
176
|
+
* bundling issues in browser environments.
|
|
177
|
+
*
|
|
178
|
+
* @param fs - Node.js fs module (or compatible)
|
|
179
|
+
* @param path - Node.js path module (or compatible)
|
|
180
|
+
* @param basePath - Base directory path where fonts are located
|
|
181
|
+
* @returns A FontLoader function for use in FontFallbackConfig
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* ```typescript
|
|
185
|
+
* import { readFileSync } from 'fs';
|
|
186
|
+
* import { join } from 'path';
|
|
187
|
+
* import { createNodeFontLoader, FontCharset } from '@embedpdf/engines/pdfium';
|
|
188
|
+
*
|
|
189
|
+
* const fontLoader = createNodeFontLoader(
|
|
190
|
+
* { readFileSync },
|
|
191
|
+
* { join },
|
|
192
|
+
* '/path/to/fonts'
|
|
193
|
+
* );
|
|
194
|
+
*
|
|
195
|
+
* const fontFallback = {
|
|
196
|
+
* fonts: {
|
|
197
|
+
* [FontCharset.SHIFTJIS]: 'NotoSansJP-Regular.otf',
|
|
198
|
+
* },
|
|
199
|
+
* fontLoader,
|
|
200
|
+
* };
|
|
201
|
+
* ```
|
|
202
|
+
*/
|
|
203
|
+
export declare function createNodeFontLoader(fs: {
|
|
204
|
+
readFileSync: (path: string) => Uint8Array | ArrayBufferLike;
|
|
205
|
+
}, path: {
|
|
206
|
+
join: (...paths: string[]) => string;
|
|
207
|
+
}, basePath: string): FontLoader;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../direct-engine-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../direct-engine-BeZ18SKz.cjs"),t=require("../../browser-C6QEa8uk.cjs"),r=require("../../pdf-engine-C3JeKij1.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.1.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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/lib/pdfium/index.ts"],"sourcesContent":["export * from './engine';\nexport * from './helper';\nexport * from '../converters/types';\nexport * from '../converters/browser';\nexport * from '../orchestrator/pdf-engine';\n\n// Export web factory functions (avoid ambiguous exports)\nexport { createPdfiumEngine as createPdfiumDirectEngine } from './web/direct-engine';\nexport { createPdfiumEngine as createPdfiumWorkerEngine } from './web/worker-engine';\nexport type { CreatePdfiumEngineOptions } from './web/direct-engine';\n\nexport const DEFAULT_PDFIUM_WASM_URL: string =\n 'https://cdn.jsdelivr.net/npm/@embedpdf/pdfium@__PDFIUM_VERSION__/dist/pdfium.wasm';\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/lib/pdfium/cdn-fonts.ts","../../../src/lib/pdfium/index.ts"],"sourcesContent":["/**\n * CDN Font Configuration for Browser Environments\n *\n * This file is intentionally separate from font-fallback.ts so that\n * Node.js users don't have to bundle the CDN URLs and font definitions.\n *\n * Only import this in browser-specific code (like the worker).\n */\n\nimport { FontCharset, type FontFile } from '@embedpdf/models';\nimport type { FontFallbackConfig, FontVariant } from './font-fallback';\n\n// Import font definitions from font packages (single source of truth)\nimport { fonts as jpFonts } from '@embedpdf/fonts-jp';\nimport { fonts as krFonts } from '@embedpdf/fonts-kr';\nimport { fonts as scFonts } from '@embedpdf/fonts-sc';\nimport { fonts as tcFonts } from '@embedpdf/fonts-tc';\nimport { fonts as arabicFonts } from '@embedpdf/fonts-arabic';\nimport { fonts as hebrewFonts } from '@embedpdf/fonts-hebrew';\nimport { fonts as latinFonts } from '@embedpdf/fonts-latin';\n\n// ============================================================================\n// CDN URL Builders\n// ============================================================================\n\n/**\n * Build CDN URLs from package version\n */\nfunction buildCdnUrls(version: string = 'latest') {\n return {\n jp: `https://cdn.jsdelivr.net/npm/@embedpdf/fonts-jp@${version}/fonts`,\n kr: `https://cdn.jsdelivr.net/npm/@embedpdf/fonts-kr@${version}/fonts`,\n sc: `https://cdn.jsdelivr.net/npm/@embedpdf/fonts-sc@${version}/fonts`,\n tc: `https://cdn.jsdelivr.net/npm/@embedpdf/fonts-tc@${version}/fonts`,\n arabic: `https://cdn.jsdelivr.net/npm/@embedpdf/fonts-arabic@${version}/fonts`,\n hebrew: `https://cdn.jsdelivr.net/npm/@embedpdf/fonts-hebrew@${version}/fonts`,\n latin: `https://cdn.jsdelivr.net/npm/@embedpdf/fonts-latin@${version}/fonts`,\n };\n}\n\n/**\n * Convert font files to FontVariant array with base URL\n */\nfunction toFontVariants(fonts: FontFile[], baseUrl: string): FontVariant[] {\n return fonts.map((f) => ({\n url: `${baseUrl}/${f.file}`,\n weight: f.weight,\n italic: f.italic,\n }));\n}\n\n/**\n * Build a complete font config from CDN URLs\n */\nfunction buildCdnFontConfig(urls: ReturnType<typeof buildCdnUrls>): FontFallbackConfig {\n return {\n fonts: {\n [FontCharset.SHIFTJIS]: toFontVariants(jpFonts, urls.jp),\n [FontCharset.HANGEUL]: toFontVariants(krFonts, urls.kr),\n [FontCharset.GB2312]: toFontVariants(scFonts, urls.sc),\n [FontCharset.CHINESEBIG5]: toFontVariants(tcFonts, urls.tc),\n [FontCharset.ARABIC]: toFontVariants(arabicFonts, urls.arabic),\n [FontCharset.HEBREW]: toFontVariants(hebrewFonts, urls.hebrew),\n [FontCharset.CYRILLIC]: toFontVariants(latinFonts, urls.latin),\n [FontCharset.GREEK]: toFontVariants(latinFonts, urls.latin),\n [FontCharset.VIETNAMESE]: toFontVariants(latinFonts, urls.latin),\n },\n };\n}\n\n// ============================================================================\n// Public Exports\n// ============================================================================\n\n/**\n * CDN base URLs for EmbedPDF font packages hosted on jsDelivr (using @latest)\n */\nexport const FONT_CDN_URLS = buildCdnUrls('latest');\n\n/**\n * Default CDN font configuration using @embedpdf/fonts-* packages from jsDelivr\n *\n * This is the default configuration for browser-based worker engines.\n * Fonts are loaded on-demand from jsDelivr when PDFium needs them.\n *\n * Uses @latest to always get the newest version of font packages.\n *\n * Included packages:\n * - @embedpdf/fonts-jp: Japanese (7 weights: Thin to Black)\n * - @embedpdf/fonts-kr: Korean (7 weights: Thin to Black)\n * - @embedpdf/fonts-sc: Simplified Chinese (5 weights: Light to Bold)\n * - @embedpdf/fonts-tc: Traditional Chinese (7 weights: Thin to Black)\n * - @embedpdf/fonts-arabic: Arabic (Regular, Bold)\n * - @embedpdf/fonts-hebrew: Hebrew (Regular, Bold)\n * - @embedpdf/fonts-latin: Latin/Cyrillic/Greek/Vietnamese (9 weights with italics)\n */\nexport const cdnFontConfig: FontFallbackConfig = buildCdnFontConfig(FONT_CDN_URLS);\n\n/**\n * Create a CDN font config with a specific version\n *\n * Use this if you need to pin to a specific version for stability.\n *\n * @param version - Version string (e.g., '1.0.0', '1', 'latest')\n * @returns FontFallbackConfig with versioned CDN URLs\n *\n * @example\n * ```typescript\n * // Pin to specific version\n * const fontConfig = createCdnFontConfig('1.0.0');\n *\n * // Use major version (recommended for stability)\n * const fontConfig = createCdnFontConfig('1');\n * ```\n */\nexport function createCdnFontConfig(version: string = 'latest'): FontFallbackConfig {\n return buildCdnFontConfig(buildCdnUrls(version));\n}\n\n// Re-export types for convenience\nexport type { FontFallbackConfig };\n","export * from './engine';\nexport * from './helper';\nexport * from '../converters/types';\nexport * from '../converters/browser';\nexport * from '../orchestrator/pdf-engine';\nexport * from './font-fallback';\nexport * from './cdn-fonts';\n\n// Export web factory functions (avoid ambiguous exports)\nexport { createPdfiumEngine as createPdfiumDirectEngine } from './web/direct-engine';\nexport { createPdfiumEngine as createPdfiumWorkerEngine } from './web/worker-engine';\nexport type { CreatePdfiumEngineOptions } from './web/direct-engine';\n\nexport const DEFAULT_PDFIUM_WASM_URL: string =\n 'https://cdn.jsdelivr.net/npm/@embedpdf/pdfium@__PDFIUM_VERSION__/dist/pdfium.wasm';\n"],"names":["buildCdnUrls","version","jp","kr","sc","tc","arabic","hebrew","latin","toFontVariants","fonts","baseUrl","map","f","url","file","weight","italic","buildCdnFontConfig","urls","FontCharset","SHIFTJIS","jpFonts","HANGEUL","krFonts","GB2312","scFonts","CHINESEBIG5","tcFonts","ARABIC","arabicFonts","HEBREW","hebrewFonts","CYRILLIC","latinFonts","GREEK","VIETNAMESE","FONT_CDN_URLS","cdnFontConfig"],"mappings":"qgBA4BA,SAASA,EAAaC,EAAkB,UACtC,MAAO,CACLC,GAAI,mDAAmDD,UACvDE,GAAI,mDAAmDF,UACvDG,GAAI,mDAAmDH,UACvDI,GAAI,mDAAmDJ,UACvDK,OAAQ,uDAAuDL,UAC/DM,OAAQ,uDAAuDN,UAC/DO,MAAO,sDAAsDP,UAEjE,CAKA,SAASQ,EAAeC,EAAmBC,GACzC,OAAOD,EAAME,IAAKC,IAAA,CAChBC,IAAK,GAAGH,KAAWE,EAAEE,OACrBC,OAAQH,EAAEG,OACVC,OAAQJ,EAAEI,SAEd,CAKA,SAASC,EAAmBC,GAC1B,MAAO,CACLT,MAAO,CACL,CAACU,EAAAA,YAAYC,UAAWZ,EAAea,EAAAA,MAASH,EAAKjB,IACrD,CAACkB,EAAAA,YAAYG,SAAUd,EAAee,EAAAA,MAASL,EAAKhB,IACpD,CAACiB,EAAAA,YAAYK,QAAShB,EAAeiB,EAAAA,MAASP,EAAKf,IACnD,CAACgB,EAAAA,YAAYO,aAAclB,EAAemB,EAAAA,MAAST,EAAKd,IACxD,CAACe,EAAAA,YAAYS,QAASpB,EAAeqB,EAAAA,MAAaX,EAAKb,QACvD,CAACc,EAAAA,YAAYW,QAAStB,EAAeuB,EAAAA,MAAab,EAAKZ,QACvD,CAACa,EAAAA,YAAYa,UAAWxB,EAAeyB,EAAAA,MAAYf,EAAKX,OACxD,CAACY,EAAAA,YAAYe,OAAQ1B,EAAeyB,EAAAA,MAAYf,EAAKX,OACrD,CAACY,EAAAA,YAAYgB,YAAa3B,EAAeyB,EAAAA,MAAYf,EAAKX,QAGhE,CASO,MAAM6B,EAAgBrC,EAAa,UAmB7BsC,EAAoCpB,EAAmBmB,w6BClFlE,mJDqGK,SAA6BpC,EAAkB,UACpD,OAAOiB,EAAmBlB,EAAaC,GACzC"}
|
|
@@ -3,6 +3,8 @@ export * from './helper';
|
|
|
3
3
|
export * from '../converters/types';
|
|
4
4
|
export * from '../converters/browser';
|
|
5
5
|
export * from '../orchestrator/pdf-engine';
|
|
6
|
+
export * from './font-fallback';
|
|
7
|
+
export * from './cdn-fonts';
|
|
6
8
|
export { createPdfiumEngine as createPdfiumDirectEngine } from './web/direct-engine';
|
|
7
9
|
export { createPdfiumEngine as createPdfiumWorkerEngine } from './web/worker-engine';
|
|
8
10
|
export type { CreatePdfiumEngineOptions } from './web/direct-engine';
|