@embedpdf/engines 1.0.5 → 1.0.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"pdfium-worker-engine.js","sources":["../src/lib/webworker/engine.ts"],"sourcesContent":["import {\n FormFieldValue,\n PdfAnnotationTransformation,\n PdfAttachmentObject,\n PdfEngineError,\n PdfFile,\n PdfMetadataObject,\n PdfSignatureObject,\n PdfTextRectObject,\n PdfWidgetAnnoObject,\n SearchResult,\n SearchTarget,\n Task,\n Logger,\n NoopLogger,\n PdfAnnotationObject,\n PdfBookmarksObject,\n PdfDocumentObject,\n PdfEngine,\n PdfPageObject,\n Rect,\n Rotation,\n PdfRenderOptions,\n PdfErrorCode,\n PdfErrorReason,\n PdfPageFlattenFlag,\n PdfPageFlattenResult,\n PdfFileLoader,\n SearchAllPagesResult,\n MatchFlag,\n PdfUrlOptions,\n PdfFileUrl,\n PdfGlyphObject,\n PdfPageGeometry,\n ImageConversionTypes,\n} from '@embedpdf/models';\nimport { ExecuteRequest, Response } from './runner';\n\nconst LOG_SOURCE = 'WebWorkerEngine';\nconst LOG_CATEGORY = 'Engine';\n\n/**\n * Task that executed by webworker\n */\nexport class WorkerTask<R> extends Task<R, PdfErrorReason> {\n /**\n * Create a task that bind to web worker with specified message id\n * @param worker - web worker instance\n * @param messageId - id of message\n *\n * @public\n */\n constructor(\n public worker: Worker,\n private messageId: string,\n ) {\n super();\n }\n\n /**\n * {@inheritDoc @embedpdf/models!Task.abort}\n *\n * @override\n */\n abort(e: PdfErrorReason) {\n super.abort(e);\n\n this.worker.postMessage({\n type: 'AbortRequest',\n data: {\n messageId: this.messageId,\n },\n });\n }\n}\n\n/**\n * PDF engine that runs within webworker\n */\nexport class WebWorkerEngine implements PdfEngine {\n static readyTaskId = '0';\n /**\n * Task that represent the state of preparation\n */\n readyTask: WorkerTask<boolean>;\n /**\n * All the tasks that is executing\n */\n tasks: Map<string, WorkerTask<any>> = new Map();\n\n /**\n * Create an instance of WebWorkerEngine, it will create a worker with\n * specified url.\n * @param worker - webworker instance, this worker needs to contains the running instance of {@link EngineRunner}\n * @param logger - logger instance\n *\n * @public\n */\n constructor(\n private worker: Worker,\n private logger: Logger = new NoopLogger(),\n ) {\n this.worker.addEventListener('message', this.handle);\n\n this.readyTask = new WorkerTask<boolean>(this.worker, WebWorkerEngine.readyTaskId);\n this.tasks.set(WebWorkerEngine.readyTaskId, this.readyTask);\n }\n\n /**\n * Handle event from web worker. There are 2 kinds of event\n * 1. ReadyResponse: web worker is ready\n * 2. ExecuteResponse: result of execution\n * @param evt - message event from web worker\n * @returns\n *\n * @private\n */\n handle = (evt: MessageEvent<any>) => {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'webworker engine start handling message: ',\n evt.data,\n );\n try {\n const response = evt.data as Response;\n const task = this.tasks.get(response.id);\n if (!task) {\n return;\n }\n\n switch (response.type) {\n case 'ReadyResponse':\n this.readyTask.resolve(true);\n break;\n case 'ExecuteResponse':\n {\n switch (response.data.type) {\n case 'result':\n task.resolve(response.data.value);\n break;\n case 'error':\n task.reject(response.data.value.reason);\n break;\n }\n this.tasks.delete(response.id);\n }\n break;\n }\n } catch (e) {\n this.logger.error(LOG_SOURCE, LOG_CATEGORY, 'webworker met error when handling message: ', e);\n }\n };\n\n /**\n * Generate a unique message id\n * @returns message id\n *\n * @private\n */\n generateRequestId(id: string) {\n return `${id}.${Date.now()}.${Math.random()}`;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.initialize}\n *\n * @public\n */\n initialize() {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'initialize');\n const requestId = this.generateRequestId('General');\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'initialize',\n args: [],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.destroy}\n *\n * @public\n */\n destroy() {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'destroy');\n const requestId = this.generateRequestId('General');\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const finish = () => {\n this.worker.removeEventListener('message', this.handle);\n this.worker.terminate();\n };\n\n task.wait(finish, finish);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'destroy',\n args: [],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.openDocumentUrl}\n *\n * @public\n */\n openDocumentUrl(file: PdfFileUrl, options?: PdfUrlOptions) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'openDocumentUrl', file.url, options);\n const requestId = this.generateRequestId(file.id);\n const task = new WorkerTask<PdfDocumentObject>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'openDocumentUrl',\n args: [file, options],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.openDocument}\n *\n * @public\n */\n openDocumentFromBuffer(file: PdfFile, password: string) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'openDocumentFromBuffer', file, password);\n const requestId = this.generateRequestId(file.id);\n const task = new WorkerTask<PdfDocumentObject>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'openDocumentFromBuffer',\n args: [file, password],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.openDocumentFromLoader}\n *\n * @public\n */\n openDocumentFromLoader(file: PdfFileLoader, password: string) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'openDocumentFromLoader', file, password);\n const requestId = this.generateRequestId(file.id);\n const task = new WorkerTask<PdfDocumentObject>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'openDocumentFromLoader',\n args: [file, password],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getMetadata}\n *\n * @public\n */\n getMetadata(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getMetadata', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfMetadataObject>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getMetadata',\n args: [doc],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getDocPermissions}\n *\n * @public\n */\n getDocPermissions(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getDocPermissions', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<number>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getDocPermissions',\n args: [doc],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getDocUserPermissions}\n *\n * @public\n */\n getDocUserPermissions(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getDocUserPermissions', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<number>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getDocUserPermissions',\n args: [doc],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getBookmarks}\n *\n * @public\n */\n getBookmarks(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getBookmarks', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfBookmarksObject>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getBookmarks',\n args: [doc],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getSignatures}\n *\n * @public\n */\n getSignatures(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getSignatures', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfSignatureObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getSignatures',\n args: [doc],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.renderPage}\n *\n * @public\n */\n renderPage(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n scaleFactor: number,\n rotation: Rotation,\n dpr: number,\n options: PdfRenderOptions,\n imageType: ImageConversionTypes = 'image/webp',\n ) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'renderPage',\n doc,\n page,\n scaleFactor,\n rotation,\n dpr,\n options,\n );\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<Blob>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'renderPage',\n args: [doc, page, scaleFactor, rotation, dpr, options, imageType],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.renderPageRect}\n *\n * @public\n */\n renderPageRect(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n scaleFactor: number,\n rotation: Rotation,\n dpr: number,\n rect: Rect,\n options: PdfRenderOptions,\n imageType: ImageConversionTypes = 'image/webp',\n ) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'renderPageRect',\n doc,\n page,\n scaleFactor,\n rotation,\n dpr,\n rect,\n options,\n );\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<Blob>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'renderPageRect',\n args: [doc, page, scaleFactor, rotation, dpr, rect, options, imageType],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getAllAnnotations}\n *\n * @public\n */\n getAllAnnotations(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getAllAnnotations', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<Record<number, PdfAnnotationObject[]>>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getAllAnnotations',\n args: [doc],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getPageAnnotations}\n *\n * @public\n */\n getPageAnnotations(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageAnnotations', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfAnnotationObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getPageAnnotations',\n args: [doc, page],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.createPageAnnotation}\n *\n * @public\n */\n createPageAnnotation(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'createPageAnnotations', doc, page, annotation);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'createPageAnnotation',\n args: [doc, page, annotation],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.transformPageAnnotation}\n *\n * @public\n */\n transformPageAnnotation(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n transformation: PdfAnnotationTransformation,\n ) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'transformPageAnnotation',\n doc,\n page,\n annotation,\n transformation,\n );\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'transformPageAnnotation',\n args: [doc, page, annotation, transformation],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.removePageAnnotation}\n *\n * @public\n */\n removePageAnnotation(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'removePageAnnotations', doc, page, annotation);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'removePageAnnotation',\n args: [doc, page, annotation],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getPageTextRects}\n *\n * @public\n */\n getPageTextRects(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n scaleFactor: number,\n rotation: Rotation,\n ) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'getPageTextRects',\n doc,\n page,\n scaleFactor,\n rotation,\n );\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfTextRectObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getPageTextRects',\n args: [doc, page, scaleFactor, rotation],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.renderThumbnail}\n *\n * @public\n */\n renderThumbnail(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n scaleFactor: number,\n rotation: Rotation,\n dpr: number,\n ) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'renderThumbnail',\n doc,\n page,\n scaleFactor,\n rotation,\n dpr,\n );\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<Blob>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'renderThumbnail',\n args: [doc, page, scaleFactor, rotation, dpr],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.searchAllPages}\n *\n * @public\n */\n searchAllPages(doc: PdfDocumentObject, keyword: string, flags: MatchFlag[] = []) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'searchAllPages 123', doc, keyword, flags);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<SearchAllPagesResult>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'searchAllPages',\n args: [doc, keyword, flags],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.saveAsCopy}\n *\n * @public\n */\n saveAsCopy(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'saveAsCopy', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<ArrayBuffer>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'saveAsCopy',\n args: [doc],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getAttachments}\n *\n * @public\n */\n getAttachments(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getAttachments', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfAttachmentObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getAttachments',\n args: [doc],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.readAttachmentContent}\n *\n * @public\n */\n readAttachmentContent(doc: PdfDocumentObject, attachment: PdfAttachmentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'readAttachmentContent', doc, attachment);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<ArrayBuffer>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'readAttachmentContent',\n args: [doc, attachment],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.setFormFieldValue}\n *\n * @public\n */\n setFormFieldValue(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfWidgetAnnoObject,\n value: FormFieldValue,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'setFormFieldValue', doc, annotation, value);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'setFormFieldValue',\n args: [doc, page, annotation, value],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.flattenPage}\n *\n * @public\n */\n flattenPage(doc: PdfDocumentObject, page: PdfPageObject, flag: PdfPageFlattenFlag) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'flattenPage', doc, page, flag);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfPageFlattenResult>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'flattenPage',\n args: [doc, page, flag],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.extractPages}\n *\n * @public\n */\n extractPages(doc: PdfDocumentObject, pageIndexes: number[]) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'extractPages', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<ArrayBuffer>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'extractPages',\n args: [doc, pageIndexes],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.extractText}\n *\n * @public\n */\n extractText(doc: PdfDocumentObject, pageIndexes: number[]) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'extractText', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<string>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'extractText',\n args: [doc, pageIndexes],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getPageGlyphs}\n *\n * @public\n */\n getPageGlyphs(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageGlyphs', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfGlyphObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getPageGlyphs',\n args: [doc, page],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getPageGeometry}\n *\n * @public\n */\n getPageGeometry(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageGeometry', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfPageGeometry>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getPageGeometry',\n args: [doc, page],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.merge}\n *\n * @public\n */\n merge(files: PdfFile[]) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'merge', files);\n const fileIds = files.map((file) => file.id).join('.');\n const requestId = this.generateRequestId(fileIds);\n const task = new WorkerTask<PdfFile>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'merge',\n args: [files],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.mergePages}\n *\n * @public\n */\n mergePages(mergeConfigs: Array<{ docId: string; pageIndices: number[] }>) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'mergePages', mergeConfigs);\n const requestId = this.generateRequestId(mergeConfigs.map((config) => config.docId).join('.'));\n const task = new WorkerTask<PdfFile>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'mergePages',\n args: [mergeConfigs],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.closeDocument}\n *\n * @public\n */\n closeDocument(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'closeDocument', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'closeDocument',\n args: [doc],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * Send the request to webworker inside and register the task\n * @param task - task that waiting for the response\n * @param request - request that needs send to web worker\n * @param transferables - transferables that need to transfer to webworker\n * @returns\n *\n * @internal\n */\n proxy<R>(task: WorkerTask<R>, request: ExecuteRequest, transferables: any[] = []) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'send request to worker',\n task,\n request,\n transferables,\n );\n this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'Begin', request.id);\n this.readyTask.wait(\n () => {\n this.worker.postMessage(request, transferables);\n task.wait(\n () => {\n this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);\n },\n () => {\n this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);\n },\n );\n this.tasks.set(request.id, task);\n },\n () => {\n this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);\n task.reject({\n code: PdfErrorCode.Initialization,\n message: 'worker initialization failed',\n });\n },\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pdfium-worker-engine.js","sources":["../src/lib/webworker/engine.ts"],"sourcesContent":["import {\n FormFieldValue,\n PdfAnnotationTransformation,\n PdfAttachmentObject,\n PdfEngineError,\n PdfFile,\n PdfMetadataObject,\n PdfSignatureObject,\n PdfTextRectObject,\n PdfWidgetAnnoObject,\n SearchResult,\n SearchTarget,\n Task,\n Logger,\n NoopLogger,\n PdfAnnotationObject,\n PdfBookmarksObject,\n PdfDocumentObject,\n PdfEngine,\n PdfPageObject,\n Rect,\n Rotation,\n PdfRenderOptions,\n PdfErrorCode,\n PdfErrorReason,\n PdfPageFlattenFlag,\n PdfPageFlattenResult,\n PdfFileLoader,\n SearchAllPagesResult,\n MatchFlag,\n PdfUrlOptions,\n PdfFileUrl,\n PdfGlyphObject,\n PdfPageGeometry,\n ImageConversionTypes,\n PageTextSlice,\n} from '@embedpdf/models';\nimport { ExecuteRequest, Response } from './runner';\n\nconst LOG_SOURCE = 'WebWorkerEngine';\nconst LOG_CATEGORY = 'Engine';\n\n/**\n * Task that executed by webworker\n */\nexport class WorkerTask<R> extends Task<R, PdfErrorReason> {\n /**\n * Create a task that bind to web worker with specified message id\n * @param worker - web worker instance\n * @param messageId - id of message\n *\n * @public\n */\n constructor(\n public worker: Worker,\n private messageId: string,\n ) {\n super();\n }\n\n /**\n * {@inheritDoc @embedpdf/models!Task.abort}\n *\n * @override\n */\n abort(e: PdfErrorReason) {\n super.abort(e);\n\n this.worker.postMessage({\n type: 'AbortRequest',\n data: {\n messageId: this.messageId,\n },\n });\n }\n}\n\n/**\n * PDF engine that runs within webworker\n */\nexport class WebWorkerEngine implements PdfEngine {\n static readyTaskId = '0';\n /**\n * Task that represent the state of preparation\n */\n readyTask: WorkerTask<boolean>;\n /**\n * All the tasks that is executing\n */\n tasks: Map<string, WorkerTask<any>> = new Map();\n\n /**\n * Create an instance of WebWorkerEngine, it will create a worker with\n * specified url.\n * @param worker - webworker instance, this worker needs to contains the running instance of {@link EngineRunner}\n * @param logger - logger instance\n *\n * @public\n */\n constructor(\n private worker: Worker,\n private logger: Logger = new NoopLogger(),\n ) {\n this.worker.addEventListener('message', this.handle);\n\n this.readyTask = new WorkerTask<boolean>(this.worker, WebWorkerEngine.readyTaskId);\n this.tasks.set(WebWorkerEngine.readyTaskId, this.readyTask);\n }\n\n /**\n * Handle event from web worker. There are 2 kinds of event\n * 1. ReadyResponse: web worker is ready\n * 2. ExecuteResponse: result of execution\n * @param evt - message event from web worker\n * @returns\n *\n * @private\n */\n handle = (evt: MessageEvent<any>) => {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'webworker engine start handling message: ',\n evt.data,\n );\n try {\n const response = evt.data as Response;\n const task = this.tasks.get(response.id);\n if (!task) {\n return;\n }\n\n switch (response.type) {\n case 'ReadyResponse':\n this.readyTask.resolve(true);\n break;\n case 'ExecuteResponse':\n {\n switch (response.data.type) {\n case 'result':\n task.resolve(response.data.value);\n break;\n case 'error':\n task.reject(response.data.value.reason);\n break;\n }\n this.tasks.delete(response.id);\n }\n break;\n }\n } catch (e) {\n this.logger.error(LOG_SOURCE, LOG_CATEGORY, 'webworker met error when handling message: ', e);\n }\n };\n\n /**\n * Generate a unique message id\n * @returns message id\n *\n * @private\n */\n generateRequestId(id: string) {\n return `${id}.${Date.now()}.${Math.random()}`;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.initialize}\n *\n * @public\n */\n initialize() {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'initialize');\n const requestId = this.generateRequestId('General');\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'initialize',\n args: [],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.destroy}\n *\n * @public\n */\n destroy() {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'destroy');\n const requestId = this.generateRequestId('General');\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const finish = () => {\n this.worker.removeEventListener('message', this.handle);\n this.worker.terminate();\n };\n\n task.wait(finish, finish);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'destroy',\n args: [],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.openDocumentUrl}\n *\n * @public\n */\n openDocumentUrl(file: PdfFileUrl, options?: PdfUrlOptions) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'openDocumentUrl', file.url, options);\n const requestId = this.generateRequestId(file.id);\n const task = new WorkerTask<PdfDocumentObject>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'openDocumentUrl',\n args: [file, options],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.openDocument}\n *\n * @public\n */\n openDocumentFromBuffer(file: PdfFile, password: string) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'openDocumentFromBuffer', file, password);\n const requestId = this.generateRequestId(file.id);\n const task = new WorkerTask<PdfDocumentObject>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'openDocumentFromBuffer',\n args: [file, password],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.openDocumentFromLoader}\n *\n * @public\n */\n openDocumentFromLoader(file: PdfFileLoader, password: string) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'openDocumentFromLoader', file, password);\n const requestId = this.generateRequestId(file.id);\n const task = new WorkerTask<PdfDocumentObject>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'openDocumentFromLoader',\n args: [file, password],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getMetadata}\n *\n * @public\n */\n getMetadata(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getMetadata', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfMetadataObject>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getMetadata',\n args: [doc],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getDocPermissions}\n *\n * @public\n */\n getDocPermissions(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getDocPermissions', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<number>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getDocPermissions',\n args: [doc],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getDocUserPermissions}\n *\n * @public\n */\n getDocUserPermissions(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getDocUserPermissions', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<number>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getDocUserPermissions',\n args: [doc],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getBookmarks}\n *\n * @public\n */\n getBookmarks(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getBookmarks', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfBookmarksObject>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getBookmarks',\n args: [doc],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getSignatures}\n *\n * @public\n */\n getSignatures(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getSignatures', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfSignatureObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getSignatures',\n args: [doc],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.renderPage}\n *\n * @public\n */\n renderPage(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n scaleFactor: number,\n rotation: Rotation,\n dpr: number,\n options: PdfRenderOptions,\n imageType: ImageConversionTypes = 'image/webp',\n ) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'renderPage',\n doc,\n page,\n scaleFactor,\n rotation,\n dpr,\n options,\n );\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<Blob>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'renderPage',\n args: [doc, page, scaleFactor, rotation, dpr, options, imageType],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.renderPageRect}\n *\n * @public\n */\n renderPageRect(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n scaleFactor: number,\n rotation: Rotation,\n dpr: number,\n rect: Rect,\n options: PdfRenderOptions,\n imageType: ImageConversionTypes = 'image/webp',\n ) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'renderPageRect',\n doc,\n page,\n scaleFactor,\n rotation,\n dpr,\n rect,\n options,\n );\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<Blob>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'renderPageRect',\n args: [doc, page, scaleFactor, rotation, dpr, rect, options, imageType],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getAllAnnotations}\n *\n * @public\n */\n getAllAnnotations(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getAllAnnotations', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<Record<number, PdfAnnotationObject[]>>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getAllAnnotations',\n args: [doc],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getPageAnnotations}\n *\n * @public\n */\n getPageAnnotations(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageAnnotations', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfAnnotationObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getPageAnnotations',\n args: [doc, page],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.createPageAnnotation}\n *\n * @public\n */\n createPageAnnotation(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'createPageAnnotations', doc, page, annotation);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'createPageAnnotation',\n args: [doc, page, annotation],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.transformPageAnnotation}\n *\n * @public\n */\n transformPageAnnotation(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n transformation: PdfAnnotationTransformation,\n ) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'transformPageAnnotation',\n doc,\n page,\n annotation,\n transformation,\n );\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'transformPageAnnotation',\n args: [doc, page, annotation, transformation],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.removePageAnnotation}\n *\n * @public\n */\n removePageAnnotation(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfAnnotationObject,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'removePageAnnotations', doc, page, annotation);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'removePageAnnotation',\n args: [doc, page, annotation],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getPageTextRects}\n *\n * @public\n */\n getPageTextRects(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n scaleFactor: number,\n rotation: Rotation,\n ) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'getPageTextRects',\n doc,\n page,\n scaleFactor,\n rotation,\n );\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfTextRectObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getPageTextRects',\n args: [doc, page, scaleFactor, rotation],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.renderThumbnail}\n *\n * @public\n */\n renderThumbnail(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n scaleFactor: number,\n rotation: Rotation,\n dpr: number,\n ) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'renderThumbnail',\n doc,\n page,\n scaleFactor,\n rotation,\n dpr,\n );\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<Blob>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'renderThumbnail',\n args: [doc, page, scaleFactor, rotation, dpr],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.searchAllPages}\n *\n * @public\n */\n searchAllPages(doc: PdfDocumentObject, keyword: string, flags: MatchFlag[] = []) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'searchAllPages 123', doc, keyword, flags);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<SearchAllPagesResult>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'searchAllPages',\n args: [doc, keyword, flags],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.saveAsCopy}\n *\n * @public\n */\n saveAsCopy(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'saveAsCopy', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<ArrayBuffer>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'saveAsCopy',\n args: [doc],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getAttachments}\n *\n * @public\n */\n getAttachments(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getAttachments', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfAttachmentObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getAttachments',\n args: [doc],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.readAttachmentContent}\n *\n * @public\n */\n readAttachmentContent(doc: PdfDocumentObject, attachment: PdfAttachmentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'readAttachmentContent', doc, attachment);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<ArrayBuffer>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'readAttachmentContent',\n args: [doc, attachment],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.setFormFieldValue}\n *\n * @public\n */\n setFormFieldValue(\n doc: PdfDocumentObject,\n page: PdfPageObject,\n annotation: PdfWidgetAnnoObject,\n value: FormFieldValue,\n ) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'setFormFieldValue', doc, annotation, value);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'setFormFieldValue',\n args: [doc, page, annotation, value],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.flattenPage}\n *\n * @public\n */\n flattenPage(doc: PdfDocumentObject, page: PdfPageObject, flag: PdfPageFlattenFlag) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'flattenPage', doc, page, flag);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfPageFlattenResult>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'flattenPage',\n args: [doc, page, flag],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.extractPages}\n *\n * @public\n */\n extractPages(doc: PdfDocumentObject, pageIndexes: number[]) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'extractPages', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<ArrayBuffer>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'extractPages',\n args: [doc, pageIndexes],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.extractText}\n *\n * @public\n */\n extractText(doc: PdfDocumentObject, pageIndexes: number[]) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'extractText', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<string>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'extractText',\n args: [doc, pageIndexes],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getTextSlices}\n *\n * @public\n */\n getTextSlices(doc: PdfDocumentObject, slices: PageTextSlice[]) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getTextSlices', doc, slices);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<string[]>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getTextSlices',\n args: [doc, slices],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getPageGlyphs}\n *\n * @public\n */\n getPageGlyphs(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageGlyphs', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfGlyphObject[]>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getPageGlyphs',\n args: [doc, page],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.getPageGeometry}\n *\n * @public\n */\n getPageGeometry(doc: PdfDocumentObject, page: PdfPageObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageGeometry', doc, page);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<PdfPageGeometry>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'getPageGeometry',\n args: [doc, page],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.merge}\n *\n * @public\n */\n merge(files: PdfFile[]) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'merge', files);\n const fileIds = files.map((file) => file.id).join('.');\n const requestId = this.generateRequestId(fileIds);\n const task = new WorkerTask<PdfFile>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'merge',\n args: [files],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.mergePages}\n *\n * @public\n */\n mergePages(mergeConfigs: Array<{ docId: string; pageIndices: number[] }>) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'mergePages', mergeConfigs);\n const requestId = this.generateRequestId(mergeConfigs.map((config) => config.docId).join('.'));\n const task = new WorkerTask<PdfFile>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'mergePages',\n args: [mergeConfigs],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * {@inheritDoc @embedpdf/models!PdfEngine.closeDocument}\n *\n * @public\n */\n closeDocument(doc: PdfDocumentObject) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'closeDocument', doc);\n const requestId = this.generateRequestId(doc.id);\n const task = new WorkerTask<boolean>(this.worker, requestId);\n\n const request: ExecuteRequest = {\n id: requestId,\n type: 'ExecuteRequest',\n data: {\n name: 'closeDocument',\n args: [doc],\n },\n };\n this.proxy(task, request);\n\n return task;\n }\n\n /**\n * Send the request to webworker inside and register the task\n * @param task - task that waiting for the response\n * @param request - request that needs send to web worker\n * @param transferables - transferables that need to transfer to webworker\n * @returns\n *\n * @internal\n */\n proxy<R>(task: WorkerTask<R>, request: ExecuteRequest, transferables: any[] = []) {\n this.logger.debug(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'send request to worker',\n task,\n request,\n transferables,\n );\n this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'Begin', request.id);\n this.readyTask.wait(\n () => {\n this.worker.postMessage(request, transferables);\n task.wait(\n () => {\n this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);\n },\n () => {\n this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);\n },\n );\n this.tasks.set(request.id, task);\n },\n () => {\n this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);\n task.reject({\n code: PdfErrorCode.Initialization,\n message: 'worker initialization failed',\n });\n },\n );\n }\n}\n"],"names":[],"mappings":"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"}
package/dist/pdfium.cjs CHANGED
@@ -1364,6 +1364,62 @@ class PdfiumEngine {
1364
1364
  this.logger.perf(LOG_SOURCE$1, LOG_CATEGORY$1, `ExtractText`, 'End', doc.id);
1365
1365
  return models.PdfTaskHelper.resolve(text);
1366
1366
  }
