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,317 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Builder for document metadata configuration
|
|
3
|
-
*
|
|
4
|
-
* Configures document information like title, author, subject, keywords,
|
|
5
|
-
* creation date, and custom properties.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```typescript
|
|
9
|
-
* import { MetadataBuilder } from 'pdf_oxide';
|
|
10
|
-
*
|
|
11
|
-
* const metadata = MetadataBuilder.create()
|
|
12
|
-
* .title('My Document')
|
|
13
|
-
* .author('John Doe')
|
|
14
|
-
* .subject('Important Information')
|
|
15
|
-
* .keywords(['document', 'important', 'example'])
|
|
16
|
-
* .creator('MyApp v1.0')
|
|
17
|
-
* .build();
|
|
18
|
-
*
|
|
19
|
-
* pdf.setMetadata(metadata);
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
|
-
export interface Metadata {
|
|
24
|
-
title?: string;
|
|
25
|
-
author?: string;
|
|
26
|
-
subject?: string;
|
|
27
|
-
keywords: string[];
|
|
28
|
-
creator?: string;
|
|
29
|
-
producer: string;
|
|
30
|
-
creationDate: Date;
|
|
31
|
-
modificationDate: Date;
|
|
32
|
-
customProperties: Record<string, string>;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export class MetadataBuilder {
|
|
36
|
-
private _title?: string;
|
|
37
|
-
private _author?: string;
|
|
38
|
-
private _subject?: string;
|
|
39
|
-
private _keywords: string[] = [];
|
|
40
|
-
private _creator?: string;
|
|
41
|
-
private _producer: string = 'PDF Oxide';
|
|
42
|
-
private _creationDate: Date = new Date();
|
|
43
|
-
private _modificationDate: Date = new Date();
|
|
44
|
-
private _customProperties: Record<string, string> = {};
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Creates a new MetadataBuilder instance
|
|
48
|
-
* @private
|
|
49
|
-
*/
|
|
50
|
-
private constructor() {}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Creates a new MetadataBuilder instance
|
|
54
|
-
* @returns New builder instance
|
|
55
|
-
*/
|
|
56
|
-
static create(): MetadataBuilder {
|
|
57
|
-
return new MetadataBuilder();
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Sets the document title
|
|
62
|
-
* @param title - The document title
|
|
63
|
-
* @returns This builder for chaining
|
|
64
|
-
*
|
|
65
|
-
* @example
|
|
66
|
-
* ```typescript
|
|
67
|
-
* builder.title('Project Report 2024');
|
|
68
|
-
* ```
|
|
69
|
-
*/
|
|
70
|
-
title(title: string): this {
|
|
71
|
-
if (typeof title !== 'string') {
|
|
72
|
-
throw new Error('Title must be a string');
|
|
73
|
-
}
|
|
74
|
-
this._title = title.length > 0 ? title : undefined;
|
|
75
|
-
return this;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Sets the document author
|
|
80
|
-
* @param author - The author name
|
|
81
|
-
* @returns This builder for chaining
|
|
82
|
-
*
|
|
83
|
-
* @example
|
|
84
|
-
* ```typescript
|
|
85
|
-
* builder.author('Jane Doe');
|
|
86
|
-
* ```
|
|
87
|
-
*/
|
|
88
|
-
author(author: string): this {
|
|
89
|
-
if (typeof author !== 'string') {
|
|
90
|
-
throw new Error('Author must be a string');
|
|
91
|
-
}
|
|
92
|
-
this._author = author.length > 0 ? author : undefined;
|
|
93
|
-
return this;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Sets the document subject
|
|
98
|
-
* @param subject - The document subject
|
|
99
|
-
* @returns This builder for chaining
|
|
100
|
-
*
|
|
101
|
-
* @example
|
|
102
|
-
* ```typescript
|
|
103
|
-
* builder.subject('Annual Report');
|
|
104
|
-
* ```
|
|
105
|
-
*/
|
|
106
|
-
subject(subject: string): this {
|
|
107
|
-
if (typeof subject !== 'string') {
|
|
108
|
-
throw new Error('Subject must be a string');
|
|
109
|
-
}
|
|
110
|
-
this._subject = subject.length > 0 ? subject : undefined;
|
|
111
|
-
return this;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Sets document keywords
|
|
116
|
-
* @param keywords - Array of keywords
|
|
117
|
-
* @returns This builder for chaining
|
|
118
|
-
*
|
|
119
|
-
* @example
|
|
120
|
-
* ```typescript
|
|
121
|
-
* builder.keywords(['report', 'annual', 'financial']);
|
|
122
|
-
* ```
|
|
123
|
-
*/
|
|
124
|
-
keywords(keywords: string[]): this {
|
|
125
|
-
if (!Array.isArray(keywords)) {
|
|
126
|
-
throw new Error('Keywords must be an array');
|
|
127
|
-
}
|
|
128
|
-
if (!keywords.every((k) => typeof k === 'string')) {
|
|
129
|
-
throw new Error('All keywords must be strings');
|
|
130
|
-
}
|
|
131
|
-
this._keywords = [...keywords];
|
|
132
|
-
return this;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Adds a single keyword
|
|
137
|
-
* @param keyword - A keyword to add
|
|
138
|
-
* @returns This builder for chaining
|
|
139
|
-
*
|
|
140
|
-
* @example
|
|
141
|
-
* ```typescript
|
|
142
|
-
* builder.addKeyword('Important').addKeyword('Urgent');
|
|
143
|
-
* ```
|
|
144
|
-
*/
|
|
145
|
-
addKeyword(keyword: string): this {
|
|
146
|
-
if (typeof keyword !== 'string' || keyword.length === 0) {
|
|
147
|
-
throw new Error('Keyword must be a non-empty string');
|
|
148
|
-
}
|
|
149
|
-
if (!this._keywords.includes(keyword)) {
|
|
150
|
-
this._keywords.push(keyword);
|
|
151
|
-
}
|
|
152
|
-
return this;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Sets the creator application name
|
|
157
|
-
* @param creator - Name of the application that created the document
|
|
158
|
-
* @returns This builder for chaining
|
|
159
|
-
*
|
|
160
|
-
* @example
|
|
161
|
-
* ```typescript
|
|
162
|
-
* builder.creator('MyApp v2.1.0');
|
|
163
|
-
* ```
|
|
164
|
-
*/
|
|
165
|
-
creator(creator: string): this {
|
|
166
|
-
if (typeof creator !== 'string') {
|
|
167
|
-
throw new Error('Creator must be a string');
|
|
168
|
-
}
|
|
169
|
-
this._creator = creator.length > 0 ? creator : undefined;
|
|
170
|
-
return this;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* Sets the PDF producer (usually the library/tool that saved it)
|
|
175
|
-
* @param producer - Name of the PDF producer
|
|
176
|
-
* @returns This builder for chaining
|
|
177
|
-
*
|
|
178
|
-
* @example
|
|
179
|
-
* ```typescript
|
|
180
|
-
* builder.producer('PDF Oxide v0.3.2');
|
|
181
|
-
* ```
|
|
182
|
-
*/
|
|
183
|
-
producer(producer: string): this {
|
|
184
|
-
if (typeof producer !== 'string') {
|
|
185
|
-
throw new Error('Producer must be a string');
|
|
186
|
-
}
|
|
187
|
-
this._producer = producer.length > 0 ? producer : 'PDF Oxide';
|
|
188
|
-
return this;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* Sets the document creation date
|
|
193
|
-
* @param date - The creation date
|
|
194
|
-
* @returns This builder for chaining
|
|
195
|
-
*
|
|
196
|
-
* @example
|
|
197
|
-
* ```typescript
|
|
198
|
-
* builder.creationDate(new Date('2024-01-15'));
|
|
199
|
-
* ```
|
|
200
|
-
*/
|
|
201
|
-
creationDate(date: Date): this {
|
|
202
|
-
if (!(date instanceof Date)) {
|
|
203
|
-
throw new Error('creationDate must be a Date object');
|
|
204
|
-
}
|
|
205
|
-
this._creationDate = new Date(date);
|
|
206
|
-
return this;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
* Sets the document modification date
|
|
211
|
-
* @param date - The modification date
|
|
212
|
-
* @returns This builder for chaining
|
|
213
|
-
*
|
|
214
|
-
* @example
|
|
215
|
-
* ```typescript
|
|
216
|
-
* builder.modificationDate(new Date());
|
|
217
|
-
* ```
|
|
218
|
-
*/
|
|
219
|
-
modificationDate(date: Date): this {
|
|
220
|
-
if (!(date instanceof Date)) {
|
|
221
|
-
throw new Error('modificationDate must be a Date object');
|
|
222
|
-
}
|
|
223
|
-
this._modificationDate = new Date(date);
|
|
224
|
-
return this;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
/**
|
|
228
|
-
* Sets a custom metadata property
|
|
229
|
-
* @param key - Property key
|
|
230
|
-
* @param value - Property value
|
|
231
|
-
* @returns This builder for chaining
|
|
232
|
-
*
|
|
233
|
-
* @example
|
|
234
|
-
* ```typescript
|
|
235
|
-
* builder.customProperty('Department', 'Engineering');
|
|
236
|
-
* builder.customProperty('Classification', 'Confidential');
|
|
237
|
-
* ```
|
|
238
|
-
*/
|
|
239
|
-
customProperty(key: string, value: string): this {
|
|
240
|
-
if (typeof key !== 'string' || key.length === 0) {
|
|
241
|
-
throw new Error('Property key must be a non-empty string');
|
|
242
|
-
}
|
|
243
|
-
if (typeof value !== 'string') {
|
|
244
|
-
throw new Error('Property value must be a string');
|
|
245
|
-
}
|
|
246
|
-
this._customProperties[key] = value;
|
|
247
|
-
return this;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
/**
|
|
251
|
-
* Sets multiple custom metadata properties
|
|
252
|
-
* @param properties - Object with key-value pairs
|
|
253
|
-
* @returns This builder for chaining
|
|
254
|
-
*
|
|
255
|
-
* @example
|
|
256
|
-
* ```typescript
|
|
257
|
-
* builder.customProperties({
|
|
258
|
-
* Department: 'Engineering',
|
|
259
|
-
* Classification: 'Confidential',
|
|
260
|
-
* ProjectCode: 'PROJ-2024-001'
|
|
261
|
-
* });
|
|
262
|
-
* ```
|
|
263
|
-
*/
|
|
264
|
-
customProperties(properties: Record<string, string>): this {
|
|
265
|
-
if (typeof properties !== 'object' || properties === null) {
|
|
266
|
-
throw new Error('customProperties must be an object');
|
|
267
|
-
}
|
|
268
|
-
for (const [key, value] of Object.entries(properties)) {
|
|
269
|
-
if (typeof value !== 'string') {
|
|
270
|
-
throw new Error(`Custom property "${key}" value must be a string`);
|
|
271
|
-
}
|
|
272
|
-
this._customProperties[key] = value;
|
|
273
|
-
}
|
|
274
|
-
return this;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
/**
|
|
278
|
-
* Builds and returns the metadata object
|
|
279
|
-
* @returns Immutable metadata object
|
|
280
|
-
*
|
|
281
|
-
* @example
|
|
282
|
-
* ```typescript
|
|
283
|
-
* const metadata = builder.build();
|
|
284
|
-
* ```
|
|
285
|
-
*/
|
|
286
|
-
build(): Metadata {
|
|
287
|
-
return {
|
|
288
|
-
title: this._title,
|
|
289
|
-
author: this._author,
|
|
290
|
-
subject: this._subject,
|
|
291
|
-
keywords: [...this._keywords],
|
|
292
|
-
creator: this._creator,
|
|
293
|
-
producer: this._producer,
|
|
294
|
-
creationDate: new Date(this._creationDate),
|
|
295
|
-
modificationDate: new Date(this._modificationDate),
|
|
296
|
-
customProperties: { ...this._customProperties },
|
|
297
|
-
};
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
/**
|
|
301
|
-
* Creates metadata with current timestamp
|
|
302
|
-
* @returns This builder with current modification date
|
|
303
|
-
*/
|
|
304
|
-
withCurrentDate(): this {
|
|
305
|
-
this._modificationDate = new Date();
|
|
306
|
-
return this;
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
/**
|
|
311
|
-
* Create a new MetadataBuilder with static factory
|
|
312
|
-
* @deprecated Use MetadataBuilder.create() instead
|
|
313
|
-
* @returns New builder instance
|
|
314
|
-
*/
|
|
315
|
-
export function createMetadataBuilder(): MetadataBuilder {
|
|
316
|
-
return MetadataBuilder.create();
|
|
317
|
-
}
|
|
@@ -1,386 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Fluent builder for creating PDF documents with configuration
|
|
3
|
-
*
|
|
4
|
-
* Provides a fluent API for configuring PDF document metadata and options
|
|
5
|
-
* before document creation.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```typescript
|
|
9
|
-
* import { PdfBuilder } from 'pdf_oxide';
|
|
10
|
-
*
|
|
11
|
-
* const pdf = PdfBuilder.create()
|
|
12
|
-
* .title('My Document')
|
|
13
|
-
* .author('John Doe')
|
|
14
|
-
* .subject('PDF Creation')
|
|
15
|
-
* .keywords(['pdf', 'document', 'example'])
|
|
16
|
-
* .fromMarkdown('# Content\n\nMarkdown text here');
|
|
17
|
-
*
|
|
18
|
-
* pdf.save('output.pdf');
|
|
19
|
-
* ```
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
interface PdfBuilderConfig {
|
|
23
|
-
title?: string;
|
|
24
|
-
author?: string;
|
|
25
|
-
subject?: string;
|
|
26
|
-
keywords: string[];
|
|
27
|
-
pageSize?: string;
|
|
28
|
-
margins: {
|
|
29
|
-
top: number;
|
|
30
|
-
right: number;
|
|
31
|
-
bottom: number;
|
|
32
|
-
left: number;
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export class PdfBuilder {
|
|
37
|
-
private _title?: string;
|
|
38
|
-
private _author?: string;
|
|
39
|
-
private _subject?: string;
|
|
40
|
-
private _keywords: string[] = [];
|
|
41
|
-
private _pageSize?: string;
|
|
42
|
-
private _margins: { top: number; right: number; bottom: number; left: number } = {
|
|
43
|
-
top: 36,
|
|
44
|
-
bottom: 36,
|
|
45
|
-
left: 36,
|
|
46
|
-
right: 36,
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Creates a new PdfBuilder instance
|
|
51
|
-
* @private
|
|
52
|
-
*/
|
|
53
|
-
private constructor() {}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Creates a new PdfBuilder instance
|
|
57
|
-
* @returns New builder instance
|
|
58
|
-
*
|
|
59
|
-
* @example
|
|
60
|
-
* ```typescript
|
|
61
|
-
* const builder = PdfBuilder.create();
|
|
62
|
-
* ```
|
|
63
|
-
*/
|
|
64
|
-
static create(): PdfBuilder {
|
|
65
|
-
return new PdfBuilder();
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Sets the document title
|
|
70
|
-
* @param title - The document title
|
|
71
|
-
* @returns This builder for chaining
|
|
72
|
-
*
|
|
73
|
-
* @example
|
|
74
|
-
* ```typescript
|
|
75
|
-
* builder.title('My Document Title');
|
|
76
|
-
* ```
|
|
77
|
-
*/
|
|
78
|
-
title(title: string): this {
|
|
79
|
-
if (typeof title !== 'string' || title.length === 0) {
|
|
80
|
-
throw new Error('Title must be a non-empty string');
|
|
81
|
-
}
|
|
82
|
-
this._title = title;
|
|
83
|
-
return this;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Sets the document author
|
|
88
|
-
* @param author - The author name
|
|
89
|
-
* @returns This builder for chaining
|
|
90
|
-
*
|
|
91
|
-
* @example
|
|
92
|
-
* ```typescript
|
|
93
|
-
* builder.author('Jane Doe');
|
|
94
|
-
* ```
|
|
95
|
-
*/
|
|
96
|
-
author(author: string): this {
|
|
97
|
-
if (typeof author !== 'string' || author.length === 0) {
|
|
98
|
-
throw new Error('Author must be a non-empty string');
|
|
99
|
-
}
|
|
100
|
-
this._author = author;
|
|
101
|
-
return this;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Sets the document subject
|
|
106
|
-
* @param subject - The document subject
|
|
107
|
-
* @returns This builder for chaining
|
|
108
|
-
*
|
|
109
|
-
* @example
|
|
110
|
-
* ```typescript
|
|
111
|
-
* builder.subject('Technical Documentation');
|
|
112
|
-
* ```
|
|
113
|
-
*/
|
|
114
|
-
subject(subject: string): this {
|
|
115
|
-
if (typeof subject !== 'string' || subject.length === 0) {
|
|
116
|
-
throw new Error('Subject must be a non-empty string');
|
|
117
|
-
}
|
|
118
|
-
this._subject = subject;
|
|
119
|
-
return this;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Sets the document keywords
|
|
124
|
-
* @param keywords - Array of keywords
|
|
125
|
-
* @returns This builder for chaining
|
|
126
|
-
*
|
|
127
|
-
* @example
|
|
128
|
-
* ```typescript
|
|
129
|
-
* builder.keywords(['PDF', 'Document', 'Generation']);
|
|
130
|
-
* ```
|
|
131
|
-
*/
|
|
132
|
-
keywords(keywords: string[]): this {
|
|
133
|
-
if (!Array.isArray(keywords)) {
|
|
134
|
-
throw new Error('Keywords must be an array');
|
|
135
|
-
}
|
|
136
|
-
if (!keywords.every((k) => typeof k === 'string')) {
|
|
137
|
-
throw new Error('All keywords must be strings');
|
|
138
|
-
}
|
|
139
|
-
this._keywords = keywords;
|
|
140
|
-
return this;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Adds a single keyword to the document
|
|
145
|
-
* @param keyword - A keyword to add
|
|
146
|
-
* @returns This builder for chaining
|
|
147
|
-
*
|
|
148
|
-
* @example
|
|
149
|
-
* ```typescript
|
|
150
|
-
* builder.addKeyword('Important').addKeyword('Urgent');
|
|
151
|
-
* ```
|
|
152
|
-
*/
|
|
153
|
-
addKeyword(keyword: string): this {
|
|
154
|
-
if (typeof keyword !== 'string' || keyword.length === 0) {
|
|
155
|
-
throw new Error('Keyword must be a non-empty string');
|
|
156
|
-
}
|
|
157
|
-
this._keywords.push(keyword);
|
|
158
|
-
return this;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Sets the default page size
|
|
163
|
-
* @param pageSize - Page size name (e.g., 'Letter', 'A4', 'Legal')
|
|
164
|
-
* @returns This builder for chaining
|
|
165
|
-
*
|
|
166
|
-
* @example
|
|
167
|
-
* ```typescript
|
|
168
|
-
* builder.pageSize('A4');
|
|
169
|
-
* ```
|
|
170
|
-
*/
|
|
171
|
-
pageSize(pageSize: string): this {
|
|
172
|
-
const validSizes = ['Letter', 'Legal', 'A4', 'A3', 'A5', 'B4', 'B5'];
|
|
173
|
-
if (!validSizes.includes(pageSize)) {
|
|
174
|
-
throw new Error(`Invalid page size. Must be one of: ${validSizes.join(', ')}`);
|
|
175
|
-
}
|
|
176
|
-
this._pageSize = pageSize;
|
|
177
|
-
return this;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Sets page margins
|
|
182
|
-
* @param top - Top margin in points
|
|
183
|
-
* @param right - Right margin in points
|
|
184
|
-
* @param bottom - Bottom margin in points
|
|
185
|
-
* @param left - Left margin in points
|
|
186
|
-
* @returns This builder for chaining
|
|
187
|
-
*
|
|
188
|
-
* @example
|
|
189
|
-
* ```typescript
|
|
190
|
-
* builder.margins(36, 36, 36, 36); // 0.5 inches on all sides
|
|
191
|
-
* ```
|
|
192
|
-
*/
|
|
193
|
-
margins(top: number, right: number, bottom: number, left: number): this {
|
|
194
|
-
if (![top, right, bottom, left].every((m) => typeof m === 'number' && m >= 0)) {
|
|
195
|
-
throw new Error('All margins must be non-negative numbers');
|
|
196
|
-
}
|
|
197
|
-
this._margins = { top, right, bottom, left };
|
|
198
|
-
return this;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Creates a PDF document from Markdown content
|
|
203
|
-
* @param markdown - Markdown formatted content
|
|
204
|
-
* @returns The created PDF document
|
|
205
|
-
* @throws PdfError if PDF creation fails
|
|
206
|
-
*
|
|
207
|
-
* @example
|
|
208
|
-
* ```typescript
|
|
209
|
-
* const pdf = builder.fromMarkdown('# Title\n\nContent here');
|
|
210
|
-
* ```
|
|
211
|
-
*/
|
|
212
|
-
fromMarkdown(markdown: string): any {
|
|
213
|
-
// Note: Using any for Pdf type to avoid circular dependency
|
|
214
|
-
const { Pdf } = require('../index.js');
|
|
215
|
-
|
|
216
|
-
if (typeof markdown !== 'string') {
|
|
217
|
-
throw new Error('Markdown must be a string');
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
const pdf = Pdf.fromMarkdown(markdown);
|
|
221
|
-
this._applyConfiguration(pdf);
|
|
222
|
-
return pdf;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
* Creates a PDF document from HTML content
|
|
227
|
-
* @param html - HTML formatted content
|
|
228
|
-
* @returns The created PDF document
|
|
229
|
-
* @throws PdfError if PDF creation fails
|
|
230
|
-
*
|
|
231
|
-
* @example
|
|
232
|
-
* ```typescript
|
|
233
|
-
* const pdf = builder.fromHtml('<h1>Title</h1><p>Content</p>');
|
|
234
|
-
* ```
|
|
235
|
-
*/
|
|
236
|
-
fromHtml(html: string): any {
|
|
237
|
-
const { Pdf } = require('../index.js');
|
|
238
|
-
|
|
239
|
-
if (typeof html !== 'string') {
|
|
240
|
-
throw new Error('HTML must be a string');
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
const pdf = Pdf.fromHtml(html);
|
|
244
|
-
this._applyConfiguration(pdf);
|
|
245
|
-
return pdf;
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
/**
|
|
249
|
-
* Creates a PDF document from plain text content
|
|
250
|
-
* @param text - Plain text content
|
|
251
|
-
* @returns The created PDF document
|
|
252
|
-
* @throws PdfError if PDF creation fails
|
|
253
|
-
*
|
|
254
|
-
* @example
|
|
255
|
-
* ```typescript
|
|
256
|
-
* const pdf = builder.fromText('Plain text content');
|
|
257
|
-
* ```
|
|
258
|
-
*/
|
|
259
|
-
fromText(text: string): any {
|
|
260
|
-
const { Pdf } = require('../index.js');
|
|
261
|
-
|
|
262
|
-
if (typeof text !== 'string') {
|
|
263
|
-
throw new Error('Text must be a string');
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
const pdf = Pdf.fromText(text);
|
|
267
|
-
this._applyConfiguration(pdf);
|
|
268
|
-
return pdf;
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
/**
|
|
272
|
-
* Asynchronously creates a PDF document from Markdown content
|
|
273
|
-
* @param markdown - Markdown formatted content
|
|
274
|
-
* @returns Promise that resolves to the created PDF document
|
|
275
|
-
* @throws PdfError if PDF creation fails
|
|
276
|
-
*
|
|
277
|
-
* @example
|
|
278
|
-
* ```typescript
|
|
279
|
-
* const pdf = await builder.fromMarkdownAsync('# Title\n\nContent');
|
|
280
|
-
* ```
|
|
281
|
-
*/
|
|
282
|
-
async fromMarkdownAsync(markdown: string): Promise<any> {
|
|
283
|
-
const { Pdf } = require('../index.js');
|
|
284
|
-
|
|
285
|
-
if (typeof markdown !== 'string') {
|
|
286
|
-
throw new Error('Markdown must be a string');
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
const pdf = await Pdf.fromMarkdownAsync(markdown);
|
|
290
|
-
this._applyConfiguration(pdf);
|
|
291
|
-
return pdf;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
/**
|
|
295
|
-
* Asynchronously creates a PDF document from HTML content
|
|
296
|
-
* @param html - HTML formatted content
|
|
297
|
-
* @returns Promise that resolves to the created PDF document
|
|
298
|
-
* @throws PdfError if PDF creation fails
|
|
299
|
-
*
|
|
300
|
-
* @example
|
|
301
|
-
* ```typescript
|
|
302
|
-
* const pdf = await builder.fromHtmlAsync('<h1>Title</h1>');
|
|
303
|
-
* ```
|
|
304
|
-
*/
|
|
305
|
-
async fromHtmlAsync(html: string): Promise<any> {
|
|
306
|
-
const { Pdf } = require('../index.js');
|
|
307
|
-
|
|
308
|
-
if (typeof html !== 'string') {
|
|
309
|
-
throw new Error('HTML must be a string');
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
const pdf = await Pdf.fromHtmlAsync(html);
|
|
313
|
-
this._applyConfiguration(pdf);
|
|
314
|
-
return pdf;
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
/**
|
|
318
|
-
* Asynchronously creates a PDF document from plain text content
|
|
319
|
-
* @param text - Plain text content
|
|
320
|
-
* @returns Promise that resolves to the created PDF document
|
|
321
|
-
* @throws PdfError if PDF creation fails
|
|
322
|
-
*
|
|
323
|
-
* @example
|
|
324
|
-
* ```typescript
|
|
325
|
-
* const pdf = await builder.fromTextAsync('Plain text');
|
|
326
|
-
* ```
|
|
327
|
-
*/
|
|
328
|
-
async fromTextAsync(text: string): Promise<any> {
|
|
329
|
-
const { Pdf } = require('../index.js');
|
|
330
|
-
|
|
331
|
-
if (typeof text !== 'string') {
|
|
332
|
-
throw new Error('Text must be a string');
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
const pdf = await Pdf.fromTextAsync(text);
|
|
336
|
-
this._applyConfiguration(pdf);
|
|
337
|
-
return pdf;
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
/**
|
|
341
|
-
* Gets the current configuration as a plain object
|
|
342
|
-
* @returns Configuration object with title, author, subject, keywords
|
|
343
|
-
*
|
|
344
|
-
* @private
|
|
345
|
-
*/
|
|
346
|
-
private _getConfiguration(): PdfBuilderConfig {
|
|
347
|
-
return {
|
|
348
|
-
title: this._title,
|
|
349
|
-
author: this._author,
|
|
350
|
-
subject: this._subject,
|
|
351
|
-
keywords: this._keywords,
|
|
352
|
-
pageSize: this._pageSize,
|
|
353
|
-
margins: this._margins,
|
|
354
|
-
};
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
/**
|
|
358
|
-
* Applies builder configuration to a PDF document
|
|
359
|
-
* @param pdf - The PDF document to configure
|
|
360
|
-
* @private
|
|
361
|
-
*/
|
|
362
|
-
private _applyConfiguration(pdf: any): void {
|
|
363
|
-
// Apply metadata properties if set
|
|
364
|
-
if (this._title !== undefined) {
|
|
365
|
-
pdf.title = this._title;
|
|
366
|
-
}
|
|
367
|
-
if (this._author !== undefined) {
|
|
368
|
-
pdf.author = this._author;
|
|
369
|
-
}
|
|
370
|
-
if (this._subject !== undefined) {
|
|
371
|
-
pdf.subject = this._subject;
|
|
372
|
-
}
|
|
373
|
-
if (this._keywords.length > 0) {
|
|
374
|
-
pdf.keywords = [...this._keywords];
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
/**
|
|
380
|
-
* Create a new PdfBuilder with static factory
|
|
381
|
-
* @deprecated Use PdfBuilder.create() instead
|
|
382
|
-
* @returns New builder instance
|
|
383
|
-
*/
|
|
384
|
-
export function createPdfBuilder(): PdfBuilder {
|
|
385
|
-
return PdfBuilder.create();
|
|
386
|
-
}
|