pdf-oxide-fips 0.3.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/LICENSE-APACHE +176 -0
  2. package/LICENSE-MIT +25 -0
  3. package/README.md +218 -0
  4. package/lib/builders/annotation-builder.d.ts +198 -0
  5. package/lib/builders/annotation-builder.js +317 -0
  6. package/lib/builders/conversion-options-builder.d.ts +106 -0
  7. package/lib/builders/conversion-options-builder.js +214 -0
  8. package/lib/builders/document-builder.d.ts +381 -0
  9. package/lib/builders/document-builder.js +770 -0
  10. package/lib/builders/index.d.ts +13 -0
  11. package/lib/builders/index.js +13 -0
  12. package/lib/builders/metadata-builder.d.ts +201 -0
  13. package/lib/builders/metadata-builder.js +285 -0
  14. package/lib/builders/pdf-builder.d.ts +216 -0
  15. package/lib/builders/pdf-builder.js +350 -0
  16. package/lib/builders/search-options-builder.d.ts +73 -0
  17. package/lib/builders/search-options-builder.js +129 -0
  18. package/lib/builders/streaming-table.d.ts +64 -0
  19. package/lib/builders/streaming-table.js +140 -0
  20. package/lib/document-editor-manager.d.ts +139 -0
  21. package/lib/document-editor-manager.js +256 -0
  22. package/lib/document-editor.d.ts +124 -0
  23. package/lib/document-editor.js +318 -0
  24. package/lib/errors.d.ts +382 -0
  25. package/lib/errors.js +1115 -0
  26. package/lib/form-field-manager.d.ts +299 -0
  27. package/lib/form-field-manager.js +568 -0
  28. package/lib/hybrid-ml-manager.d.ts +142 -0
  29. package/lib/hybrid-ml-manager.js +208 -0
  30. package/lib/index.d.ts +205 -0
  31. package/lib/index.js +693 -0
  32. package/lib/managers/accessibility-manager.d.ts +148 -0
  33. package/lib/managers/accessibility-manager.js +234 -0
  34. package/lib/managers/annotation-manager.d.ts +219 -0
  35. package/lib/managers/annotation-manager.js +359 -0
  36. package/lib/managers/barcode-manager.d.ts +82 -0
  37. package/lib/managers/barcode-manager.js +263 -0
  38. package/lib/managers/batch-manager.d.ts +185 -0
  39. package/lib/managers/batch-manager.js +385 -0
  40. package/lib/managers/cache-manager.d.ts +181 -0
  41. package/lib/managers/cache-manager.js +384 -0
  42. package/lib/managers/compliance-manager.d.ts +103 -0
  43. package/lib/managers/compliance-manager.js +453 -0
  44. package/lib/managers/content-manager.d.ts +120 -0
  45. package/lib/managers/content-manager.js +294 -0
  46. package/lib/managers/document-utility-manager.d.ts +369 -0
  47. package/lib/managers/document-utility-manager.js +730 -0
  48. package/lib/managers/dom-pdf-creator.d.ts +104 -0
  49. package/lib/managers/dom-pdf-creator.js +299 -0
  50. package/lib/managers/editing-manager.d.ts +248 -0
  51. package/lib/managers/editing-manager.js +387 -0
  52. package/lib/managers/enterprise-manager.d.ts +192 -0
  53. package/lib/managers/enterprise-manager.js +307 -0
  54. package/lib/managers/extended-managers.d.ts +122 -0
  55. package/lib/managers/extended-managers.js +664 -0
  56. package/lib/managers/extraction-manager.d.ts +246 -0
  57. package/lib/managers/extraction-manager.js +482 -0
  58. package/lib/managers/final-utilities.d.ts +127 -0
  59. package/lib/managers/final-utilities.js +657 -0
  60. package/lib/managers/hybrid-ml-advanced.d.ts +136 -0
  61. package/lib/managers/hybrid-ml-advanced.js +722 -0
  62. package/lib/managers/index.d.ts +64 -0
  63. package/lib/managers/index.js +69 -0
  64. package/lib/managers/layer-manager.d.ts +203 -0
  65. package/lib/managers/layer-manager.js +401 -0
  66. package/lib/managers/metadata-manager.d.ts +148 -0
  67. package/lib/managers/metadata-manager.js +280 -0
  68. package/lib/managers/ocr-manager.d.ts +194 -0
  69. package/lib/managers/ocr-manager.js +582 -0
  70. package/lib/managers/optimization-manager.d.ts +102 -0
  71. package/lib/managers/optimization-manager.js +213 -0
  72. package/lib/managers/outline-manager.d.ts +101 -0
  73. package/lib/managers/outline-manager.js +169 -0
  74. package/lib/managers/page-manager.d.ts +142 -0
  75. package/lib/managers/page-manager.js +235 -0
  76. package/lib/managers/pattern-detection.d.ts +169 -0
  77. package/lib/managers/pattern-detection.js +322 -0
  78. package/lib/managers/rendering-manager.d.ts +353 -0
  79. package/lib/managers/rendering-manager.js +679 -0
  80. package/lib/managers/search-manager.d.ts +235 -0
  81. package/lib/managers/search-manager.js +329 -0
  82. package/lib/managers/security-manager.d.ts +161 -0
  83. package/lib/managers/security-manager.js +292 -0
  84. package/lib/managers/signature-manager.d.ts +738 -0
  85. package/lib/managers/signature-manager.js +1509 -0
  86. package/lib/managers/streams.d.ts +262 -0
  87. package/lib/managers/streams.js +477 -0
  88. package/lib/managers/xfa-manager.d.ts +227 -0
  89. package/lib/managers/xfa-manager.js +539 -0
  90. package/lib/native-loader.d.ts +7 -0
  91. package/lib/native-loader.js +62 -0
  92. package/lib/native.d.ts +16 -0
  93. package/lib/native.js +69 -0
  94. package/lib/pdf-creator-manager.d.ts +200 -0
  95. package/lib/pdf-creator-manager.js +381 -0
  96. package/lib/properties.d.ts +79 -0
  97. package/lib/properties.js +454 -0
  98. package/lib/result-accessors-manager.d.ts +346 -0
  99. package/lib/result-accessors-manager.js +706 -0
  100. package/lib/thumbnail-manager.d.ts +121 -0
  101. package/lib/thumbnail-manager.js +205 -0
  102. package/lib/timestamp.d.ts +54 -0
  103. package/lib/timestamp.js +115 -0
  104. package/lib/tsa-client.d.ts +44 -0
  105. package/lib/tsa-client.js +67 -0
  106. package/lib/types/common.d.ts +189 -0
  107. package/lib/types/common.js +17 -0
  108. package/lib/types/document-types.d.ts +352 -0
  109. package/lib/types/document-types.js +82 -0
  110. package/lib/types/index.d.ts +5 -0
  111. package/lib/types/index.js +5 -0
  112. package/lib/types/manager-types.d.ts +179 -0
  113. package/lib/types/manager-types.js +100 -0
  114. package/lib/types/native-bindings.d.ts +439 -0
  115. package/lib/types/native-bindings.js +7 -0
  116. package/lib/workers/index.d.ts +6 -0
  117. package/lib/workers/index.js +5 -0
  118. package/lib/workers/pool.d.ts +64 -0
  119. package/lib/workers/pool.js +192 -0
  120. package/lib/workers/worker.d.ts +5 -0
  121. package/lib/workers/worker.js +99 -0
  122. package/package.json +79 -0
  123. package/prebuilds/darwin-arm64/pdf_oxide.node +0 -0
  124. package/prebuilds/darwin-x64/pdf_oxide.node +0 -0
  125. package/prebuilds/linux-arm64/pdf_oxide.node +0 -0
  126. package/prebuilds/linux-x64/pdf_oxide.node +0 -0
  127. package/prebuilds/win32-x64/pdf_oxide.node +0 -0