1367
+ /**
1368
+ * {@inheritDoc @embedpdf/models!PdfEngine.getTextSlices}
1369
+ *
1370
+ * @public
1371
+ */
1372
+ getTextSlices(doc, slices) {
1373
+ this.logger.debug(LOG_SOURCE$1, LOG_CATEGORY$1, 'getTextSlices', doc, slices);
1374
+ this.logger.perf(LOG_SOURCE$1, LOG_CATEGORY$1, 'GetTextSlices', 'Begin', doc.id);
1375
+ /* ⚠︎ 1 — trivial case */
1376
+ if (slices.length === 0) {
1377
+ this.logger.perf(LOG_SOURCE$1, LOG_CATEGORY$1, 'GetTextSlices', 'End', doc.id);
1378
+ return models.PdfTaskHelper.resolve([]);
1379
+ }
1380
+ /* ⚠︎ 2 — document must be open */
1381
+ const ctx = this.cache.getContext(doc.id);
1382
+ if (!ctx) {
1383
+ this.logger.perf(LOG_SOURCE$1, LOG_CATEGORY$1, 'GetTextSlices', 'End', doc.id);
1384
+ return models.PdfTaskHelper.reject({
1385
+ code: models.PdfErrorCode.DocNotOpen,
1386
+ message: 'document does not open',
1387
+ });
1388
+ }
1389
+ try {
1390
+ /* keep caller order */
1391
+ const out = new Array(slices.length);
1392
+ /* group → open each page once */
1393
+ const byPage = new Map();
1394
+ slices.forEach((s, i) => {
1395
+ (byPage.get(s.pageIndex) ?? byPage.set(s.pageIndex, []).get(s.pageIndex)).push({
1396
+ slice: s,
1397
+ pos: i,
1398
+ });
1399
+ });
1400
+ for (const [pageIdx, list] of byPage) {
1401
+ const pageCtx = ctx.acquirePage(pageIdx);
1402
+ const textPagePtr = pageCtx.getTextPage();
1403
+ for (const { slice, pos } of list) {
1404
+ const bufPtr = this.malloc(2 * (slice.charCount + 1)); // UTF-16 + NIL
1405
+ this.pdfiumModule.FPDFText_GetText(textPagePtr, slice.charIndex, slice.charCount, bufPtr);
1406
+ out[pos] = models.stripPdfUnwantedMarkers(this.pdfiumModule.pdfium.UTF16ToString(bufPtr));
1407
+ this.free(bufPtr);
1408
+ }
1409
+ pageCtx.release();
1410
+ }
1411
+ this.logger.perf(LOG_SOURCE$1, LOG_CATEGORY$1, 'GetTextSlices', 'End', doc.id);
1412
+ return models.PdfTaskHelper.resolve(out);
1413
+ }
1414
+ catch (e) {
1415
+ this.logger.error(LOG_SOURCE$1, LOG_CATEGORY$1, 'getTextSlices error', e);
1416
+ this.logger.perf(LOG_SOURCE$1, LOG_CATEGORY$1, 'GetTextSlices', 'End', doc.id);
1417
+ return models.PdfTaskHelper.reject({
1418
+ code: models.PdfErrorCode.Unknown,
1419
+ message: String(e),
1420
+ });
1421
+ }
1422
+ }
1367
1423
  /**
1368
1424
  * {@inheritDoc @embedpdf/models!PdfEngine.merge}
1369
1425
  *
@@ -1893,14 +1949,12 @@ class PdfiumEngine {
1893
1949
  const runs = [];
1894
1950
  let current = null;
1895
1951
  let curObjPtr = null;
1952
+ let bounds = null;
1896
1953
  /** ── main loop ──────────────────────────────────────────── */
