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.
- package/LICENSE-APACHE +176 -0
- package/LICENSE-MIT +25 -0
- package/README.md +218 -0
- package/lib/builders/annotation-builder.d.ts +198 -0
- package/lib/builders/annotation-builder.js +317 -0
- package/lib/builders/conversion-options-builder.d.ts +106 -0
- package/lib/builders/conversion-options-builder.js +214 -0
- package/lib/builders/document-builder.d.ts +381 -0
- package/lib/builders/document-builder.js +770 -0
- package/lib/builders/index.d.ts +13 -0
- package/lib/builders/index.js +13 -0
- package/lib/builders/metadata-builder.d.ts +201 -0
- package/lib/builders/metadata-builder.js +285 -0
- package/lib/builders/pdf-builder.d.ts +216 -0
- package/lib/builders/pdf-builder.js +350 -0
- package/lib/builders/search-options-builder.d.ts +73 -0
- package/lib/builders/search-options-builder.js +129 -0
- package/lib/builders/streaming-table.d.ts +64 -0
- package/lib/builders/streaming-table.js +140 -0
- package/lib/document-editor-manager.d.ts +139 -0
- package/lib/document-editor-manager.js +256 -0
- package/lib/document-editor.d.ts +124 -0
- package/lib/document-editor.js +318 -0
- package/lib/errors.d.ts +382 -0
- package/lib/errors.js +1115 -0
- package/lib/form-field-manager.d.ts +299 -0
- package/lib/form-field-manager.js +568 -0
- package/lib/hybrid-ml-manager.d.ts +142 -0
- package/lib/hybrid-ml-manager.js +208 -0
- package/lib/index.d.ts +205 -0
- package/lib/index.js +693 -0
- package/lib/managers/accessibility-manager.d.ts +148 -0
- package/lib/managers/accessibility-manager.js +234 -0
- package/lib/managers/annotation-manager.d.ts +219 -0
- package/lib/managers/annotation-manager.js +359 -0
- package/lib/managers/barcode-manager.d.ts +82 -0
- package/lib/managers/barcode-manager.js +263 -0
- package/lib/managers/batch-manager.d.ts +185 -0
- package/lib/managers/batch-manager.js +385 -0
- package/lib/managers/cache-manager.d.ts +181 -0
- package/lib/managers/cache-manager.js +384 -0
- package/lib/managers/compliance-manager.d.ts +103 -0
- package/lib/managers/compliance-manager.js +453 -0
- package/lib/managers/content-manager.d.ts +120 -0
- package/lib/managers/content-manager.js +294 -0
- package/lib/managers/document-utility-manager.d.ts +369 -0
- package/lib/managers/document-utility-manager.js +730 -0
- package/lib/managers/dom-pdf-creator.d.ts +104 -0
- package/lib/managers/dom-pdf-creator.js +299 -0
- package/lib/managers/editing-manager.d.ts +248 -0
- package/lib/managers/editing-manager.js +387 -0
- package/lib/managers/enterprise-manager.d.ts +192 -0
- package/lib/managers/enterprise-manager.js +307 -0
- package/lib/managers/extended-managers.d.ts +122 -0
- package/lib/managers/extended-managers.js +664 -0
- package/lib/managers/extraction-manager.d.ts +246 -0
- package/lib/managers/extraction-manager.js +482 -0
- package/lib/managers/final-utilities.d.ts +127 -0
- package/lib/managers/final-utilities.js +657 -0
- package/lib/managers/hybrid-ml-advanced.d.ts +136 -0
- package/lib/managers/hybrid-ml-advanced.js +722 -0
- package/lib/managers/index.d.ts +64 -0
- package/lib/managers/index.js +69 -0
- package/lib/managers/layer-manager.d.ts +203 -0
- package/lib/managers/layer-manager.js +401 -0
- package/lib/managers/metadata-manager.d.ts +148 -0
- package/lib/managers/metadata-manager.js +280 -0
- package/lib/managers/ocr-manager.d.ts +194 -0
- package/lib/managers/ocr-manager.js +582 -0
- package/lib/managers/optimization-manager.d.ts +102 -0
- package/lib/managers/optimization-manager.js +213 -0
- package/lib/managers/outline-manager.d.ts +101 -0
- package/lib/managers/outline-manager.js +169 -0
- package/lib/managers/page-manager.d.ts +142 -0
- package/lib/managers/page-manager.js +235 -0
- package/lib/managers/pattern-detection.d.ts +169 -0
- package/lib/managers/pattern-detection.js +322 -0
- package/lib/managers/rendering-manager.d.ts +353 -0
- package/lib/managers/rendering-manager.js +679 -0
- package/lib/managers/search-manager.d.ts +235 -0
- package/lib/managers/search-manager.js +329 -0
- package/lib/managers/security-manager.d.ts +161 -0
- package/lib/managers/security-manager.js +292 -0
- package/lib/managers/signature-manager.d.ts +738 -0
- package/lib/managers/signature-manager.js +1509 -0
- package/lib/managers/streams.d.ts +262 -0
- package/lib/managers/streams.js +477 -0
- package/lib/managers/xfa-manager.d.ts +227 -0
- package/lib/managers/xfa-manager.js +539 -0
- package/lib/native-loader.d.ts +7 -0
- package/lib/native-loader.js +62 -0
- package/lib/native.d.ts +16 -0
- package/lib/native.js +69 -0
- package/lib/pdf-creator-manager.d.ts +200 -0
- package/lib/pdf-creator-manager.js +381 -0
- package/lib/properties.d.ts +79 -0
- package/lib/properties.js +454 -0
- package/lib/result-accessors-manager.d.ts +346 -0
- package/lib/result-accessors-manager.js +706 -0
- package/lib/thumbnail-manager.d.ts +121 -0
- package/lib/thumbnail-manager.js +205 -0
- package/lib/timestamp.d.ts +54 -0
- package/lib/timestamp.js +115 -0
- package/lib/tsa-client.d.ts +44 -0
- package/lib/tsa-client.js +67 -0
- package/lib/types/common.d.ts +189 -0
- package/lib/types/common.js +17 -0
- package/lib/types/document-types.d.ts +352 -0
- package/lib/types/document-types.js +82 -0
- package/lib/types/index.d.ts +5 -0
- package/lib/types/index.js +5 -0
- package/lib/types/manager-types.d.ts +179 -0
- package/lib/types/manager-types.js +100 -0
- package/lib/types/native-bindings.d.ts +439 -0
- package/lib/types/native-bindings.js +7 -0
- package/lib/workers/index.d.ts +6 -0
- package/lib/workers/index.js +5 -0
- package/lib/workers/pool.d.ts +64 -0
- package/lib/workers/pool.js +192 -0
- package/lib/workers/worker.d.ts +5 -0
- package/lib/workers/worker.js +99 -0
- package/package.json +79 -0
- package/prebuilds/darwin-arm64/pdf_oxide.node +0 -0
- package/prebuilds/darwin-x64/pdf_oxide.node +0 -0
- package/prebuilds/linux-arm64/pdf_oxide.node +0 -0
- package/prebuilds/linux-x64/pdf_oxide.node +0 -0
- 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
|
+
}
|