@@ -43,127 +43,18 @@ import {
4343 SearchResult ,
4444 CompoundTask ,
4545 ImageDataLike ,
46+ IPdfiumExecutor ,
4647} from '@embedpdf/models' ;
4748import { WorkerTaskQueue , Priority } from './task-queue' ;
4849import type { ImageDataConverter } from '../converters/types' ;
4950
5051// Re-export for convenience
5152export type { ImageDataConverter } from '../converters/types' ;
52- export type { ImageDataLike } from '@embedpdf/models' ;
53+ export type { ImageDataLike , IPdfiumExecutor } from '@embedpdf/models' ;
5354
5455const LOG_SOURCE = 'PdfEngine' ;
5556const LOG_CATEGORY = 'Orchestrator' ;
5657
57- /**
58- * Executor interface that can be either PdfiumNative or RemoteExecutor
59- */
60- export interface IPdfExecutor {
61- // Core operations (single page, synchronous in nature)
62- initialize ( ) : void ;
63- destroy ( ) : void ;
64- openDocumentBuffer (
65- file : PdfFile ,
66- options ?: PdfOpenDocumentBufferOptions ,
67- ) : PdfTask < PdfDocumentObject > ;
68- getMetadata ( doc : PdfDocumentObject ) : PdfTask < PdfMetadataObject > ;
69- setMetadata ( doc : PdfDocumentObject , metadata : Partial < PdfMetadataObject > ) : PdfTask < boolean > ;
70- getDocPermissions ( doc : PdfDocumentObject ) : PdfTask < number > ;
71- getDocUserPermissions ( doc : PdfDocumentObject ) : PdfTask < number > ;
72- getSignatures ( doc : PdfDocumentObject ) : PdfTask < PdfSignatureObject [ ] > ;
73- getBookmarks ( doc : PdfDocumentObject ) : PdfTask < PdfBookmarksObject > ;
74- setBookmarks ( doc : PdfDocumentObject , bookmarks : PdfBookmarkObject [ ] ) : PdfTask < boolean > ;
75- deleteBookmarks ( doc : PdfDocumentObject ) : PdfTask < boolean > ;
76-
77- // Raw rendering (returns ImageData-like object, not Blob)
78- renderPageRaw (
79- doc : PdfDocumentObject ,
80- page : PdfPageObject ,
81- options ?: PdfRenderPageOptions ,
82- ) : PdfTask < ImageDataLike > ;
83- renderPageRect (
84- doc : PdfDocumentObject ,
85- page : PdfPageObject ,
86- rect : Rect ,
87- options ?: PdfRenderPageOptions ,
88- ) : PdfTask < ImageDataLike > ;
89- renderThumbnailRaw (
90- doc : PdfDocumentObject ,
91- page : PdfPageObject ,
92- options ?: PdfRenderThumbnailOptions ,
93- ) : PdfTask < ImageDataLike > ;
94- renderPageAnnotationRaw (
95- doc : PdfDocumentObject ,
96- page : PdfPageObject ,
97- annotation : PdfAnnotationObject ,
98- options ?: PdfRenderPageAnnotationOptions ,
99- ) : PdfTask < ImageDataLike > ;
100-
101- // Single page operations
102- getPageAnnotations ( doc : PdfDocumentObject , page : PdfPageObject ) : PdfTask < PdfAnnotationObject [ ] > ;
103- createPageAnnotation < A extends PdfAnnotationObject > (
104- doc : PdfDocumentObject ,
105- page : PdfPageObject ,
106- annotation : A ,
107- context ?: AnnotationCreateContext < A > ,
108- ) : PdfTask < string > ;
109- updatePageAnnotation (
110- doc : PdfDocumentObject ,
111- page : PdfPageObject ,
112- annotation : PdfAnnotationObject ,
113- ) : PdfTask < boolean > ;
114- removePageAnnotation (
115- doc : PdfDocumentObject ,
116- page : PdfPageObject ,
117- annotation : PdfAnnotationObject ,
118- ) : PdfTask < boolean > ;
119- getPageTextRects ( doc : PdfDocumentObject , page : PdfPageObject ) : PdfTask < PdfTextRectObject [ ] > ;
120-
121- // Single page search
122- searchInPage (
123- doc : PdfDocumentObject ,
124- page : PdfPageObject ,
125- keyword : string ,
126- flags : number ,
127- ) : PdfTask < SearchResult [ ] > ;
128-
129- // Other operations
130- getAttachments ( doc : PdfDocumentObject ) : PdfTask < PdfAttachmentObject [ ] > ;
131- addAttachment ( doc : PdfDocumentObject , params : PdfAddAttachmentParams ) : PdfTask < boolean > ;
132- removeAttachment ( doc : PdfDocumentObject , attachment : PdfAttachmentObject ) : PdfTask < boolean > ;
133- readAttachmentContent (
134- doc : PdfDocumentObject ,
135- attachment : PdfAttachmentObject ,
136- ) : PdfTask < ArrayBuffer > ;
137- setFormFieldValue (
138- doc : PdfDocumentObject ,
139- page : PdfPageObject ,
140- annotation : PdfWidgetAnnoObject ,
141- value : FormFieldValue ,
142- ) : PdfTask < boolean > ;
143- flattenPage (
144- doc : PdfDocumentObject ,
145- page : PdfPageObject ,
146- options ?: PdfFlattenPageOptions ,
147- ) : PdfTask < PdfPageFlattenResult > ;
148- extractPages ( doc : PdfDocumentObject , pageIndexes : number [ ] ) : PdfTask < ArrayBuffer > ;
149- extractText ( doc : PdfDocumentObject , pageIndexes : number [ ] ) : PdfTask < string > ;
150- redactTextInRects (
151- doc : PdfDocumentObject ,
152- page : PdfPageObject ,
153- rects : Rect [ ] ,
154- options ?: PdfRedactTextOptions ,
155- ) : PdfTask < boolean > ;
156- getTextSlices ( doc : PdfDocumentObject , slices : PageTextSlice [ ] ) : PdfTask < string [ ] > ;
157- getPageGlyphs ( doc : PdfDocumentObject , page : PdfPageObject ) : PdfTask < PdfGlyphObject [ ] > ;
158- getPageGeometry ( doc : PdfDocumentObject , page : PdfPageObject ) : PdfTask < PdfPageGeometry > ;
159- merge ( files : PdfFile [ ] ) : PdfTask < PdfFile > ;
160- mergePages ( mergeConfigs : Array < { docId : string ; pageIndices : number [ ] } > ) : PdfTask < PdfFile > ;
161- preparePrintDocument ( doc : PdfDocumentObject , options ?: PdfPrintOptions ) : PdfTask < ArrayBuffer > ;
162- saveAsCopy ( doc : PdfDocumentObject ) : PdfTask < ArrayBuffer > ;
163- closeDocument ( doc : PdfDocumentObject ) : PdfTask < boolean > ;
164- closeAllDocuments ( ) : PdfTask < boolean > ;
165- }
166-
16758export interface PdfEngineOptions < T > {
16859 /**
16960 * Image data converter (for encoding raw image data to Blob/other format)
@@ -190,12 +81,12 @@ export interface PdfEngineOptions<T> {
19081 * - Manages visibility-based task ranking
19182 */
19283export class PdfEngine < T = Blob > implements IPdfEngine < T > {
193- private executor : IPdfExecutor ;
84+ private executor : IPdfiumExecutor ;
19485 private workerQueue : WorkerTaskQueue ;
19586 private logger : Logger ;
19687 private options : PdfEngineOptions < T > ;
19788
198- constructor ( executor : IPdfExecutor , options : PdfEngineOptions < T > ) {
89+ constructor ( executor : IPdfiumExecutor , options : PdfEngineOptions < T > ) {
19990 this . executor = executor ;
20091 this . logger = options . logger ?? new NoopLogger ( ) ;
20192 this . options = {
@@ -570,7 +461,7 @@ export class PdfEngine<T = Blob> implements IPdfEngine<T> {
570461 const tasks = doc . pages . map ( ( page , index ) =>
571462 this . workerQueue . enqueue (
572463 {
573- execute : ( ) => this . executor . getPageAnnotations ( doc , page ) ,
464+ execute : ( ) => this . executor . getPageAnnotationsRaw ( doc , page ) ,
574465 meta : { docId : doc . id , pageIndex : index , operation : 'getAnnotations' } ,
575466 } ,
576467 { priority : Priority . LOW } ,
0 commit comments