1897
1954
  for (let i = 0; i < glyphs.length; i++) {
1898
1955
  const g = glyphs[i];
1899
1956
  /* 1 — find the CPDF_TextObject this glyph belongs to */
1900
1957
  const objPtr = this.pdfiumModule.FPDFText_GetTextObject(textPagePtr, i);
1901
- if (g.isEmpty) {
1902
- continue;
1903
- }
1904
1958
  /* 2 — start a new run when the text object changes */
1905
1959
  if (objPtr !== curObjPtr) {
1906
1960
  curObjPtr = objPtr;
@@ -1914,6 +1968,12 @@ class PdfiumEngine {
1914
1968
  charStart: i,
1915
1969
  glyphs: [],
1916
1970
  };
1971
+ bounds = {
1972
+ minX: g.origin.x,
1973
+ minY: g.origin.y,
1974
+ maxX: g.origin.x + g.size.width,
1975
+ maxY: g.origin.y + g.size.height,
1976
+ };
1917
1977
  runs.push(current);
1918
1978
  }
1919
1979
  /* 3 — append the slim glyph record */
@@ -1922,16 +1982,24 @@ class PdfiumEngine {
1922
1982
  y: g.origin.y,
1923
1983
  width: g.size.width,
1924
1984
  height: g.size.height,
1925
- flags: g.isSpace ? 1 : 0,
1985
+ flags: g.isEmpty ? 2 : g.isSpace ? 1 : 0,
1926
1986
  });
