pdfdancer-client-typescript 1.0.1
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/.eslintrc.js +19 -0
- package/README.md +267 -0
- package/dist/__tests__/e2e/test-helpers.d.ts +32 -0
- package/dist/__tests__/e2e/test-helpers.d.ts.map +1 -0
- package/dist/__tests__/e2e/test-helpers.js +157 -0
- package/dist/__tests__/e2e/test-helpers.js.map +1 -0
- package/dist/client-v1.d.ts +169 -0
- package/dist/client-v1.d.ts.map +1 -0
- package/dist/client-v1.js +558 -0
- package/dist/client-v1.js.map +1 -0
- package/dist/exceptions.d.ts +43 -0
- package/dist/exceptions.d.ts.map +1 -0
- package/dist/exceptions.js +66 -0
- package/dist/exceptions.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/models.d.ts +216 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +427 -0
- package/dist/models.js.map +1 -0
- package/dist/paragraph-builder.d.ts +67 -0
- package/dist/paragraph-builder.d.ts.map +1 -0
- package/dist/paragraph-builder.js +160 -0
- package/dist/paragraph-builder.js.map +1 -0
- package/example.ts +103 -0
- package/fixtures/DancingScript-Regular.ttf +0 -0
- package/fixtures/JetBrainsMono-Regular.ttf +0 -0
- package/fixtures/ObviouslyAwesome.pdf +0 -0
- package/fixtures/README.md +25 -0
- package/fixtures/basic-paths.pdf +0 -0
- package/fixtures/logo-80.png +0 -0
- package/fixtures/mixed-form-types.pdf +0 -0
- package/jest.config.js +26 -0
- package/package.json +38 -0
- package/scripts/release.js +91 -0
- package/scripts/test-release.js +59 -0
- package/src/__tests__/client-v1.test.ts +111 -0
- package/src/__tests__/e2e/form.test.ts +51 -0
- package/src/__tests__/e2e/image.test.ts +108 -0
- package/src/__tests__/e2e/line.test.ts +134 -0
- package/src/__tests__/e2e/page.test.ts +45 -0
- package/src/__tests__/e2e/paragraph.test.ts +210 -0
- package/src/__tests__/e2e/path.test.ts +72 -0
- package/src/__tests__/e2e/test-helpers.ts +132 -0
- package/src/client-v1.ts +673 -0
- package/src/exceptions.ts +67 -0
- package/src/index.ts +34 -0
- package/src/models.ts +476 -0
- package/src/paragraph-builder.ts +184 -0
- package/tsconfig.json +20 -0
package/dist/models.js
ADDED
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Model classes for the PDFDancer TypeScript client.
|
|
4
|
+
* Closely mirrors the Python model classes with TypeScript conventions.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ModifyTextRequest = exports.ModifyRequest = exports.AddRequest = exports.MoveRequest = exports.DeleteRequest = exports.FindRequest = exports.Paragraph = exports.Image = exports.Font = exports.Color = exports.ObjectRef = exports.Position = exports.BoundingRect = exports.ShapeType = exports.PositionMode = exports.ObjectType = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Object type enumeration matching the Python ObjectType.
|
|
10
|
+
*/
|
|
11
|
+
var ObjectType;
|
|
12
|
+
(function (ObjectType) {
|
|
13
|
+
ObjectType["IMAGE"] = "IMAGE";
|
|
14
|
+
ObjectType["FORM"] = "FORM";
|
|
15
|
+
ObjectType["PATH"] = "PATH";
|
|
16
|
+
ObjectType["PARAGRAPH"] = "PARAGRAPH";
|
|
17
|
+
ObjectType["TEXT_LINE"] = "TEXT_LINE";
|
|
18
|
+
ObjectType["PAGE"] = "PAGE";
|
|
19
|
+
})(ObjectType || (exports.ObjectType = ObjectType = {}));
|
|
20
|
+
/**
|
|
21
|
+
* Defines how position matching should be performed when searching for objects.
|
|
22
|
+
*/
|
|
23
|
+
var PositionMode;
|
|
24
|
+
(function (PositionMode) {
|
|
25
|
+
PositionMode["INTERSECT"] = "INTERSECT";
|
|
26
|
+
PositionMode["CONTAINS"] = "CONTAINS"; // Objects completely contained within the specified position area
|
|
27
|
+
})(PositionMode || (exports.PositionMode = PositionMode = {}));
|
|
28
|
+
/**
|
|
29
|
+
* Defines the geometric shape type used for position specification.
|
|
30
|
+
*/
|
|
31
|
+
var ShapeType;
|
|
32
|
+
(function (ShapeType) {
|
|
33
|
+
ShapeType["POINT"] = "POINT";
|
|
34
|
+
ShapeType["LINE"] = "LINE";
|
|
35
|
+
ShapeType["CIRCLE"] = "CIRCLE";
|
|
36
|
+
ShapeType["RECT"] = "RECT"; // Rectangular area with width and height
|
|
37
|
+
})(ShapeType || (exports.ShapeType = ShapeType = {}));
|
|
38
|
+
/**
|
|
39
|
+
* Represents a bounding rectangle with position and dimensions.
|
|
40
|
+
* Matches the Python BoundingRect class.
|
|
41
|
+
*/
|
|
42
|
+
class BoundingRect {
|
|
43
|
+
constructor(x, y, width, height) {
|
|
44
|
+
this.x = x;
|
|
45
|
+
this.y = y;
|
|
46
|
+
this.width = width;
|
|
47
|
+
this.height = height;
|
|
48
|
+
}
|
|
49
|
+
getX() {
|
|
50
|
+
return this.x;
|
|
51
|
+
}
|
|
52
|
+
getY() {
|
|
53
|
+
return this.y;
|
|
54
|
+
}
|
|
55
|
+
getWidth() {
|
|
56
|
+
return this.width;
|
|
57
|
+
}
|
|
58
|
+
getHeight() {
|
|
59
|
+
return this.height;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.BoundingRect = BoundingRect;
|
|
63
|
+
/**
|
|
64
|
+
* Represents spatial positioning and location information for PDF objects.
|
|
65
|
+
* Closely mirrors the Python Position class with TypeScript conventions.
|
|
66
|
+
*/
|
|
67
|
+
class Position {
|
|
68
|
+
constructor(pageIndex, shape, mode, boundingRect, textStartsWith) {
|
|
69
|
+
this.pageIndex = pageIndex;
|
|
70
|
+
this.shape = shape;
|
|
71
|
+
this.mode = mode;
|
|
72
|
+
this.boundingRect = boundingRect;
|
|
73
|
+
this.textStartsWith = textStartsWith;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Creates a position specification for an entire page.
|
|
77
|
+
* Equivalent to Position.fromPageIndex() in Python.
|
|
78
|
+
*/
|
|
79
|
+
static fromPageIndex(pageIndex) {
|
|
80
|
+
return new Position(pageIndex, undefined, PositionMode.CONTAINS);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Creates a position specification for specific coordinates on a page.
|
|
84
|
+
* Equivalent to Position.onPageCoordinates() in Python.
|
|
85
|
+
*/
|
|
86
|
+
static onPageCoordinates(pageIndex, x, y) {
|
|
87
|
+
const position = Position.fromPageIndex(pageIndex);
|
|
88
|
+
position.setPoint({ x, y });
|
|
89
|
+
return position;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Sets the position to a specific point location.
|
|
93
|
+
* Equivalent to Position.set() in Python.
|
|
94
|
+
*/
|
|
95
|
+
setPoint(point) {
|
|
96
|
+
this.mode = PositionMode.CONTAINS;
|
|
97
|
+
this.shape = ShapeType.POINT;
|
|
98
|
+
this.boundingRect = new BoundingRect(point.x, point.y, 0, 0);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Move the position horizontally by the specified offset.
|
|
102
|
+
*/
|
|
103
|
+
moveX(xOffset) {
|
|
104
|
+
if (this.boundingRect) {
|
|
105
|
+
this.setPoint({ x: this.getX() + xOffset, y: this.getY() });
|
|
106
|
+
}
|
|
107
|
+
return this;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Move the position vertically by the specified offset.
|
|
111
|
+
*/
|
|
112
|
+
moveY(yOffset) {
|
|
113
|
+
if (this.boundingRect) {
|
|
114
|
+
this.setPoint({ x: this.getX(), y: this.getY() + yOffset });
|
|
115
|
+
}
|
|
116
|
+
return this;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Returns the X coordinate of this position.
|
|
120
|
+
*/
|
|
121
|
+
getX() {
|
|
122
|
+
return this.boundingRect?.getX();
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Returns the Y coordinate of this position.
|
|
126
|
+
*/
|
|
127
|
+
getY() {
|
|
128
|
+
return this.boundingRect?.getY();
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Creates a copy of this position.
|
|
132
|
+
*/
|
|
133
|
+
copy() {
|
|
134
|
+
let boundingRectCopy;
|
|
135
|
+
if (this.boundingRect) {
|
|
136
|
+
boundingRectCopy = new BoundingRect(this.boundingRect.x, this.boundingRect.y, this.boundingRect.width, this.boundingRect.height);
|
|
137
|
+
}
|
|
138
|
+
return new Position(this.pageIndex, this.shape, this.mode, boundingRectCopy, this.textStartsWith);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
exports.Position = Position;
|
|
142
|
+
/**
|
|
143
|
+
* Lightweight reference to a PDF object providing identity and type information.
|
|
144
|
+
* Mirrors the Python ObjectRef class exactly.
|
|
145
|
+
*/
|
|
146
|
+
class ObjectRef {
|
|
147
|
+
constructor(internalId, position, type) {
|
|
148
|
+
this.internalId = internalId;
|
|
149
|
+
this.position = position;
|
|
150
|
+
this.type = type;
|
|
151
|
+
}
|
|
152
|
+
getInternalId() {
|
|
153
|
+
return this.internalId;
|
|
154
|
+
}
|
|
155
|
+
getPosition() {
|
|
156
|
+
return this.position;
|
|
157
|
+
}
|
|
158
|
+
setPosition(position) {
|
|
159
|
+
this.position = position;
|
|
160
|
+
}
|
|
161
|
+
getType() {
|
|
162
|
+
return this.type;
|
|
163
|
+
}
|
|
164
|
+
toDict() {
|
|
165
|
+
return {
|
|
166
|
+
internalId: this.internalId,
|
|
167
|
+
position: positionToDict(this.position),
|
|
168
|
+
type: this.type
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
exports.ObjectRef = ObjectRef;
|
|
173
|
+
/**
|
|
174
|
+
* Represents an RGB color with optional alpha channel, values from 0-255.
|
|
175
|
+
*/
|
|
176
|
+
class Color {
|
|
177
|
+
constructor(r, g, b, a = 255 // Alpha channel, default fully opaque
|
|
178
|
+
) {
|
|
179
|
+
this.r = r;
|
|
180
|
+
this.g = g;
|
|
181
|
+
this.b = b;
|
|
182
|
+
this.a = a;
|
|
183
|
+
// Validation similar to Python client
|
|
184
|
+
for (const component of [this.r, this.g, this.b, this.a]) {
|
|
185
|
+
if (component < 0 || component > 255) {
|
|
186
|
+
throw new Error(`Color component must be between 0 and 255, got ${component}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
exports.Color = Color;
|
|
192
|
+
/**
|
|
193
|
+
* Represents a font with name and size.
|
|
194
|
+
*/
|
|
195
|
+
class Font {
|
|
196
|
+
constructor(name, size) {
|
|
197
|
+
this.name = name;
|
|
198
|
+
this.size = size;
|
|
199
|
+
if (this.size <= 0) {
|
|
200
|
+
throw new Error(`Font size must be positive, got ${this.size}`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
exports.Font = Font;
|
|
205
|
+
/**
|
|
206
|
+
* Represents an image object in a PDF document.
|
|
207
|
+
* Matches the Python Image class structure.
|
|
208
|
+
*/
|
|
209
|
+
class Image {
|
|
210
|
+
constructor(position, format, width, height, data) {
|
|
211
|
+
this.position = position;
|
|
212
|
+
this.format = format;
|
|
213
|
+
this.width = width;
|
|
214
|
+
this.height = height;
|
|
215
|
+
this.data = data;
|
|
216
|
+
}
|
|
217
|
+
getPosition() {
|
|
218
|
+
return this.position;
|
|
219
|
+
}
|
|
220
|
+
setPosition(position) {
|
|
221
|
+
this.position = position;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
exports.Image = Image;
|
|
225
|
+
/**
|
|
226
|
+
* Represents a paragraph of text in a PDF document.
|
|
227
|
+
* Structure mirrors the Python Paragraph class.
|
|
228
|
+
*/
|
|
229
|
+
class Paragraph {
|
|
230
|
+
constructor(position, textLines, font, color, lineSpacing = 1.2) {
|
|
231
|
+
this.position = position;
|
|
232
|
+
this.textLines = textLines;
|
|
233
|
+
this.font = font;
|
|
234
|
+
this.color = color;
|
|
235
|
+
this.lineSpacing = lineSpacing;
|
|
236
|
+
}
|
|
237
|
+
getPosition() {
|
|
238
|
+
return this.position;
|
|
239
|
+
}
|
|
240
|
+
setPosition(position) {
|
|
241
|
+
this.position = position;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
exports.Paragraph = Paragraph;
|
|
245
|
+
// Request classes for API communication
|
|
246
|
+
/**
|
|
247
|
+
* Request object for find operations.
|
|
248
|
+
*/
|
|
249
|
+
class FindRequest {
|
|
250
|
+
constructor(objectType, position, hint) {
|
|
251
|
+
this.objectType = objectType;
|
|
252
|
+
this.position = position;
|
|
253
|
+
this.hint = hint;
|
|
254
|
+
}
|
|
255
|
+
toDict() {
|
|
256
|
+
return {
|
|
257
|
+
objectType: this.objectType || null,
|
|
258
|
+
position: this.position ? positionToDict(this.position) : null,
|
|
259
|
+
hint: this.hint || null
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
exports.FindRequest = FindRequest;
|
|
264
|
+
/**
|
|
265
|
+
* Request object for delete operations.
|
|
266
|
+
*/
|
|
267
|
+
class DeleteRequest {
|
|
268
|
+
constructor(objectRef) {
|
|
269
|
+
this.objectRef = objectRef;
|
|
270
|
+
}
|
|
271
|
+
toDict() {
|
|
272
|
+
return {
|
|
273
|
+
objectRef: {
|
|
274
|
+
internalId: this.objectRef.internalId,
|
|
275
|
+
position: positionToDict(this.objectRef.position),
|
|
276
|
+
type: this.objectRef.type
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
exports.DeleteRequest = DeleteRequest;
|
|
282
|
+
/**
|
|
283
|
+
* Request object for move operations.
|
|
284
|
+
*/
|
|
285
|
+
class MoveRequest {
|
|
286
|
+
constructor(objectRef, position) {
|
|
287
|
+
this.objectRef = objectRef;
|
|
288
|
+
this.position = position;
|
|
289
|
+
}
|
|
290
|
+
toDict() {
|
|
291
|
+
return {
|
|
292
|
+
objectRef: {
|
|
293
|
+
internalId: this.objectRef.internalId,
|
|
294
|
+
position: positionToDict(this.objectRef.position),
|
|
295
|
+
type: this.objectRef.type
|
|
296
|
+
},
|
|
297
|
+
newPosition: positionToDict(this.position)
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
exports.MoveRequest = MoveRequest;
|
|
302
|
+
/**
|
|
303
|
+
* Request object for add operations.
|
|
304
|
+
*/
|
|
305
|
+
class AddRequest {
|
|
306
|
+
constructor(pdfObject) {
|
|
307
|
+
this.pdfObject = pdfObject;
|
|
308
|
+
}
|
|
309
|
+
toDict() {
|
|
310
|
+
return {
|
|
311
|
+
object: this.objectToDict(this.pdfObject)
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
objectToDict(obj) {
|
|
315
|
+
if (obj instanceof Image) {
|
|
316
|
+
const size = obj.width !== undefined && obj.height !== undefined
|
|
317
|
+
? { width: obj.width, height: obj.height }
|
|
318
|
+
: null;
|
|
319
|
+
const dataB64 = obj.data ? btoa(String.fromCharCode(...obj.data)) : null;
|
|
320
|
+
return {
|
|
321
|
+
type: "IMAGE",
|
|
322
|
+
position: obj.position ? positionToDict(obj.position) : null,
|
|
323
|
+
format: obj.format || null,
|
|
324
|
+
size,
|
|
325
|
+
data: dataB64
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
else if (obj instanceof Paragraph) {
|
|
329
|
+
const lines = [];
|
|
330
|
+
if (obj.textLines) {
|
|
331
|
+
for (const line of obj.textLines) {
|
|
332
|
+
const textElement = {
|
|
333
|
+
text: line,
|
|
334
|
+
font: obj.font ? { name: obj.font.name, size: obj.font.size } : null,
|
|
335
|
+
color: obj.color ? { r: obj.color.r, g: obj.color.g, b: obj.color.b } : null,
|
|
336
|
+
position: obj.position ? positionToDict(obj.position) : null
|
|
337
|
+
};
|
|
338
|
+
const textLine = {
|
|
339
|
+
textElements: [textElement]
|
|
340
|
+
};
|
|
341
|
+
if (obj.color) {
|
|
342
|
+
textLine.color = { r: obj.color.r, g: obj.color.g, b: obj.color.b };
|
|
343
|
+
}
|
|
344
|
+
if (obj.position) {
|
|
345
|
+
textLine.position = positionToDict(obj.position);
|
|
346
|
+
}
|
|
347
|
+
lines.push(textLine);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
const lineSpacings = obj.lineSpacing !== undefined ? [obj.lineSpacing] : null;
|
|
351
|
+
return {
|
|
352
|
+
type: "PARAGRAPH",
|
|
353
|
+
position: obj.position ? positionToDict(obj.position) : null,
|
|
354
|
+
lines,
|
|
355
|
+
lineSpacings,
|
|
356
|
+
font: obj.font ? { name: obj.font.name, size: obj.font.size } : null
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
else {
|
|
360
|
+
throw new Error(`Unsupported object type: ${typeof obj}`);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
exports.AddRequest = AddRequest;
|
|
365
|
+
/**
|
|
366
|
+
* Request object for modify operations.
|
|
367
|
+
*/
|
|
368
|
+
class ModifyRequest {
|
|
369
|
+
constructor(objectRef, newObject) {
|
|
370
|
+
this.objectRef = objectRef;
|
|
371
|
+
this.newObject = newObject;
|
|
372
|
+
}
|
|
373
|
+
toDict() {
|
|
374
|
+
return {
|
|
375
|
+
ref: {
|
|
376
|
+
internalId: this.objectRef.internalId,
|
|
377
|
+
position: positionToDict(this.objectRef.position),
|
|
378
|
+
type: this.objectRef.type
|
|
379
|
+
},
|
|
380
|
+
newObject: new AddRequest(this.newObject).toDict().object
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
exports.ModifyRequest = ModifyRequest;
|
|
385
|
+
/**
|
|
386
|
+
* Request object for text modification operations.
|
|
387
|
+
*/
|
|
388
|
+
class ModifyTextRequest {
|
|
389
|
+
constructor(objectRef, newText) {
|
|
390
|
+
this.objectRef = objectRef;
|
|
391
|
+
this.newText = newText;
|
|
392
|
+
}
|
|
393
|
+
toDict() {
|
|
394
|
+
return {
|
|
395
|
+
ref: {
|
|
396
|
+
internalId: this.objectRef.internalId,
|
|
397
|
+
position: positionToDict(this.objectRef.position),
|
|
398
|
+
type: this.objectRef.type
|
|
399
|
+
},
|
|
400
|
+
newTextLine: this.newText
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
exports.ModifyTextRequest = ModifyTextRequest;
|
|
405
|
+
// Helper function to convert Position to dictionary for JSON serialization
|
|
406
|
+
function positionToDict(position) {
|
|
407
|
+
const result = {
|
|
408
|
+
pageIndex: position.pageIndex,
|
|
409
|
+
textStartsWith: position.textStartsWith
|
|
410
|
+
};
|
|
411
|
+
if (position.shape) {
|
|
412
|
+
result.shape = position.shape;
|
|
413
|
+
}
|
|
414
|
+
if (position.mode) {
|
|
415
|
+
result.mode = position.mode;
|
|
416
|
+
}
|
|
417
|
+
if (position.boundingRect) {
|
|
418
|
+
result.boundingRect = {
|
|
419
|
+
x: position.boundingRect.x,
|
|
420
|
+
y: position.boundingRect.y,
|
|
421
|
+
width: position.boundingRect.width,
|
|
422
|
+
height: position.boundingRect.height
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
return result;
|
|
426
|
+
}
|
|
427
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ParagraphBuilder for the PDFDancer TypeScript client.
|
|
3
|
+
* Closely mirrors the Python ParagraphBuilder class with TypeScript conventions.
|
|
4
|
+
*/
|
|
5
|
+
import { Paragraph, Font, Color, Position } from './models';
|
|
6
|
+
import type { ClientV1 } from './client-v1';
|
|
7
|
+
/**
|
|
8
|
+
* Builder class for constructing Paragraph objects with fluent interface.
|
|
9
|
+
* Mirrors the Python ParagraphBuilder class exactly.
|
|
10
|
+
*/
|
|
11
|
+
export declare class ParagraphBuilder {
|
|
12
|
+
private _client;
|
|
13
|
+
private _paragraph;
|
|
14
|
+
private _lineSpacing;
|
|
15
|
+
private _textColor;
|
|
16
|
+
private _text?;
|
|
17
|
+
private _font?;
|
|
18
|
+
constructor(_client: ClientV1);
|
|
19
|
+
/**
|
|
20
|
+
* Set the text content for the paragraph.
|
|
21
|
+
* Equivalent to fromString() methods in Python ParagraphBuilder.
|
|
22
|
+
*/
|
|
23
|
+
fromString(text: string, color?: Color): ParagraphBuilder;
|
|
24
|
+
/**
|
|
25
|
+
* Set the font for the paragraph using an existing Font object.
|
|
26
|
+
* Equivalent to withFont(Font) in Python ParagraphBuilder.
|
|
27
|
+
*/
|
|
28
|
+
withFont(font: Font): ParagraphBuilder;
|
|
29
|
+
/**
|
|
30
|
+
* Set the font for the paragraph using a TTF file.
|
|
31
|
+
* Equivalent to withFont(File, double) in Python ParagraphBuilder.
|
|
32
|
+
*/
|
|
33
|
+
withFontFile(ttfFile: Uint8Array | File, fontSize: number): Promise<ParagraphBuilder>;
|
|
34
|
+
/**
|
|
35
|
+
* Set the line spacing for the paragraph.
|
|
36
|
+
* Equivalent to withLineSpacing() in Python ParagraphBuilder.
|
|
37
|
+
*/
|
|
38
|
+
withLineSpacing(spacing: number): ParagraphBuilder;
|
|
39
|
+
/**
|
|
40
|
+
* Set the text color for the paragraph.
|
|
41
|
+
* Equivalent to withColor() in Python ParagraphBuilder.
|
|
42
|
+
*/
|
|
43
|
+
withColor(color: Color): ParagraphBuilder;
|
|
44
|
+
/**
|
|
45
|
+
* Set the position for the paragraph.
|
|
46
|
+
* Equivalent to withPosition() in Python ParagraphBuilder.
|
|
47
|
+
*/
|
|
48
|
+
withPosition(position: Position): ParagraphBuilder;
|
|
49
|
+
/**
|
|
50
|
+
* Build and return the final Paragraph object.
|
|
51
|
+
* Equivalent to build() in Python ParagraphBuilder.
|
|
52
|
+
*/
|
|
53
|
+
build(): Paragraph;
|
|
54
|
+
/**
|
|
55
|
+
* Register a TTF font with the client and return a Font object.
|
|
56
|
+
* Equivalent to registerTTF() private method in Python ParagraphBuilder.
|
|
57
|
+
*/
|
|
58
|
+
private _registerTtf;
|
|
59
|
+
/**
|
|
60
|
+
* Process text into lines for the paragraph.
|
|
61
|
+
* This is a simplified version - the full implementation would handle
|
|
62
|
+
* word wrapping, line breaks, and other text formatting based on the font
|
|
63
|
+
* and paragraph width.
|
|
64
|
+
*/
|
|
65
|
+
private _processTextLines;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=paragraph-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paragraph-builder.d.ts","sourceRoot":"","sources":["../src/paragraph-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;;GAGG;AACH,qBAAa,gBAAgB;IAOf,OAAO,CAAC,OAAO;IAN3B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,KAAK,CAAC,CAAO;gBAED,OAAO,EAAE,QAAQ;IAQrC;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,gBAAgB;IAgBzD;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,gBAAgB;IAStC;;;OAGG;IACG,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAa3F;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB;IASlD;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,gBAAgB;IASzC;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,gBAAgB;IASlD;;;OAGG;IACH,KAAK,IAAI,SAAS;IAuBlB;;;OAGG;YACW,YAAY;IAS1B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;CAoB1B"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ParagraphBuilder for the PDFDancer TypeScript client.
|
|
4
|
+
* Closely mirrors the Python ParagraphBuilder class with TypeScript conventions.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ParagraphBuilder = void 0;
|
|
8
|
+
const exceptions_1 = require("./exceptions");
|
|
9
|
+
const models_1 = require("./models");
|
|
10
|
+
/**
|
|
11
|
+
* Builder class for constructing Paragraph objects with fluent interface.
|
|
12
|
+
* Mirrors the Python ParagraphBuilder class exactly.
|
|
13
|
+
*/
|
|
14
|
+
class ParagraphBuilder {
|
|
15
|
+
constructor(_client) {
|
|
16
|
+
this._client = _client;
|
|
17
|
+
this._lineSpacing = 1.2;
|
|
18
|
+
this._textColor = new models_1.Color(0, 0, 0); // Black by default
|
|
19
|
+
if (!_client) {
|
|
20
|
+
throw new exceptions_1.ValidationException("Client cannot be null");
|
|
21
|
+
}
|
|
22
|
+
this._paragraph = new models_1.Paragraph();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Set the text content for the paragraph.
|
|
26
|
+
* Equivalent to fromString() methods in Python ParagraphBuilder.
|
|
27
|
+
*/
|
|
28
|
+
fromString(text, color) {
|
|
29
|
+
if (text === null || text === undefined) {
|
|
30
|
+
throw new exceptions_1.ValidationException("Text cannot be null");
|
|
31
|
+
}
|
|
32
|
+
if (!text.trim()) {
|
|
33
|
+
throw new exceptions_1.ValidationException("Text cannot be empty");
|
|
34
|
+
}
|
|
35
|
+
this._text = text;
|
|
36
|
+
if (color) {
|
|
37
|
+
this._textColor = color;
|
|
38
|
+
}
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Set the font for the paragraph using an existing Font object.
|
|
43
|
+
* Equivalent to withFont(Font) in Python ParagraphBuilder.
|
|
44
|
+
*/
|
|
45
|
+
withFont(font) {
|
|
46
|
+
if (!font) {
|
|
47
|
+
throw new exceptions_1.ValidationException("Font cannot be null");
|
|
48
|
+
}
|
|
49
|
+
this._font = font;
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Set the font for the paragraph using a TTF file.
|
|
54
|
+
* Equivalent to withFont(File, double) in Python ParagraphBuilder.
|
|
55
|
+
*/
|
|
56
|
+
async withFontFile(ttfFile, fontSize) {
|
|
57
|
+
if (!ttfFile) {
|
|
58
|
+
throw new exceptions_1.ValidationException("TTF file cannot be null");
|
|
59
|
+
}
|
|
60
|
+
if (fontSize <= 0) {
|
|
61
|
+
throw new exceptions_1.ValidationException(`Font size must be positive, got ${fontSize}`);
|
|
62
|
+
}
|
|
63
|
+
// Register font and create Font object
|
|
64
|
+
this._font = await this._registerTtf(ttfFile, fontSize);
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Set the line spacing for the paragraph.
|
|
69
|
+
* Equivalent to withLineSpacing() in Python ParagraphBuilder.
|
|
70
|
+
*/
|
|
71
|
+
withLineSpacing(spacing) {
|
|
72
|
+
if (spacing <= 0) {
|
|
73
|
+
throw new exceptions_1.ValidationException(`Line spacing must be positive, got ${spacing}`);
|
|
74
|
+
}
|
|
75
|
+
this._lineSpacing = spacing;
|
|
76
|
+
return this;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Set the text color for the paragraph.
|
|
80
|
+
* Equivalent to withColor() in Python ParagraphBuilder.
|
|
81
|
+
*/
|
|
82
|
+
withColor(color) {
|
|
83
|
+
if (!color) {
|
|
84
|
+
throw new exceptions_1.ValidationException("Color cannot be null");
|
|
85
|
+
}
|
|
86
|
+
this._textColor = color;
|
|
87
|
+
return this;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Set the position for the paragraph.
|
|
91
|
+
* Equivalent to withPosition() in Python ParagraphBuilder.
|
|
92
|
+
*/
|
|
93
|
+
withPosition(position) {
|
|
94
|
+
if (!position) {
|
|
95
|
+
throw new exceptions_1.ValidationException("Position cannot be null");
|
|
96
|
+
}
|
|
97
|
+
this._paragraph.setPosition(position);
|
|
98
|
+
return this;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Build and return the final Paragraph object.
|
|
102
|
+
* Equivalent to build() in Python ParagraphBuilder.
|
|
103
|
+
*/
|
|
104
|
+
build() {
|
|
105
|
+
// Validate required fields
|
|
106
|
+
if (!this._text) {
|
|
107
|
+
throw new exceptions_1.ValidationException("Text must be set before building paragraph");
|
|
108
|
+
}
|
|
109
|
+
if (!this._font) {
|
|
110
|
+
throw new exceptions_1.ValidationException("Font must be set before building paragraph");
|
|
111
|
+
}
|
|
112
|
+
if (!this._paragraph.getPosition()) {
|
|
113
|
+
throw new exceptions_1.ValidationException("Position must be set before building paragraph");
|
|
114
|
+
}
|
|
115
|
+
// Set paragraph properties
|
|
116
|
+
this._paragraph.font = this._font;
|
|
117
|
+
this._paragraph.color = this._textColor;
|
|
118
|
+
this._paragraph.lineSpacing = this._lineSpacing;
|
|
119
|
+
// Process text into lines
|
|
120
|
+
this._paragraph.textLines = this._processTextLines(this._text);
|
|
121
|
+
return this._paragraph;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Register a TTF font with the client and return a Font object.
|
|
125
|
+
* Equivalent to registerTTF() private method in Python ParagraphBuilder.
|
|
126
|
+
*/
|
|
127
|
+
async _registerTtf(ttfFile, fontSize) {
|
|
128
|
+
try {
|
|
129
|
+
const fontName = await this._client.registerFont(ttfFile);
|
|
130
|
+
return new models_1.Font(fontName, fontSize);
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
throw new exceptions_1.ValidationException(`Failed to register font file: ${error}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Process text into lines for the paragraph.
|
|
138
|
+
* This is a simplified version - the full implementation would handle
|
|
139
|
+
* word wrapping, line breaks, and other text formatting based on the font
|
|
140
|
+
* and paragraph width.
|
|
141
|
+
*/
|
|
142
|
+
_processTextLines(text) {
|
|
143
|
+
// Handle escaped newlines (\\n) as actual newlines
|
|
144
|
+
const processedText = text.replace(/\\\\n/g, '\n');
|
|
145
|
+
// Simple implementation - split on newlines
|
|
146
|
+
// In the full version, this would implement proper text layout
|
|
147
|
+
let lines = processedText.split('\n');
|
|
148
|
+
// Remove empty lines at the end but preserve intentional line breaks
|
|
149
|
+
while (lines.length > 0 && !lines[lines.length - 1].trim()) {
|
|
150
|
+
lines.pop();
|
|
151
|
+
}
|
|
152
|
+
// Ensure at least one line
|
|
153
|
+
if (lines.length === 0) {
|
|
154
|
+
lines = [''];
|
|
155
|
+
}
|
|
156
|
+
return lines;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
exports.ParagraphBuilder = ParagraphBuilder;
|
|
160
|
+
//# sourceMappingURL=paragraph-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paragraph-builder.js","sourceRoot":"","sources":["../src/paragraph-builder.ts"],"names":[],"mappings":"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"}
|