@@ -0,0 +1,179 @@
1
+ /**
2
+ * TypeScript type definitions for all PDF Oxide managers
3
+ *
4
+ * Provides comprehensive type safety for Node.js and TypeScript consumers
5
+ * with full FFI integration and proper error handling.
6
+ */
7
+ import { EventEmitter } from 'events';
8
+ export interface PdfDocumentHandle {
9
+ readonly handle: unknown;
10
+ readonly pageCount: () => Promise<number>;
11
+ readonly extractText: (pageIndex: number) => Promise<string>;
12
+ readonly extractFormFields: () => Promise<FormField[]>;
13
+ readonly getMetadata: () => Promise<Record<string, string>>;
14
+ }
15
+ export declare enum OcrLanguage {
16
+ ENGLISH = "en",
17
+ CHINESE = "zh",
18
+ JAPANESE = "ja",
19
+ SPANISH = "es",
20
+ FRENCH = "fr",
21
+ PORTUGUESE = "pt",
22
+ RUSSIAN = "ru",
23
+ ARABIC = "ar",
24
+ KOREAN = "ko",
25
+ VIETNAMESE = "vi"
26
+ }
27
+ export interface TextRegion {
28
+ x: number;
29
+ y: number;
30
+ width: number;
31
+ height: number;
32
+ }
33
+ export interface OcrResult {
34
+ readonly pageIndex: number;
35
+ readonly text: string;
36
+ readonly confidence: number;
37
+ readonly regionCount: number;
38
+ }
39
+ export interface OcrBatchResult {
40
+ readonly startPage: number;
41
+ readonly endPage: number;
42
+ readonly totalPages: number;
43
+ readonly totalSpans: number;
44
+ readonly averageConfidence: number;
45
+ readonly skippedPages: number;
46
+ }
47
+ export declare enum ComplianceType {
48
+ PDF_A_1B = "pdf_a_1b",
49
+ PDF_A_2B = "pdf_a_2b",
50
+ PDF_A_3B = "pdf_a_3b",
51
+ PDF_X_1A = "pdf_x_1a",
52
+ PDF_X_3 = "pdf_x_3",
53
+ PDF_UA = "pdf_ua"
54
+ }
55
+ export interface ComplianceResult {
56
+ readonly type: string;
57
+ readonly valid: boolean;
58
+ readonly issues: readonly string[];
59
+ readonly severity: 'none' | 'low' | 'medium' | 'high' | 'critical';
60
+ }
61
+ export interface ComplianceReport {
62
+ readonly timestamp: number;
63
+ readonly results: ComplianceResult[];
64
+ readonly isFullyCompliant: boolean;
65
+ }
66
+ export interface CacheEntry<T> {
67
+ readonly key: string;
68
+ readonly value: T;
69
+ readonly timestamp: number;
70
+ readonly ttl?: number;
71
+ }
72
+ export interface CacheStats {
73
+ readonly cacheCount: number;
74
+ readonly totalEntries: number;
75
+ readonly totalSize: number;
76
+ readonly entriesByCache: Map<string, number>;
77
+ readonly hitRate: number;
78
+ readonly missRate: number;
79
+ }
80
+ export declare enum FormFieldType {
81
+ TEXT = "text",
82
+ CHECKBOX = "checkbox",
83
+ RADIO = "radio",
84
+ COMBOBOX = "combobox",
85
+ LISTBOX = "listbox",
86
+ SIGNATURE = "signature",
87
+ DATE = "date"
88
+ }
89
+ export interface FormField {
90
+ readonly name: string;
91
+ readonly type: FormFieldType;
92
+ readonly value: string;
93
+ readonly pageIndex: number;
94
+ readonly x: number;
95
+ readonly y: number;
96
+ readonly width: number;
97
+ readonly height: number;
98
+ readonly required?: boolean;
99
+ readonly readonly?: boolean;
100
+ }
101
+ export interface ManagerOptions {
102
+ readonly enableCache?: boolean;
103
+ readonly cacheSize?: number;
104
+ readonly enableEvents?: boolean;
105
+ readonly enableLogging?: boolean;
106
+ }
107
+ export interface ManagerState {
108
+ readonly initialized: boolean;
109
+ readonly hasDocument: boolean;
110
+ readonly operationCount: number;
111
+ readonly errorCount: number;
112
+ }
113
+ export interface ManagerEvent<T = Record<string, unknown>> {
114
+ readonly eventType: string;
115
+ readonly timestamp: number;
116
+ readonly data: T;
117
+ readonly manager: string;
118
+ }
119
+ export interface ErrorEvent extends ManagerEvent<{
120
+ error: Error;
121
+ operation: string;
122
+ }> {
123
+ }
124
+ export interface BatchOptions {
125
+ readonly pageSize?: number;
126
+ readonly parallelism?: number;
127
+ readonly timeout?: number;
128
+ readonly retryOnError?: boolean;
129
+ readonly maxRetries?: number;
130
+ }
131
+ export interface BatchProgress {
132
+ readonly processed: number;
133
+ readonly total: number;
134
+ readonly percentage: number;
135
+ readonly status: 'pending' | 'running' | 'completed' | 'failed';
136
+ }
137
+ export interface BatchResult<T> {
138
+ readonly data: T[];
139
+ readonly progress: BatchProgress;
140
+ readonly startTime: number;
141
+ readonly endTime: number;
142
+ readonly duration: number;
143
+ readonly errors: Error[];
144
+ }
145
+ export interface PdfMetadata {
146
+ readonly title?: string;
147
+ readonly author?: string;
148
+ readonly subject?: string;
149
+ readonly keywords?: string;
150
+ readonly creator?: string;
151
+ readonly producer?: string;
152
+ readonly creationDate?: Date;
153
+ readonly modificationDate?: Date;
154
+ readonly pageCount: number;
155
+ readonly format?: string;
156
+ }
157
+ export interface IManager extends EventEmitter {
158
+ readonly initialized: boolean;
159
+ destroy(): Promise<void>;
160
+ getState(): ManagerState;
161
+ }
162
+ export declare abstract class BaseManager<T extends PdfDocumentHandle = PdfDocumentHandle> extends EventEmitter implements IManager {
163
+ protected options: ManagerOptions;
164
+ private _initialized;
165
+ get initialized(): boolean;
166
+ protected set initialized(value: boolean);
167
+ protected document: T;
168
+ protected cache: Map<string, unknown>;
169
+ protected operationCount: number;
170
+ protected errorCount: number;
171
+ constructor(document: T, options?: ManagerOptions);
172
+ abstract destroy(): Promise<void>;
173
+ getState(): ManagerState;
174
+ protected recordOperation(): void;
175
+ protected recordError(error: Error): void;
176
+ protected getCached<V>(key: string): V | undefined;
177
+ protected setCached<V>(key: string, value: V): void;
178
+ protected invalidateCache(pattern?: string): void;
179
+ }
@@ -0,0 +1,100 @@
1
+ /**
2
+ * TypeScript type definitions for all PDF Oxide managers
3
+ *
4
+ * Provides comprehensive type safety for Node.js and TypeScript consumers
5
+ * with full FFI integration and proper error handling.
6
+ */
7
+ import { EventEmitter } from 'events';
8
+ // ============================================================
9
+ // OCR Types
10
+ // ============================================================
11
+ export var OcrLanguage;
12
+ (function (OcrLanguage) {
13
+ OcrLanguage["ENGLISH"] = "en";
14
+ OcrLanguage["CHINESE"] = "zh";
15
+ OcrLanguage["JAPANESE"] = "ja";
16
+ OcrLanguage["SPANISH"] = "es";
17
+ OcrLanguage["FRENCH"] = "fr";
18
+ OcrLanguage["PORTUGUESE"] = "pt";
19
+ OcrLanguage["RUSSIAN"] = "ru";
20
+ OcrLanguage["ARABIC"] = "ar";
21
+ OcrLanguage["KOREAN"] = "ko";
22
+ OcrLanguage["VIETNAMESE"] = "vi";
23
+ })(OcrLanguage || (OcrLanguage = {}));
24
+ // ============================================================
25
+ // Compliance Types
26
+ // ============================================================
27
+ export var ComplianceType;
28
+ (function (ComplianceType) {
29
+ ComplianceType["PDF_A_1B"] = "pdf_a_1b";
30
+ ComplianceType["PDF_A_2B"] = "pdf_a_2b";
31
+ ComplianceType["PDF_A_3B"] = "pdf_a_3b";
32
+ ComplianceType["PDF_X_1A"] = "pdf_x_1a";
33
+ ComplianceType["PDF_X_3"] = "pdf_x_3";
34
+ ComplianceType["PDF_UA"] = "pdf_ua";
35
+ })(ComplianceType || (ComplianceType = {}));
36
+ // ============================================================
37
+ // Form Field Types
38
+ // ============================================================
39
+ export var FormFieldType;
40
+ (function (FormFieldType) {
41
+ FormFieldType["TEXT"] = "text";
42
+ FormFieldType["CHECKBOX"] = "checkbox";
43
+ FormFieldType["RADIO"] = "radio";
44
+ FormFieldType["COMBOBOX"] = "combobox";
45
+ FormFieldType["LISTBOX"] = "listbox";
46
+ FormFieldType["SIGNATURE"] = "signature";
47
+ FormFieldType["DATE"] = "date";
48
+ })(FormFieldType || (FormFieldType = {}));
49
+ export class BaseManager extends EventEmitter {
50
+ get initialized() {
51
+ return this._initialized;
52
+ }
53
+ set initialized(value) {
54
+ this._initialized = value;
55
+ }
56
+ constructor(document, options = {}) {
57
+ super();
58
+ this.options = options;
59
+ this._initialized = false;
60
+ this.cache = new Map();
61
+ this.operationCount = 0;
62
+ this.errorCount = 0;
63
+ this.document = document;
64
+ this.initialized = true;
65
+ }
66
+ getState() {
67
+ return {
68
+ initialized: this.initialized,
69
+ hasDocument: !!this.document,
70
+ operationCount: this.operationCount,
71
+ errorCount: this.errorCount,
72
+ };
73
+ }
74
+ recordOperation() {
75
+ this.operationCount++;
76
+ }
77
+ recordError(error) {
78
+ this.errorCount++;
79
+ this.emit('error', { error, timestamp: Date.now() });
80
+ }
81
+ getCached(key) {
82
+ return this.cache.get(key);
83
+ }
84
+ setCached(key, value) {
85
+ if (this.options.enableCache !== false) {
86
+ this.cache.set(key, value);
87
+ }
88
+ }
89
+ invalidateCache(pattern) {
90
+ if (pattern) {
91
+ const keys = Array.from(this.cache.keys()).filter((k) => k.includes(pattern));
92
+ keys.forEach((k) => {
93
+ this.cache.delete(k);
94
+ });
95
+ }
96
+ else {
97
+ this.cache.clear();
98
+ }
99
+ }
100
+ }
@@ -0,0 +1,439 @@
1
+ /**
2
+ * Type definitions for PDF Oxide native bindings (C++ module via NAPI)
3
+ *
4
+ * These interfaces describe the structure of objects returned from the native module.
5
+ * They are used for type checking and IDE auto-completion when working with the binding layer.
6
+ */
7
+ /**
8
+ * Represents a rectangular area with coordinates and dimensions
9
+ */
10
+ export interface Rect {
11
+ x: number;
12
+ y: number;
13
+ width: number;
14
+ height: number;
15
+ }
16
+ /**
17
+ * Represents a 2D point coordinate
18
+ */
19
+ export interface Point {
20
+ x: number;
21
+ y: number;
22
+ }
23
+ /**
24
+ * Represents an RGB color value
25
+ */
26
+ export interface Color {
27
+ red: number;
28
+ green: number;
29
+ blue: number;
30
+ alpha?: number;
31
+ }
32
+ /**
33
+ * Document metadata and properties
34
+ */
35
+ export interface DocumentInfo {
36
+ title?: string;
37
+ author?: string;
38
+ subject?: string;
39
+ keywords?: string[];
40
+ creator?: string;
41
+ producer?: string;
42
+ creationDate?: Date;
43
+ modificationDate?: Date;
44
+ encrypted?: boolean;
45
+ pages?: number;
46
+ }
47
+ /**
48
+ * PDF document metadata
49
+ */
50
+ export interface Metadata {
51
+ [key: string]: string | number | boolean | Date | undefined;
52
+ }
53
+ /**
54
+ * Embedded file information
55
+ */
56
+ export interface EmbeddedFile {
57
+ filename: string;
58
+ mimeType?: string;
59
+ size?: number;
60
+ data?: Buffer;
61
+ }
62
+ /**
63
+ * Result of a text search operation
64
+ */
65
+ export interface SearchResult {
66
+ pageIndex: number;
67
+ text: string;
68
+ x: number;
69
+ y: number;
70
+ width: number;
71
+ height: number;
72
+ confidence?: number;
73
+ }
74
+ /**
75
+ * Options for text search operations
76
+ */
77
+ export interface SearchOptions {
78
+ caseSensitive?: boolean;
79
+ wholeWords?: boolean;
80
+ regex?: boolean;
81
+ startPage?: number;
82
+ endPage?: number;
83
+ maxResults?: number;
84
+ }
85
+ /**
86
+ * Options for document conversion
87
+ */
88
+ export interface ConversionOptions {
89
+ format?: 'markdown' | 'text' | 'html';
90
+ includeImages?: boolean;
91
+ includeMetadata?: boolean;
92
+ preserveLayout?: boolean;
93
+ encoding?: string;
94
+ }
95
+ /**
96
+ * Base class for PDF elements (text, images, paths, etc.)
97
+ */
98
+ export interface PdfElement {
99
+ type: string;
100
+ bounds: Rect;
101
+ rotation?: number;
102
+ opacity?: number;
103
+ blendMode?: string;
104
+ }
105
+ /**
106
+ * Text element extracted from PDF
107
+ */
108
+ export interface PdfText extends PdfElement {
109
+ type: 'text';
110
+ content: string;
111
+ fontSize?: number;
112
+ fontName?: string;
113
+ fontFamily?: string;
114
+ bold?: boolean;
115
+ italic?: boolean;
116
+ color?: Color;
117
+ }
118
+ /**
119
+ * Image element from PDF
120
+ */
121
+ export interface PdfImage extends PdfElement {
122
+ type: 'image';
123
+ width: number;
124
+ height: number;
125
+ colorSpace?: string;
126
+ bitsPerComponent?: number;
127
+ data?: Buffer;
128
+ }
129
+ /**
130
+ * Vector path (graphics)
131
+ */
132
+ export interface PdfPath extends PdfElement {
133
+ type: 'path';
134
+ points: Point[];
135
+ strokeColor?: Color;
136
+ fillColor?: Color;
137
+ lineWidth?: number;
138
+ }
139
+ /**
140
+ * Table extracted from PDF
141
+ */
142
+ export interface PdfTable extends PdfElement {
143
+ type: 'table';
144
+ rows: number;
145
+ columns: number;
146
+ cells: PdfTableCell[][];
147
+ }
148
+ /**
149
+ * Individual table cell
150
+ */
151
+ export interface PdfTableCell {
152
+ text: string;
153
+ rowSpan?: number;
154
+ colSpan?: number;
155
+ backgroundColor?: Color;
156
+ borderColor?: Color;
157
+ }
158
+ /**
159
+ * Base annotation interface
160
+ */
161
+ export interface Annotation {
162
+ type: string;
163
+ page: number;
164
+ bounds: Rect;
165
+ author?: string;
166
+ content?: string;
167
+ creationDate?: Date;
168
+ modificationDate?: Date;
169
+ flags?: number;
170
+ }
171
+ /**
172
+ * Text annotation (sticky note style)
173
+ */
174
+ export interface TextAnnotation extends Annotation {
175
+ type: 'text';
176
+ icon?: string;
177
+ color?: Color;
178
+ }
179
+ /**
180
+ * Highlight annotation
181
+ */
182
+ export interface HighlightAnnotation extends Annotation {
183
+ type: 'highlight';
184
+ color?: Color;
185
+ quadPoints?: Point[][];
186
+ }
187
+ /**
188
+ * Link annotation
189
+ */
190
+ export interface LinkAnnotation extends Annotation {
191
+ type: 'link';
192
+ url?: string;
193
+ destination?: {
194
+ page: number;
195
+ x?: number;
196
+ y?: number;
197
+ zoom?: number;
198
+ };
199
+ action?: string;
200
+ }
201
+ /**
202
+ * Ink annotation (drawing/handwriting)
203
+ */
204
+ export interface InkAnnotation extends Annotation {
205
+ type: 'ink';
206
+ strokes: Point[][];
207
+ color?: Color;
208
+ thickness?: number;
209
+ }
210
+ /**
211
+ * Square annotation
212
+ */
213
+ export interface SquareAnnotation extends Annotation {
214
+ type: 'square';
215
+ fillColor?: Color;
216
+ strokeColor?: Color;
217
+ lineWidth?: number;
218
+ }
219
+ /**
220
+ * Circle annotation
221
+ */
222
+ export interface CircleAnnotation extends Annotation {
223
+ type: 'circle';
224
+ fillColor?: Color;
225
+ strokeColor?: Color;
226
+ lineWidth?: number;
227
+ }
228
+ /**
229
+ * Line annotation
230
+ */
231
+ export interface LineAnnotation extends Annotation {
232
+ type: 'line';
233
+ startPoint: Point;
234
+ endPoint: Point;
235
+ color?: Color;
236
+ lineWidth?: number;
237
+ startLineStyle?: string;
238
+ endLineStyle?: string;
239
+ }
240
+ /**
241
+ * Polygon annotation
242
+ */
243
+ export interface PolygonAnnotation extends Annotation {
244
+ type: 'polygon';
245
+ vertices: Point[];
246
+ fillColor?: Color;
247
+ strokeColor?: Color;
248
+ lineWidth?: number;
249
+ }
250
+ /**
251
+ * Native PdfDocument class interface
252
+ */
253
+ export interface NativePdfDocument {
254
+ getVersion(): string;
255
+ getPdfOxideVersion(): string;
256
+ getPageCount(): number;
257
+ getTitle(): string | null;
258
+ getAuthor(): string | null;
259
+ getSubject(): string | null;
260
+ getKeywords(): string[] | null;
261
+ getCreationDate(): Date | null;
262
+ getModificationDate(): Date | null;
263
+ isEncrypted(): boolean;
264
+ isLinearized(): boolean;
265
+ getMetadata(): Metadata;
266
+ setMetadata(metadata: Metadata): void;
267
+ getDocumentInfo(): DocumentInfo;
268
+ extractText(pageIndex: number): string;
269
+ extractTextAsync(pageIndex: number): Promise<string>;
270
+ toMarkdown(): string;
271
+ toMarkdownAsync(): Promise<string>;
272
+ toHtml(): string;
273
+ search(text: string, options?: SearchOptions): SearchResult[];
274
+ hasText(text: string, caseSensitive?: boolean): boolean;
275
+ getPage(pageIndex: number): NativePdfPage;
276
+ getPages(): NativePdfPage[];
277
+ saveToPath(path: string): void;
278
+ saveToPdf(format?: string): Buffer;
279
+ save_async(path: string): Promise<void>;
280
+ saveToStream(stream: NodeJS.WritableStream): void;
281
+ getForms(): any;
282
+ fillForms(values: Record<string, string>): void;
283
+ getEmbeddedFiles(): EmbeddedFile[];
284
+ extractEmbeddedFile(filename: string): Buffer;
285
+ encrypt(userPassword: string, ownerPassword?: string, permissions?: number): void;
286
+ decrypt(password: string): boolean;
287
+ setPermissions(permissions: number): void;
288
+ getOutline(): any[];
289
+ setOutline(outline: any[]): void;
290
+ getStructure(): any;
291
+ getPageLabels(): string[];
292
+ setPageLabels(labels: string[]): void;
293
+ getLayers(): any[];
294
+ setLayerVisibility(layerId: string, visible: boolean): void;
295
+ close(): void;
296
+ }
297
+ /**
298
+ * Native Pdf class interface (represents a PDF file)
299
+ */
300
+ export interface NativePdf {
301
+ getPageCount(): number;
302
+ getPageSizes(): Array<{
303
+ width: number;
304
+ height: number;
305
+ }>;
306
+ getPageSize(pageIndex: number): {
307
+ width: number;
308
+ height: number;
309
+ };
310
+ getPage(pageIndex: number): NativePdfPage;
311
+ renderPage(pageIndex: number, options?: any): Buffer;
312
+ renderPageToCanvas(pageIndex: number, canvas: any): void;
313
+ addPage(width: number, height: number): NativePdfPage;
314
+ removePage(pageIndex: number): void;
315
+ insertPage(pageIndex: number, width: number, height: number): NativePdfPage;
316
+ rotatePage(pageIndex: number, rotation: number): void;
317
+ save_async(path: string): Promise<void>;
318
+ saveToBuffer(): Buffer;
319
+ close(): void;
320
+ }
321
+ /**
322
+ * Native PdfPage class interface
323
+ */
324
+ export interface NativePdfPage {
325
+ getIndex(): number;
326
+ getWidth(): number;
327
+ getHeight(): number;
328
+ getRotation(): number;
329
+ getMediaBox(): Rect;
330
+ getCropBox(): Rect;
331
+ extractText(): string;
332
+ extractElements(): PdfElement[];
333
+ getImages(): PdfImage[];
334
+ getTables(): PdfTable[];
335
+ render(options?: any): Buffer;
336
+ renderToCanvas(canvas: any): void;
337
+ getAnnotations(): Annotation[];
338
+ addAnnotation(annotation: Annotation): void;
339
+ removeAnnotation(annotationIndex: number): void;
340
+ setMediaBox(rect: Rect): void;
341
+ setCropBox(rect: Rect): void;
342
+ rotate(rotation: number): void;
343
+ drawText(text: string, x: number, y: number, options?: any): void;
344
+ drawImage(image: Buffer, x: number, y: number, width: number, height: number): void;
345
+ drawPath(points: Point[], options?: any): void;
346
+ searchText(text: string, options?: SearchOptions): SearchResult[];
347
+ close(): void;
348
+ }
349
+ /**
350
+ * Native builder class interface
351
+ */
352
+ export interface NativePdfBuilder {
353
+ title(title: string): NativePdfBuilder;
354
+ author(author: string): NativePdfBuilder;
355
+ subject(subject: string): NativePdfBuilder;
356
+ keywords(keywords: string[]): NativePdfBuilder;
357
+ creator(creator: string): NativePdfBuilder;
358
+ producer(producer: string): NativePdfBuilder;
359
+ build(): NativePdf;
360
+ }
361
+ /**
362
+ * Native text searcher interface
363
+ */
364
+ export interface NativeTextSearcher {
365
+ search(text: string, options?: SearchOptions): SearchResult[];
366
+ replaceAll(searchText: string, replaceText: string): number;
367
+ getMatches(text: string): SearchResult[];
368
+ }
369
+ /**
370
+ * Page size constants
371
+ */
372
+ export interface PageSizeConstants {
373
+ A0: {
374
+ width: number;
375
+ height: number;
376
+ };
377
+ A1: {
378
+ width: number;
379
+ height: number;
380
+ };
381
+ A2: {
382
+ width: number;
383
+ height: number;
384
+ };
385
+ A3: {
386
+ width: number;
387
+ height: number;
388
+ };
389
+ A4: {
390
+ width: number;
391
+ height: number;
392
+ };
393
+ A5: {
394
+ width: number;
395
+ height: number;
396
+ };
397
+ Letter: {
398
+ width: number;
399
+ height: number;
400
+ };
401
+ Legal: {
402
+ width: number;
403
+ height: number;
404
+ };
405
+ Tabloid: {
406
+ width: number;
407
+ height: number;
408
+ };
409
+ }
410
+ /**
411
+ * Complete native module interface
412
+ */
413
+ export interface NativeModule {
414
+ getVersion(): string;
415
+ getPdfOxideVersion(): string;
416
+ PdfDocument: new (...args: any[]) => NativePdfDocument;
417
+ Pdf: new (...args: any[]) => NativePdf;
418
+ PdfPage: new (...args: any[]) => NativePdfPage;
419
+ PdfBuilder: new (...args: any[]) => NativePdfBuilder;
420
+ TextSearcher: new (...args: any[]) => NativeTextSearcher;
421
+ PdfElement: new (...args: any[]) => PdfElement;
422
+ PdfText: new (...args: any[]) => PdfText;
423
+ PdfImage: new (...args: any[]) => PdfImage;
424
+ PdfPath: new (...args: any[]) => PdfPath;
425
+ PdfTable: new (...args: any[]) => PdfTable;
426
+ PdfStructure: new (...args: any[]) => any;
427
+ Annotation: new (...args: any[]) => Annotation;
428
+ TextAnnotation: new (...args: any[]) => TextAnnotation;
429
+ HighlightAnnotation: new (...args: any[]) => HighlightAnnotation;
430
+ LinkAnnotation: new (...args: any[]) => LinkAnnotation;
431
+ PageSize: PageSizeConstants;
432
+ Rect: new (x: number, y: number, width: number, height: number) => Rect;
433
+ Point: new (x: number, y: number) => Point;
434
+ Color: new (red: number, green: number, blue: number, alpha?: number) => Color;
435
+ ConversionOptions: new (...args: any[]) => ConversionOptions;
436
+ SearchOptions: new (...args: any[]) => SearchOptions;
437
+ SearchResult: new (...args: any[]) => SearchResult;
438
+ [key: string]: any;
439
+ }