1927
1987
  /* 4 — expand the run's bounding rect */
1988
+ if (g.isEmpty) {
1989
+ continue;
1990
+ }
1928
1991
  const right = g.origin.x + g.size.width;
1929
1992
  const bottom = g.origin.y + g.size.height;
1930
- current.rect.width =
1931
- Math.max(current.rect.x + current.rect.width, right) - current.rect.x;
1932
- current.rect.y = Math.min(current.rect.y, g.origin.y);
1933
- current.rect.height =
1934
- Math.max(current.rect.y + current.rect.height, bottom) - current.rect.y;
1993
+ // Update bounds
1994
+ bounds.minX = Math.min(bounds.minX, g.origin.x);
1995
+ bounds.minY = Math.min(bounds.minY, g.origin.y);
1996
+ bounds.maxX = Math.max(bounds.maxX, right);
1997
+ bounds.maxY = Math.max(bounds.maxY, bottom);
1998
+ // Calculate final rect from bounds
1999
+ current.rect.x = bounds.minX;
2000
+ current.rect.y = bounds.minY;
2001
+ current.rect.width = bounds.maxX - bounds.minX;
2002
+ current.rect.height = bounds.maxY - bounds.minY;
1935
2003
  }
1936
2004
  return runs;
1937
2005
  }
@@ -4177,6 +4245,9 @@ class EngineRunner {
4177
4245
  case 'extractText':
4178
4246
  task = this.engine[name](...args);
4179
4247
  break;
4248
+ case 'getTextSlices':
4249
+ task = this.engine[name](...args);
4250
+ break;
4180
4251
  case 'getPageGlyphs':
4181
4252
  task = this.engine[name](...args);
4182
4253
  break;