pdf-oxide 0.3.24 → 0.3.28
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/lib/builders/annotation-builder.d.ts +199 -0
- package/lib/builders/annotation-builder.d.ts.map +1 -0
- package/lib/builders/annotation-builder.js +318 -0
- package/lib/builders/annotation-builder.js.map +1 -0
- package/lib/builders/conversion-options-builder.d.ts +107 -0
- package/lib/builders/conversion-options-builder.d.ts.map +1 -0
- package/lib/builders/conversion-options-builder.js +215 -0
- package/lib/builders/conversion-options-builder.js.map +1 -0
- package/{src/builders/index.ts → lib/builders/index.d.ts} +1 -1
- package/lib/builders/index.d.ts.map +1 -0
- package/lib/builders/index.js +12 -0
- package/lib/builders/index.js.map +1 -0
- package/lib/builders/metadata-builder.d.ts +202 -0
- package/lib/builders/metadata-builder.d.ts.map +1 -0
- package/lib/builders/metadata-builder.js +286 -0
- package/lib/builders/metadata-builder.js.map +1 -0
- package/lib/builders/pdf-builder.d.ts +215 -0
- package/lib/builders/pdf-builder.d.ts.map +1 -0
- package/lib/builders/pdf-builder.js +339 -0
- package/lib/builders/pdf-builder.js.map +1 -0
- package/lib/builders/search-options-builder.d.ts +74 -0
- package/lib/builders/search-options-builder.d.ts.map +1 -0
- package/lib/builders/search-options-builder.js +130 -0
- package/lib/builders/search-options-builder.js.map +1 -0
- package/lib/document-editor-manager.d.ts +140 -0
- package/lib/document-editor-manager.d.ts.map +1 -0
- package/lib/document-editor-manager.js +257 -0
- package/lib/document-editor-manager.js.map +1 -0
- package/lib/errors.d.ts +383 -0
- package/lib/errors.d.ts.map +1 -0
- package/lib/errors.js +1117 -0
- package/lib/errors.js.map +1 -0
- package/lib/form-field-manager.d.ts +300 -0
- package/lib/form-field-manager.d.ts.map +1 -0
- package/lib/form-field-manager.js +567 -0
- package/lib/form-field-manager.js.map +1 -0
- package/lib/hybrid-ml-manager.d.ts +143 -0
- package/lib/hybrid-ml-manager.d.ts.map +1 -0
- package/lib/hybrid-ml-manager.js +209 -0
- package/lib/hybrid-ml-manager.js.map +1 -0
- package/lib/index.d.ts +23 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +280 -0
- package/lib/index.js.map +1 -0
- package/lib/managers/accessibility-manager.d.ts +149 -0
- package/lib/managers/accessibility-manager.d.ts.map +1 -0
- package/lib/managers/accessibility-manager.js +224 -0
- package/lib/managers/accessibility-manager.js.map +1 -0
- package/lib/managers/annotation-manager.d.ts +220 -0
- package/lib/managers/annotation-manager.d.ts.map +1 -0
- package/lib/managers/annotation-manager.js +360 -0
- package/lib/managers/annotation-manager.js.map +1 -0
- package/lib/managers/barcode-manager.d.ts +80 -0
- package/lib/managers/barcode-manager.d.ts.map +1 -0
- package/lib/managers/barcode-manager.js +226 -0
- package/lib/managers/barcode-manager.js.map +1 -0
- package/lib/managers/batch-manager.d.ts +186 -0
- package/lib/managers/batch-manager.d.ts.map +1 -0
- package/lib/managers/batch-manager.js +389 -0
- package/lib/managers/batch-manager.js.map +1 -0
- package/lib/managers/cache-manager.d.ts +182 -0
- package/lib/managers/cache-manager.d.ts.map +1 -0
- package/lib/managers/cache-manager.js +387 -0
- package/lib/managers/cache-manager.js.map +1 -0
- package/lib/managers/compliance-manager.d.ts +104 -0
- package/lib/managers/compliance-manager.d.ts.map +1 -0
- package/lib/managers/compliance-manager.js +415 -0
- package/lib/managers/compliance-manager.js.map +1 -0
- package/lib/managers/content-manager.d.ts +121 -0
- package/lib/managers/content-manager.d.ts.map +1 -0
- package/lib/managers/content-manager.js +295 -0
- package/lib/managers/content-manager.js.map +1 -0
- package/lib/managers/document-utility-manager.d.ts +370 -0
- package/lib/managers/document-utility-manager.d.ts.map +1 -0
- package/lib/managers/document-utility-manager.js +731 -0
- package/lib/managers/document-utility-manager.js.map +1 -0
- package/lib/managers/dom-pdf-creator.d.ts +105 -0
- package/lib/managers/dom-pdf-creator.d.ts.map +1 -0
- package/lib/managers/dom-pdf-creator.js +300 -0
- package/lib/managers/dom-pdf-creator.js.map +1 -0
- package/lib/managers/editing-manager.d.ts +249 -0
- package/lib/managers/editing-manager.d.ts.map +1 -0
- package/lib/managers/editing-manager.js +388 -0
- package/lib/managers/editing-manager.js.map +1 -0
- package/lib/managers/enterprise-manager.d.ts +193 -0
- package/lib/managers/enterprise-manager.d.ts.map +1 -0
- package/lib/managers/enterprise-manager.js +305 -0
- package/lib/managers/enterprise-manager.js.map +1 -0
- package/lib/managers/extended-managers.d.ts +123 -0
- package/lib/managers/extended-managers.d.ts.map +1 -0
- package/lib/managers/extended-managers.js +658 -0
- package/lib/managers/extended-managers.js.map +1 -0
- package/lib/managers/extraction-manager.d.ts +247 -0
- package/lib/managers/extraction-manager.d.ts.map +1 -0
- package/lib/managers/extraction-manager.js +478 -0
- package/lib/managers/extraction-manager.js.map +1 -0
- package/lib/managers/final-utilities.d.ts +128 -0
- package/lib/managers/final-utilities.d.ts.map +1 -0
- package/lib/managers/final-utilities.js +653 -0
- package/lib/managers/final-utilities.js.map +1 -0
- package/lib/managers/hybrid-ml-advanced.d.ts +137 -0
- package/lib/managers/hybrid-ml-advanced.d.ts.map +1 -0
- package/lib/managers/hybrid-ml-advanced.js +707 -0
- package/lib/managers/hybrid-ml-advanced.js.map +1 -0
- package/lib/managers/index.d.ts +65 -0
- package/lib/managers/index.d.ts.map +1 -0
- package/lib/managers/index.js +70 -0
- package/lib/managers/index.js.map +1 -0
- package/lib/managers/layer-manager.d.ts +204 -0
- package/lib/managers/layer-manager.d.ts.map +1 -0
- package/lib/managers/layer-manager.js +403 -0
- package/lib/managers/layer-manager.js.map +1 -0
- package/lib/managers/metadata-manager.d.ts +149 -0
- package/lib/managers/metadata-manager.d.ts.map +1 -0
- package/lib/managers/metadata-manager.js +281 -0
- package/lib/managers/metadata-manager.js.map +1 -0
- package/lib/managers/ocr-manager.d.ts +195 -0
- package/lib/managers/ocr-manager.d.ts.map +1 -0
- package/lib/managers/ocr-manager.js +583 -0
- package/lib/managers/ocr-manager.js.map +1 -0
- package/lib/managers/optimization-manager.d.ts +103 -0
- package/lib/managers/optimization-manager.d.ts.map +1 -0
- package/lib/managers/optimization-manager.js +194 -0
- package/lib/managers/optimization-manager.js.map +1 -0
- package/lib/managers/outline-manager.d.ts +102 -0
- package/lib/managers/outline-manager.d.ts.map +1 -0
- package/lib/managers/outline-manager.js +170 -0
- package/lib/managers/outline-manager.js.map +1 -0
- package/lib/managers/page-manager.d.ts +143 -0
- package/lib/managers/page-manager.d.ts.map +1 -0
- package/lib/managers/page-manager.js +237 -0
- package/lib/managers/page-manager.js.map +1 -0
- package/lib/managers/pattern-detection.d.ts +170 -0
- package/lib/managers/pattern-detection.d.ts.map +1 -0
- package/lib/managers/pattern-detection.js +325 -0
- package/lib/managers/pattern-detection.js.map +1 -0
- package/lib/managers/rendering-manager.d.ts +354 -0
- package/lib/managers/rendering-manager.d.ts.map +1 -0
- package/lib/managers/rendering-manager.js +680 -0
- package/lib/managers/rendering-manager.js.map +1 -0
- package/lib/managers/search-manager.d.ts +236 -0
- package/lib/managers/search-manager.d.ts.map +1 -0
- package/lib/managers/search-manager.js +330 -0
- package/lib/managers/search-manager.js.map +1 -0
- package/lib/managers/security-manager.d.ts +162 -0
- package/lib/managers/security-manager.d.ts.map +1 -0
- package/lib/managers/security-manager.js +293 -0
- package/lib/managers/security-manager.js.map +1 -0
- package/lib/managers/signature-manager.d.ts +725 -0
- package/lib/managers/signature-manager.d.ts.map +1 -0
- package/lib/managers/signature-manager.js +1365 -0
- package/lib/managers/signature-manager.js.map +1 -0
- package/lib/managers/streams.d.ts +263 -0
- package/lib/managers/streams.d.ts.map +1 -0
- package/lib/managers/streams.js +472 -0
- package/lib/managers/streams.js.map +1 -0
- package/lib/managers/xfa-manager.d.ts +228 -0
- package/lib/managers/xfa-manager.d.ts.map +1 -0
- package/lib/managers/xfa-manager.js +490 -0
- package/lib/managers/xfa-manager.js.map +1 -0
- package/lib/pdf-creator-manager.d.ts +201 -0
- package/lib/pdf-creator-manager.d.ts.map +1 -0
- package/lib/pdf-creator-manager.js +379 -0
- package/lib/pdf-creator-manager.js.map +1 -0
- package/lib/properties.d.ts +80 -0
- package/lib/properties.d.ts.map +1 -0
- package/lib/properties.js +455 -0
- package/lib/properties.js.map +1 -0
- package/lib/result-accessors-manager.d.ts +347 -0
- package/lib/result-accessors-manager.d.ts.map +1 -0
- package/lib/result-accessors-manager.js +705 -0
- package/lib/result-accessors-manager.js.map +1 -0
- package/lib/thumbnail-manager.d.ts +122 -0
- package/lib/thumbnail-manager.d.ts.map +1 -0
- package/lib/thumbnail-manager.js +206 -0
- package/lib/thumbnail-manager.js.map +1 -0
- package/lib/types/common.d.ts +93 -0
- package/lib/types/common.d.ts.map +1 -0
- package/lib/types/common.js +5 -0
- package/lib/types/common.js.map +1 -0
- package/lib/types/document-types.d.ts +353 -0
- package/lib/types/document-types.d.ts.map +1 -0
- package/lib/types/document-types.js +83 -0
- package/lib/types/document-types.js.map +1 -0
- package/{src/types/index.ts → lib/types/index.d.ts} +1 -1
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/index.js +6 -0
- package/lib/types/index.js.map +1 -0
- package/lib/types/manager-types.d.ts +180 -0
- package/lib/types/manager-types.d.ts.map +1 -0
- package/lib/types/manager-types.js +99 -0
- package/lib/types/manager-types.js.map +1 -0
- package/lib/types/native-bindings.d.ts +440 -0
- package/lib/types/native-bindings.d.ts.map +1 -0
- package/lib/types/native-bindings.js +8 -0
- package/lib/types/native-bindings.js.map +1 -0
- package/{src/workers/index.ts → lib/workers/index.d.ts} +1 -1
- package/lib/workers/index.d.ts.map +1 -0
- package/lib/workers/index.js +6 -0
- package/lib/workers/index.js.map +1 -0
- package/lib/workers/pool.d.ts +65 -0
- package/lib/workers/pool.d.ts.map +1 -0
- package/lib/workers/pool.js +195 -0
- package/lib/workers/pool.js.map +1 -0
- package/lib/workers/worker.d.ts +6 -0
- package/lib/workers/worker.d.ts.map +1 -0
- package/lib/workers/worker.js +100 -0
- package/lib/workers/worker.js.map +1 -0
- package/package.json +12 -22
- 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
- package/binding.gyp +0 -35
- package/src/builders/annotation-builder.ts +0 -367
- package/src/builders/conversion-options-builder.ts +0 -257
- package/src/builders/metadata-builder.ts +0 -317
- package/src/builders/pdf-builder.ts +0 -386
- package/src/builders/search-options-builder.ts +0 -151
- package/src/document-editor-manager.ts +0 -318
- package/src/errors.ts +0 -1629
- package/src/form-field-manager.ts +0 -666
- package/src/hybrid-ml-manager.ts +0 -283
- package/src/index.ts +0 -453
- package/src/managers/accessibility-manager.ts +0 -338
- package/src/managers/annotation-manager.ts +0 -439
- package/src/managers/barcode-manager.ts +0 -235
- package/src/managers/batch-manager.ts +0 -533
- package/src/managers/cache-manager.ts +0 -486
- package/src/managers/compliance-manager.ts +0 -375
- package/src/managers/content-manager.ts +0 -339
- package/src/managers/document-utility-manager.ts +0 -922
- package/src/managers/dom-pdf-creator.ts +0 -365
- package/src/managers/editing-manager.ts +0 -514
- package/src/managers/enterprise-manager.ts +0 -478
- package/src/managers/extended-managers.ts +0 -437
- package/src/managers/extraction-manager.ts +0 -583
- package/src/managers/final-utilities.ts +0 -429
- package/src/managers/hybrid-ml-advanced.ts +0 -479
- package/src/managers/index.ts +0 -239
- package/src/managers/layer-manager.ts +0 -500
- package/src/managers/metadata-manager.ts +0 -303
- package/src/managers/ocr-manager.ts +0 -756
- package/src/managers/optimization-manager.ts +0 -262
- package/src/managers/outline-manager.ts +0 -196
- package/src/managers/page-manager.ts +0 -289
- package/src/managers/pattern-detection.ts +0 -440
- package/src/managers/rendering-manager.ts +0 -863
- package/src/managers/search-manager.ts +0 -385
- package/src/managers/security-manager.ts +0 -345
- package/src/managers/signature-manager.ts +0 -1664
- package/src/managers/streams.ts +0 -618
- package/src/managers/xfa-manager.ts +0 -500
- package/src/pdf-creator-manager.ts +0 -494
- package/src/properties.ts +0 -522
- package/src/result-accessors-manager.ts +0 -867
- package/src/tests/advanced-features.test.ts +0 -414
- package/src/tests/advanced.test.ts +0 -266
- package/src/tests/extended-managers.test.ts +0 -316
- package/src/tests/final-utilities.test.ts +0 -455
- package/src/tests/foundation.test.ts +0 -315
- package/src/tests/high-demand.test.ts +0 -257
- package/src/tests/specialized.test.ts +0 -97
- package/src/thumbnail-manager.ts +0 -272
- package/src/types/common.ts +0 -142
- package/src/types/document-types.ts +0 -457
- package/src/types/manager-types.ts +0 -284
- package/src/types/native-bindings.ts +0 -517
- package/src/workers/pool.ts +0 -274
- package/src/workers/worker.ts +0 -131
|
@@ -1,367 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Builder for creating PDF annotations
|
|
3
|
-
*
|
|
4
|
-
* Configures annotation properties like content, appearance, author, and behavior.
|
|
5
|
-
*
|
|
6
|
-
* @example
|
|
7
|
-
* ```typescript
|
|
8
|
-
* import { AnnotationBuilder } from 'pdf_oxide';
|
|
9
|
-
*
|
|
10
|
-
* const annotation = AnnotationBuilder.create()
|
|
11
|
-
* .type('highlight')
|
|
12
|
-
* .content('Important section')
|
|
13
|
-
* .author('Reviewer')
|
|
14
|
-
* .color([1, 1, 0]) // Yellow
|
|
15
|
-
* .build();
|
|
16
|
-
*
|
|
17
|
-
* pdf.addAnnotation(annotation);
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
interface AnnotationBounds {
|
|
22
|
-
x: number;
|
|
23
|
-
y: number;
|
|
24
|
-
width: number;
|
|
25
|
-
height: number;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export interface Annotation {
|
|
29
|
-
type: string;
|
|
30
|
-
content: string;
|
|
31
|
-
author?: string;
|
|
32
|
-
subject?: string;
|
|
33
|
-
color: number[];
|
|
34
|
-
opacity: number;
|
|
35
|
-
bounds?: AnnotationBounds;
|
|
36
|
-
creationDate: Date;
|
|
37
|
-
modificationDate: Date;
|
|
38
|
-
flags: number;
|
|
39
|
-
reply?: string;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export class AnnotationBuilder {
|
|
43
|
-
private _type: string = 'text';
|
|
44
|
-
private _content: string = '';
|
|
45
|
-
private _author?: string;
|
|
46
|
-
private _subject?: string;
|
|
47
|
-
private _color: number[] = [1, 0, 0]; // Default: red (RGB normalized 0-1)
|
|
48
|
-
private _opacity: number = 1.0;
|
|
49
|
-
private _bounds?: AnnotationBounds;
|
|
50
|
-
private _creationDate: Date = new Date();
|
|
51
|
-
private _modificationDate: Date = new Date();
|
|
52
|
-
private _flags: number = 0;
|
|
53
|
-
private _reply?: string;
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Creates a new AnnotationBuilder instance
|
|
57
|
-
* @private
|
|
58
|
-
*/
|
|
59
|
-
private constructor() {}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Creates a new AnnotationBuilder instance
|
|
63
|
-
* @returns New builder instance
|
|
64
|
-
*/
|
|
65
|
-
static create(): AnnotationBuilder {
|
|
66
|
-
return new AnnotationBuilder();
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Creates a text annotation (comment/note)
|
|
71
|
-
* @returns This builder for chaining
|
|
72
|
-
*/
|
|
73
|
-
asText(): this {
|
|
74
|
-
this._type = 'text';
|
|
75
|
-
return this;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Creates a highlight annotation
|
|
80
|
-
* @returns This builder for chaining
|
|
81
|
-
*/
|
|
82
|
-
asHighlight(): this {
|
|
83
|
-
this._type = 'highlight';
|
|
84
|
-
return this;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Creates an underline annotation
|
|
89
|
-
* @returns This builder for chaining
|
|
90
|
-
*/
|
|
91
|
-
asUnderline(): this {
|
|
92
|
-
this._type = 'underline';
|
|
93
|
-
return this;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Creates a strikeout annotation
|
|
98
|
-
* @returns This builder for chaining
|
|
99
|
-
*/
|
|
100
|
-
asStrikeout(): this {
|
|
101
|
-
this._type = 'strikeout';
|
|
102
|
-
return this;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Creates a squiggly (wavy underline) annotation
|
|
107
|
-
* @returns This builder for chaining
|
|
108
|
-
*/
|
|
109
|
-
asSquiggly(): this {
|
|
110
|
-
this._type = 'squiggly';
|
|
111
|
-
return this;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Sets the annotation type
|
|
116
|
-
* @param type - Annotation type ('text', 'highlight', 'underline', 'strikeout', 'squiggly')
|
|
117
|
-
* @returns This builder for chaining
|
|
118
|
-
*/
|
|
119
|
-
type(type: string): this {
|
|
120
|
-
const validTypes = ['text', 'highlight', 'underline', 'strikeout', 'squiggly', 'note'];
|
|
121
|
-
if (!validTypes.includes(type)) {
|
|
122
|
-
throw new Error(`Invalid annotation type. Must be one of: ${validTypes.join(', ')}`);
|
|
123
|
-
}
|
|
124
|
-
this._type = type;
|
|
125
|
-
return this;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* Sets the annotation content/text
|
|
130
|
-
* @param content - The annotation content
|
|
131
|
-
* @returns This builder for chaining
|
|
132
|
-
*/
|
|
133
|
-
content(content: string): this {
|
|
134
|
-
if (typeof content !== 'string') {
|
|
135
|
-
throw new Error('Content must be a string');
|
|
136
|
-
}
|
|
137
|
-
this._content = content;
|
|
138
|
-
return this;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* Sets the author of the annotation
|
|
143
|
-
* @param author - The author name
|
|
144
|
-
* @returns This builder for chaining
|
|
145
|
-
*/
|
|
146
|
-
author(author: string): this {
|
|
147
|
-
if (typeof author !== 'string') {
|
|
148
|
-
throw new Error('Author must be a string');
|
|
149
|
-
}
|
|
150
|
-
this._author = author.length > 0 ? author : undefined;
|
|
151
|
-
return this;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Sets the subject/title of the annotation
|
|
156
|
-
* @param subject - The annotation subject
|
|
157
|
-
* @returns This builder for chaining
|
|
158
|
-
*/
|
|
159
|
-
subject(subject: string): this {
|
|
160
|
-
if (typeof subject !== 'string') {
|
|
161
|
-
throw new Error('Subject must be a string');
|
|
162
|
-
}
|
|
163
|
-
this._subject = subject.length > 0 ? subject : undefined;
|
|
164
|
-
return this;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* Sets the color of the annotation (RGB, normalized 0-1)
|
|
169
|
-
* @param rgb - RGB color array [r, g, b] with values 0-1
|
|
170
|
-
* @returns This builder for chaining
|
|
171
|
-
*
|
|
172
|
-
* @example
|
|
173
|
-
* ```typescript
|
|
174
|
-
* builder.color([1, 1, 0]); // Yellow
|
|
175
|
-
* builder.color([1, 0, 0]); // Red
|
|
176
|
-
* builder.color([0, 1, 0]); // Green
|
|
177
|
-
* ```
|
|
178
|
-
*/
|
|
179
|
-
color(rgb: number[]): this {
|
|
180
|
-
if (!Array.isArray(rgb) || rgb.length !== 3) {
|
|
181
|
-
throw new Error('Color must be an array of 3 RGB values [r, g, b]');
|
|
182
|
-
}
|
|
183
|
-
if (!rgb.every((c) => typeof c === 'number' && c >= 0 && c <= 1)) {
|
|
184
|
-
throw new Error('RGB values must be numbers between 0 and 1');
|
|
185
|
-
}
|
|
186
|
-
this._color = [...rgb];
|
|
187
|
-
return this;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* Sets the color using common color names
|
|
192
|
-
* @param colorName - Color name (e.g., 'red', 'yellow', 'green', 'blue')
|
|
193
|
-
* @returns This builder for chaining
|
|
194
|
-
*
|
|
195
|
-
* @example
|
|
196
|
-
* ```typescript
|
|
197
|
-
* builder.colorName('yellow');
|
|
198
|
-
* builder.colorName('red');
|
|
199
|
-
* ```
|
|
200
|
-
*/
|
|
201
|
-
colorName(colorName: string): this {
|
|
202
|
-
const colors: Record<string, number[]> = {
|
|
203
|
-
red: [1, 0, 0],
|
|
204
|
-
green: [0, 1, 0],
|
|
205
|
-
blue: [0, 0, 1],
|
|
206
|
-
yellow: [1, 1, 0],
|
|
207
|
-
cyan: [0, 1, 1],
|
|
208
|
-
magenta: [1, 0, 1],
|
|
209
|
-
white: [1, 1, 1],
|
|
210
|
-
black: [0, 0, 0],
|
|
211
|
-
gray: [0.5, 0.5, 0.5],
|
|
212
|
-
orange: [1, 0.5, 0],
|
|
213
|
-
purple: [0.5, 0, 0.5],
|
|
214
|
-
};
|
|
215
|
-
|
|
216
|
-
const lowerColorName = colorName.toLowerCase();
|
|
217
|
-
if (!colors[lowerColorName]) {
|
|
218
|
-
const available = Object.keys(colors).join(', ');
|
|
219
|
-
throw new Error(`Unknown color. Available colors: ${available}`);
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
this._color = [...colors[lowerColorName]];
|
|
223
|
-
return this;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* Sets the opacity/transparency (0-1)
|
|
228
|
-
* @param opacity - Opacity value (0=transparent, 1=opaque)
|
|
229
|
-
* @returns This builder for chaining
|
|
230
|
-
*/
|
|
231
|
-
opacity(opacity: number): this {
|
|
232
|
-
if (typeof opacity !== 'number' || opacity < 0 || opacity > 1) {
|
|
233
|
-
throw new Error('Opacity must be a number between 0 and 1');
|
|
234
|
-
}
|
|
235
|
-
this._opacity = opacity;
|
|
236
|
-
return this;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
/**
|
|
240
|
-
* Sets the bounding box for the annotation
|
|
241
|
-
* @param bounds - Bounding box {x, y, width, height}
|
|
242
|
-
* @returns This builder for chaining
|
|
243
|
-
*
|
|
244
|
-
* @example
|
|
245
|
-
* ```typescript
|
|
246
|
-
* builder.bounds({x: 100, y: 200, width: 150, height: 30});
|
|
247
|
-
* ```
|
|
248
|
-
*/
|
|
249
|
-
bounds(bounds: AnnotationBounds): this {
|
|
250
|
-
if (typeof bounds !== 'object' || bounds === null) {
|
|
251
|
-
throw new Error('Bounds must be an object');
|
|
252
|
-
}
|
|
253
|
-
const { x, y, width, height } = bounds;
|
|
254
|
-
if (![x, y, width, height].every((v) => typeof v === 'number' && v >= 0)) {
|
|
255
|
-
throw new Error('Bounds must have numeric x, y, width, height values >= 0');
|
|
256
|
-
}
|
|
257
|
-
this._bounds = { x, y, width, height };
|
|
258
|
-
return this;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
/**
|
|
262
|
-
* Sets the creation date
|
|
263
|
-
* @param date - The creation date
|
|
264
|
-
* @returns This builder for chaining
|
|
265
|
-
*/
|
|
266
|
-
creationDate(date: Date): this {
|
|
267
|
-
if (!(date instanceof Date)) {
|
|
268
|
-
throw new Error('creationDate must be a Date object');
|
|
269
|
-
}
|
|
270
|
-
this._creationDate = new Date(date);
|
|
271
|
-
return this;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
/**
|
|
275
|
-
* Sets the modification date
|
|
276
|
-
* @param date - The modification date
|
|
277
|
-
* @returns This builder for chaining
|
|
278
|
-
*/
|
|
279
|
-
modificationDate(date: Date): this {
|
|
280
|
-
if (!(date instanceof Date)) {
|
|
281
|
-
throw new Error('modificationDate must be a Date object');
|
|
282
|
-
}
|
|
283
|
-
this._modificationDate = new Date(date);
|
|
284
|
-
return this;
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
/**
|
|
288
|
-
* Sets the annotation to be printed
|
|
289
|
-
* @returns This builder for chaining
|
|
290
|
-
*/
|
|
291
|
-
printable(): this {
|
|
292
|
-
this._flags |= 4; // Print flag
|
|
293
|
-
return this;
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
/**
|
|
297
|
-
* Sets the annotation to NOT be printed
|
|
298
|
-
* @returns This builder for chaining
|
|
299
|
-
*/
|
|
300
|
-
notPrintable(): this {
|
|
301
|
-
this._flags &= ~4; // Clear print flag
|
|
302
|
-
return this;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
/**
|
|
306
|
-
* Sets whether the annotation is locked (read-only)
|
|
307
|
-
* @param locked - Whether to lock the annotation
|
|
308
|
-
* @returns This builder for chaining
|
|
309
|
-
*/
|
|
310
|
-
locked(locked: boolean): this {
|
|
311
|
-
if (typeof locked !== 'boolean') {
|
|
312
|
-
throw new Error('locked must be a boolean');
|
|
313
|
-
}
|
|
314
|
-
if (locked) {
|
|
315
|
-
this._flags |= 128; // Locked flag
|
|
316
|
-
} else {
|
|
317
|
-
this._flags &= ~128;
|
|
318
|
-
}
|
|
319
|
-
return this;
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
/**
|
|
323
|
-
* Sets a reply to this annotation
|
|
324
|
-
* @param replyContent - Content of the reply
|
|
325
|
-
* @returns This builder for chaining
|
|
326
|
-
*/
|
|
327
|
-
reply(replyContent: string): this {
|
|
328
|
-
if (typeof replyContent !== 'string') {
|
|
329
|
-
throw new Error('Reply content must be a string');
|
|
330
|
-
}
|
|
331
|
-
this._reply = replyContent;
|
|
332
|
-
return this;
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
/**
|
|
336
|
-
* Builds and returns the annotation object
|
|
337
|
-
* @returns Immutable annotation object
|
|
338
|
-
*/
|
|
339
|
-
build(): Annotation {
|
|
340
|
-
if (!this._bounds && this._type !== 'text') {
|
|
341
|
-
throw new Error(`Annotation type "${this._type}" requires bounds to be set`);
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
return {
|
|
345
|
-
type: this._type,
|
|
346
|
-
content: this._content,
|
|
347
|
-
author: this._author,
|
|
348
|
-
subject: this._subject,
|
|
349
|
-
color: [...this._color],
|
|
350
|
-
opacity: this._opacity,
|
|
351
|
-
bounds: this._bounds ? { ...this._bounds } : undefined,
|
|
352
|
-
creationDate: new Date(this._creationDate),
|
|
353
|
-
modificationDate: new Date(this._modificationDate),
|
|
354
|
-
flags: this._flags,
|
|
355
|
-
reply: this._reply,
|
|
356
|
-
};
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
/**
|
|
361
|
-
* Create a new AnnotationBuilder with static factory
|
|
362
|
-
* @deprecated Use AnnotationBuilder.create() instead
|
|
363
|
-
* @returns New builder instance
|
|
364
|
-
*/
|
|
365
|
-
export function createAnnotationBuilder(): AnnotationBuilder {
|
|
366
|
-
return AnnotationBuilder.create();
|
|
367
|
-
}
|
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Builder for conversion options when converting PDF to other formats
|
|
3
|
-
*
|
|
4
|
-
* Configures how PDFs are converted to Markdown, HTML, or other text formats
|
|
5
|
-
* with options for formatting, image handling, and content extraction.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```typescript
|
|
9
|
-
* import { ConversionOptionsBuilder } from 'pdf_oxide';
|
|
10
|
-
*
|
|
11
|
-
* const options = ConversionOptionsBuilder.create()
|
|
12
|
-
* .preserveFormatting(true)
|
|
13
|
-
* .includeImages(true)
|
|
14
|
-
* .detectHeadings(true)
|
|
15
|
-
* .detectTables(true)
|
|
16
|
-
* .build();
|
|
17
|
-
*
|
|
18
|
-
* const doc = PdfDocument.open('file.pdf');
|
|
19
|
-
* const markdown = doc.toMarkdown(0, options);
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
|
-
interface PageRangeOptions {
|
|
24
|
-
start: number;
|
|
25
|
-
end: number;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export interface ConversionOptions {
|
|
29
|
-
preserveFormatting: boolean;
|
|
30
|
-
detectHeadings: boolean;
|
|
31
|
-
detectTables: boolean;
|
|
32
|
-
detectLists: boolean;
|
|
33
|
-
includeImages: boolean;
|
|
34
|
-
imageFormat: string;
|
|
35
|
-
imageQuality: number;
|
|
36
|
-
maxImageDimension: number;
|
|
37
|
-
outputEncoding: string;
|
|
38
|
-
normalizeWhitespace: boolean;
|
|
39
|
-
extractAnnotations: boolean;
|
|
40
|
-
useStructureTree: boolean;
|
|
41
|
-
pageRange?: PageRangeOptions;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export class ConversionOptionsBuilder {
|
|
45
|
-
private _preserveFormatting: boolean = true;
|
|
46
|
-
private _detectHeadings: boolean = true;
|
|
47
|
-
private _detectTables: boolean = true;
|
|
48
|
-
private _detectLists: boolean = true;
|
|
49
|
-
private _includeImages: boolean = true;
|
|
50
|
-
private _imageFormat: string = 'png';
|
|
51
|
-
private _imageQuality: number = 85;
|
|
52
|
-
private _maxImageDimension: number = 2048;
|
|
53
|
-
private _outputEncoding: string = 'utf-8';
|
|
54
|
-
private _normalizeWhitespace: boolean = true;
|
|
55
|
-
private _extractAnnotations: boolean = false;
|
|
56
|
-
private _useStructureTree: boolean = true;
|
|
57
|
-
private _pageRange?: PageRangeOptions;
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Creates a new ConversionOptionsBuilder instance
|
|
61
|
-
* @private
|
|
62
|
-
*/
|
|
63
|
-
private constructor() {}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Creates a new ConversionOptionsBuilder instance
|
|
67
|
-
* @returns New builder instance
|
|
68
|
-
*/
|
|
69
|
-
static create(): ConversionOptionsBuilder {
|
|
70
|
-
return new ConversionOptionsBuilder();
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Creates options with default settings optimized for readability
|
|
75
|
-
* @returns Conversion options with default preset
|
|
76
|
-
*/
|
|
77
|
-
static default(): ConversionOptions {
|
|
78
|
-
return ConversionOptionsBuilder.create().build();
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Creates options optimized for text-only extraction
|
|
83
|
-
* @returns Conversion options with text-only preset
|
|
84
|
-
*/
|
|
85
|
-
static textOnly(): ConversionOptions {
|
|
86
|
-
return ConversionOptionsBuilder.create()
|
|
87
|
-
.preserveFormatting(false)
|
|
88
|
-
.detectHeadings(true)
|
|
89
|
-
.detectTables(false)
|
|
90
|
-
.detectLists(false)
|
|
91
|
-
.includeImages(false)
|
|
92
|
-
.build();
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Creates options optimized for maximum quality and detail preservation
|
|
97
|
-
* @returns Conversion options with high-quality preset
|
|
98
|
-
*/
|
|
99
|
-
static highQuality(): ConversionOptions {
|
|
100
|
-
return ConversionOptionsBuilder.create()
|
|
101
|
-
.preserveFormatting(true)
|
|
102
|
-
.detectHeadings(true)
|
|
103
|
-
.detectTables(true)
|
|
104
|
-
.detectLists(true)
|
|
105
|
-
.includeImages(true)
|
|
106
|
-
.imageQuality(95)
|
|
107
|
-
.normalizeWhitespace(false)
|
|
108
|
-
.build();
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Creates options for fast, basic conversion
|
|
113
|
-
* @returns Conversion options with fast preset
|
|
114
|
-
*/
|
|
115
|
-
static fast(): ConversionOptions {
|
|
116
|
-
return ConversionOptionsBuilder.create()
|
|
117
|
-
.preserveFormatting(false)
|
|
118
|
-
.detectHeadings(false)
|
|
119
|
-
.detectTables(false)
|
|
120
|
-
.detectLists(false)
|
|
121
|
-
.includeImages(false)
|
|
122
|
-
.normalizeWhitespace(true)
|
|
123
|
-
.build();
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
preserveFormatting(preserve: boolean): this {
|
|
127
|
-
if (typeof preserve !== 'boolean') {
|
|
128
|
-
throw new Error('preserveFormatting must be a boolean');
|
|
129
|
-
}
|
|
130
|
-
this._preserveFormatting = preserve;
|
|
131
|
-
return this;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
detectHeadings(detect: boolean): this {
|
|
135
|
-
if (typeof detect !== 'boolean') {
|
|
136
|
-
throw new Error('detectHeadings must be a boolean');
|
|
137
|
-
}
|
|
138
|
-
this._detectHeadings = detect;
|
|
139
|
-
return this;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
detectTables(detect: boolean): this {
|
|
143
|
-
if (typeof detect !== 'boolean') {
|
|
144
|
-
throw new Error('detectTables must be a boolean');
|
|
145
|
-
}
|
|
146
|
-
this._detectTables = detect;
|
|
147
|
-
return this;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
detectLists(detect: boolean): this {
|
|
151
|
-
if (typeof detect !== 'boolean') {
|
|
152
|
-
throw new Error('detectLists must be a boolean');
|
|
153
|
-
}
|
|
154
|
-
this._detectLists = detect;
|
|
155
|
-
return this;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
includeImages(include: boolean): this {
|
|
159
|
-
if (typeof include !== 'boolean') {
|
|
160
|
-
throw new Error('includeImages must be a boolean');
|
|
161
|
-
}
|
|
162
|
-
this._includeImages = include;
|
|
163
|
-
return this;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
imageFormat(format: string): this {
|
|
167
|
-
const validFormats = ['png', 'jpg', 'jpeg', 'webp'];
|
|
168
|
-
if (!validFormats.includes(format.toLowerCase())) {
|
|
169
|
-
throw new Error(`Invalid image format. Must be one of: ${validFormats.join(', ')}`);
|
|
170
|
-
}
|
|
171
|
-
this._imageFormat = format.toLowerCase();
|
|
172
|
-
return this;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
imageQuality(quality: number): this {
|
|
176
|
-
if (typeof quality !== 'number' || quality < 0 || quality > 100) {
|
|
177
|
-
throw new Error('imageQuality must be a number between 0 and 100');
|
|
178
|
-
}
|
|
179
|
-
this._imageQuality = quality;
|
|
180
|
-
return this;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
maxImageDimension(maxDimension: number): this {
|
|
184
|
-
if (typeof maxDimension !== 'number' || maxDimension <= 0) {
|
|
185
|
-
throw new Error('maxImageDimension must be a positive number');
|
|
186
|
-
}
|
|
187
|
-
this._maxImageDimension = maxDimension;
|
|
188
|
-
return this;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
outputEncoding(encoding: string): this {
|
|
192
|
-
if (typeof encoding !== 'string' || encoding.length === 0) {
|
|
193
|
-
throw new Error('outputEncoding must be a non-empty string');
|
|
194
|
-
}
|
|
195
|
-
this._outputEncoding = encoding;
|
|
196
|
-
return this;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
normalizeWhitespace(normalize: boolean): this {
|
|
200
|
-
if (typeof normalize !== 'boolean') {
|
|
201
|
-
throw new Error('normalizeWhitespace must be a boolean');
|
|
202
|
-
}
|
|
203
|
-
this._normalizeWhitespace = normalize;
|
|
204
|
-
return this;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
extractAnnotations(extract: boolean): this {
|
|
208
|
-
if (typeof extract !== 'boolean') {
|
|
209
|
-
throw new Error('extractAnnotations must be a boolean');
|
|
210
|
-
}
|
|
211
|
-
this._extractAnnotations = extract;
|
|
212
|
-
return this;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
useStructureTree(use: boolean): this {
|
|
216
|
-
if (typeof use !== 'boolean') {
|
|
217
|
-
throw new Error('useStructureTree must be a boolean');
|
|
218
|
-
}
|
|
219
|
-
this._useStructureTree = use;
|
|
220
|
-
return this;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
pageRange(start: number, end: number): this {
|
|
224
|
-
if (typeof start !== 'number' || typeof end !== 'number' || start < 0 || end < start) {
|
|
225
|
-
throw new Error('pageRange must have valid start and end indices');
|
|
226
|
-
}
|
|
227
|
-
this._pageRange = { start, end };
|
|
228
|
-
return this;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
build(): ConversionOptions {
|
|
232
|
-
return {
|
|
233
|
-
preserveFormatting: this._preserveFormatting,
|
|
234
|
-
detectHeadings: this._detectHeadings,
|
|
235
|
-
detectTables: this._detectTables,
|
|
236
|
-
detectLists: this._detectLists,
|
|
237
|
-
includeImages: this._includeImages,
|
|
238
|
-
imageFormat: this._imageFormat,
|
|
239
|
-
imageQuality: this._imageQuality,
|
|
240
|
-
maxImageDimension: this._maxImageDimension,
|
|
241
|
-
outputEncoding: this._outputEncoding,
|
|
242
|
-
normalizeWhitespace: this._normalizeWhitespace,
|
|
243
|
-
extractAnnotations: this._extractAnnotations,
|
|
244
|
-
useStructureTree: this._useStructureTree,
|
|
245
|
-
pageRange: this._pageRange,
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
/**
|
|
251
|
-
* Create a new ConversionOptionsBuilder with static factory
|
|
252
|
-
* @deprecated Use ConversionOptionsBuilder.create() instead
|
|
253
|
-
* @returns New builder instance
|
|
254
|
-
*/
|
|
255
|
-
export function createConversionOptionsBuilder(): ConversionOptionsBuilder {
|
|
256
|
-
return ConversionOptionsBuilder.create();
|
|
257
|
-
}
|