pdfdancer-client-python 0.2.19__tar.gz → 0.2.21__tar.gz
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.
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/PKG-INFO +1 -1
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/docs/openapi.yml +224 -30
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/pyproject.toml +1 -1
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/src/pdfdancer/__init__.py +2 -0
- pdfdancer_client_python-0.2.21/src/pdfdancer/image_builder.py +60 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/src/pdfdancer/models.py +545 -58
- pdfdancer_client_python-0.2.21/src/pdfdancer/page_builder.py +92 -0
- pdfdancer_client_python-0.2.21/src/pdfdancer/paragraph_builder.py +502 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/src/pdfdancer/path_builder.py +252 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/src/pdfdancer/pdfdancer_v1.py +61 -22
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/src/pdfdancer/types.py +112 -103
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/src/pdfdancer_client_python.egg-info/PKG-INFO +1 -1
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/src/pdfdancer_client_python.egg-info/SOURCES.txt +4 -1
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/e2e/test_context_manager.py +74 -52
- pdfdancer_client_python-0.2.21/tests/e2e/test_image.py +147 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/e2e/test_line.py +26 -47
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/e2e/test_new_pdf.py +1 -1
- pdfdancer_client_python-0.2.21/tests/e2e/test_page.py +186 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/e2e/test_paragraph.py +211 -75
- pdfdancer_client_python-0.2.21/tests/e2e/test_path_builder_rectangle.py +568 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/e2e/test_pdfdancer.py +1 -1
- pdfdancer_client_python-0.2.21/tests/e2e/test_rectangle_builder.py +504 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/e2e/test_snapshot.py +15 -15
- pdfdancer_client_python-0.2.21/tests/fixtures/Showcase.pdf +0 -0
- pdfdancer_client_python-0.2.19/src/pdfdancer/image_builder.py +0 -30
- pdfdancer_client_python-0.2.19/src/pdfdancer/paragraph_builder.py +0 -287
- pdfdancer_client_python-0.2.19/tests/e2e/test_image.py +0 -113
- pdfdancer_client_python-0.2.19/tests/e2e/test_page.py +0 -66
- pdfdancer_client_python-0.2.19/tests/fixtures/ObviouslyAwesome.pdf +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/.claude/commands/discuss.md +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/.github/workflows/ci.yml +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/.gitignore +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/CLAUDE.md +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/LICENSE +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/NOTICE +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/README.md +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/TODO.md +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/release.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/setup.cfg +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/src/pdfdancer/exceptions.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/src/pdfdancer/fingerprint.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/src/pdfdancer_client_python.egg-info/dependency_links.txt +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/src/pdfdancer_client_python.egg-info/requires.txt +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/src/pdfdancer_client_python.egg-info/top_level.txt +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/test.sh +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/__init__.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/conftest.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/e2e/__init__.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/e2e/pdf_assertions.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/e2e/test_acroform.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/e2e/test_bezier_builder.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/e2e/test_form_x_objects.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/e2e/test_line_builder.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/e2e/test_path.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/e2e/test_path_builder.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/e2e/test_path_comprehensive.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/e2e/test_positioning.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/fixtures/DancingScript-Regular.ttf +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/fixtures/Empty.pdf +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/fixtures/JetBrainsMono-Regular.ttf +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/fixtures/basic-paths.pdf +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/fixtures/form-xobject-example.pdf +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/fixtures/logo-80.png +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/fixtures/mixed-form-types.pdf +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/test_anonymous_token.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/test_fingerprint.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/test_models.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/test_openapi_compliance.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/test_path_models.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/test_pdf_object_equality.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/tests/test_standard_fonts.py +0 -0
- {pdfdancer_client_python-0.2.19 → pdfdancer_client_python-0.2.21}/update-api-spec.sh +0 -0
|
@@ -172,8 +172,46 @@ paths:
|
|
|
172
172
|
application/json:
|
|
173
173
|
schema:
|
|
174
174
|
type: string
|
|
175
|
+
/keys/anon:
|
|
176
|
+
post:
|
|
177
|
+
operationId: issueAnonymousKey
|
|
178
|
+
parameters:
|
|
179
|
+
- name: X-Fingerprint
|
|
180
|
+
in: header
|
|
181
|
+
required: true
|
|
182
|
+
schema:
|
|
183
|
+
type: string
|
|
184
|
+
- name: v
|
|
185
|
+
in: query
|
|
186
|
+
description: API version
|
|
187
|
+
schema:
|
|
188
|
+
type: string
|
|
189
|
+
- name: api-version
|
|
190
|
+
in: query
|
|
191
|
+
description: API version
|
|
192
|
+
schema:
|
|
193
|
+
type: string
|
|
194
|
+
- name: X-API-VERSION
|
|
195
|
+
in: header
|
|
196
|
+
description: API version
|
|
197
|
+
schema:
|
|
198
|
+
type: string
|
|
199
|
+
- name: Accept-Version
|
|
200
|
+
in: header
|
|
201
|
+
description: API version
|
|
202
|
+
schema:
|
|
203
|
+
type: string
|
|
204
|
+
responses:
|
|
205
|
+
"200":
|
|
206
|
+
description: issueAnonymousKey 200 response
|
|
207
|
+
content:
|
|
208
|
+
application/json:
|
|
209
|
+
schema:
|
|
210
|
+
$ref: "#/components/schemas/ApiTokenCreateResponse"
|
|
175
211
|
/me/tenant:
|
|
176
212
|
get:
|
|
213
|
+
summary: Get current user's tenant information.
|
|
214
|
+
description: Get current user's tenant information.
|
|
177
215
|
operationId: getTenant
|
|
178
216
|
parameters:
|
|
179
217
|
- name: v
|
|
@@ -198,13 +236,15 @@ paths:
|
|
|
198
236
|
type: string
|
|
199
237
|
responses:
|
|
200
238
|
"200":
|
|
201
|
-
description:
|
|
239
|
+
description: User's tenant with role
|
|
202
240
|
content:
|
|
203
241
|
application/json:
|
|
204
242
|
schema:
|
|
205
243
|
$ref: "#/components/schemas/UserTenantResponse"
|
|
206
244
|
/me/tokens:
|
|
207
245
|
get:
|
|
246
|
+
summary: List all API tokens for user's tenant.
|
|
247
|
+
description: List all API tokens for user's tenant.
|
|
208
248
|
operationId: listTokens
|
|
209
249
|
parameters:
|
|
210
250
|
- name: v
|
|
@@ -229,7 +269,7 @@ paths:
|
|
|
229
269
|
type: string
|
|
230
270
|
responses:
|
|
231
271
|
"200":
|
|
232
|
-
description:
|
|
272
|
+
description: List of API tokens (without raw token values)
|
|
233
273
|
content:
|
|
234
274
|
application/json:
|
|
235
275
|
schema:
|
|
@@ -237,6 +277,8 @@ paths:
|
|
|
237
277
|
items:
|
|
238
278
|
$ref: "#/components/schemas/ApiTokenListResponse"
|
|
239
279
|
post:
|
|
280
|
+
summary: Create a new API token for user's tenant.
|
|
281
|
+
description: Create a new API token for user's tenant.
|
|
240
282
|
operationId: createToken
|
|
241
283
|
parameters:
|
|
242
284
|
- name: v
|
|
@@ -260,6 +302,7 @@ paths:
|
|
|
260
302
|
schema:
|
|
261
303
|
type: string
|
|
262
304
|
requestBody:
|
|
305
|
+
description: token creation request
|
|
263
306
|
content:
|
|
264
307
|
application/json:
|
|
265
308
|
schema:
|
|
@@ -267,17 +310,20 @@ paths:
|
|
|
267
310
|
required: true
|
|
268
311
|
responses:
|
|
269
312
|
"200":
|
|
270
|
-
description:
|
|
313
|
+
description: Created token with raw token value (shown only once)
|
|
271
314
|
content:
|
|
272
315
|
application/json:
|
|
273
316
|
schema:
|
|
274
317
|
$ref: "#/components/schemas/ApiTokenCreateResponse"
|
|
275
318
|
/me/tokens/{tokenId}:
|
|
276
319
|
get:
|
|
320
|
+
summary: Get a single API token by ID.
|
|
321
|
+
description: Get a single API token by ID.
|
|
277
322
|
operationId: getToken
|
|
278
323
|
parameters:
|
|
279
324
|
- name: tokenId
|
|
280
325
|
in: path
|
|
326
|
+
description: token ID to retrieve
|
|
281
327
|
required: true
|
|
282
328
|
schema:
|
|
283
329
|
type: string
|
|
@@ -303,16 +349,19 @@ paths:
|
|
|
303
349
|
type: string
|
|
304
350
|
responses:
|
|
305
351
|
"200":
|
|
306
|
-
description:
|
|
352
|
+
description: Token details (without raw token value)
|
|
307
353
|
content:
|
|
308
354
|
application/json:
|
|
309
355
|
schema:
|
|
310
356
|
$ref: "#/components/schemas/ApiTokenListResponse"
|
|
311
357
|
delete:
|
|
358
|
+
summary: Revoke an API token.
|
|
359
|
+
description: Revoke an API token.
|
|
312
360
|
operationId: revokeToken
|
|
313
361
|
parameters:
|
|
314
362
|
- name: tokenId
|
|
315
363
|
in: path
|
|
364
|
+
description: token ID to revoke
|
|
316
365
|
required: true
|
|
317
366
|
schema:
|
|
318
367
|
type: string
|
|
@@ -338,7 +387,7 @@ paths:
|
|
|
338
387
|
type: string
|
|
339
388
|
responses:
|
|
340
389
|
"200":
|
|
341
|
-
description:
|
|
390
|
+
description: 204 No Content on success
|
|
342
391
|
/pdf/add:
|
|
343
392
|
post:
|
|
344
393
|
summary: Adds new objects to the PDF document.
|
|
@@ -708,6 +757,12 @@ paths:
|
|
|
708
757
|
description: API version
|
|
709
758
|
schema:
|
|
710
759
|
type: string
|
|
760
|
+
requestBody:
|
|
761
|
+
content:
|
|
762
|
+
application/json:
|
|
763
|
+
schema:
|
|
764
|
+
$ref: "#/components/schemas/AddPageRequest"
|
|
765
|
+
required: true
|
|
711
766
|
responses:
|
|
712
767
|
"200":
|
|
713
768
|
description: HTTP response containing the object reference for the newly
|
|
@@ -1053,6 +1108,10 @@ paths:
|
|
|
1053
1108
|
$ref: "#/components/schemas/CommandResult"
|
|
1054
1109
|
/ping:
|
|
1055
1110
|
get:
|
|
1111
|
+
summary: Basic health check endpoint that confirms server availability.
|
|
1112
|
+
description: Basic health check endpoint that confirms server availability.
|
|
1113
|
+
This endpoint provides a simple way for monitoring systems to verify that
|
|
1114
|
+
the API server is running and capable of handling requests.
|
|
1056
1115
|
operationId: index
|
|
1057
1116
|
parameters:
|
|
1058
1117
|
- name: v
|
|
@@ -1077,7 +1136,7 @@ paths:
|
|
|
1077
1136
|
type: string
|
|
1078
1137
|
responses:
|
|
1079
1138
|
"200":
|
|
1080
|
-
description:
|
|
1139
|
+
description: a simple "Pong" response indicating the server is operational
|
|
1081
1140
|
content:
|
|
1082
1141
|
text/plain:
|
|
1083
1142
|
schema:
|
|
@@ -1369,6 +1428,12 @@ paths:
|
|
|
1369
1428
|
format: binary
|
|
1370
1429
|
/test:
|
|
1371
1430
|
get:
|
|
1431
|
+
summary: Authenticated test endpoint that verifies API token authentication
|
|
1432
|
+
is working.
|
|
1433
|
+
description: Authenticated test endpoint that verifies API token authentication
|
|
1434
|
+
is working. This endpoint requires a valid API token (Bearer) and serves as
|
|
1435
|
+
a way to test that the authentication mechanism is functioning properly without
|
|
1436
|
+
affecting any actual application data.
|
|
1372
1437
|
operationId: test
|
|
1373
1438
|
parameters:
|
|
1374
1439
|
- name: v
|
|
@@ -1393,7 +1458,7 @@ paths:
|
|
|
1393
1458
|
type: string
|
|
1394
1459
|
responses:
|
|
1395
1460
|
"200":
|
|
1396
|
-
description:
|
|
1461
|
+
description: a confirmation message indicating successful authentication
|
|
1397
1462
|
content:
|
|
1398
1463
|
text/plain:
|
|
1399
1464
|
schema:
|
|
@@ -1499,6 +1564,20 @@ paths:
|
|
|
1499
1564
|
format: binary
|
|
1500
1565
|
components:
|
|
1501
1566
|
schemas:
|
|
1567
|
+
AddPageRequest:
|
|
1568
|
+
required:
|
|
1569
|
+
- orientation
|
|
1570
|
+
- pageIndex
|
|
1571
|
+
- pageSize
|
|
1572
|
+
type: object
|
|
1573
|
+
properties:
|
|
1574
|
+
pageIndex:
|
|
1575
|
+
type: integer
|
|
1576
|
+
format: int32
|
|
1577
|
+
orientation:
|
|
1578
|
+
$ref: "#/components/schemas/Orientation"
|
|
1579
|
+
pageSize:
|
|
1580
|
+
$ref: "#/components/schemas/PageSize"
|
|
1502
1581
|
AddRequest:
|
|
1503
1582
|
required:
|
|
1504
1583
|
- object
|
|
@@ -1520,6 +1599,7 @@ components:
|
|
|
1520
1599
|
type: string
|
|
1521
1600
|
expiresAt:
|
|
1522
1601
|
type: string
|
|
1602
|
+
description: Request to create a new API token.
|
|
1523
1603
|
ApiTokenCreateResponse:
|
|
1524
1604
|
required:
|
|
1525
1605
|
- metadata
|
|
@@ -1530,6 +1610,8 @@ components:
|
|
|
1530
1610
|
type: string
|
|
1531
1611
|
metadata:
|
|
1532
1612
|
$ref: "#/components/schemas/ApiTokenCreateResponse.ApiTokenMetadata"
|
|
1613
|
+
description: Response when creating a new API token. Contains the raw token
|
|
1614
|
+
(shown only once) plus metadata.
|
|
1533
1615
|
ApiTokenCreateResponse.ApiTokenMetadata:
|
|
1534
1616
|
required:
|
|
1535
1617
|
- createdAt
|
|
@@ -1571,6 +1653,7 @@ components:
|
|
|
1571
1653
|
type: string
|
|
1572
1654
|
expiresAt:
|
|
1573
1655
|
type: string
|
|
1656
|
+
description: Response for listing API tokens (does not include the raw token).
|
|
1574
1657
|
Authentication:
|
|
1575
1658
|
required:
|
|
1576
1659
|
- attributes
|
|
@@ -1632,19 +1715,31 @@ components:
|
|
|
1632
1715
|
type: object
|
|
1633
1716
|
properties:
|
|
1634
1717
|
origin:
|
|
1635
|
-
|
|
1718
|
+
description: Returns the origin point of this bounding rectangle. The origin
|
|
1719
|
+
represents the bottom-left corner in PDF coordinate system.
|
|
1720
|
+
allOf:
|
|
1721
|
+
- $ref: "#/components/schemas/Point"
|
|
1636
1722
|
x:
|
|
1637
1723
|
type: number
|
|
1724
|
+
description: X-coordinate of the rectangle's origin (left edge).
|
|
1638
1725
|
format: double
|
|
1639
1726
|
"y":
|
|
1640
1727
|
type: number
|
|
1728
|
+
description: Y-coordinate of the rectangle's origin (bottom edge in PDF
|
|
1729
|
+
coordinates).
|
|
1641
1730
|
format: double
|
|
1642
1731
|
width:
|
|
1643
1732
|
type: number
|
|
1733
|
+
description: Width of the rectangle extending rightward from the origin.
|
|
1644
1734
|
format: double
|
|
1645
1735
|
height:
|
|
1646
1736
|
type: number
|
|
1737
|
+
description: Height of the rectangle extending upward from the origin.
|
|
1647
1738
|
format: double
|
|
1739
|
+
description: "Represents a rectangular area defined by getPosition and dimensions.\
|
|
1740
|
+
\ This class encapsulates bounding box information for PDF objects, providing\
|
|
1741
|
+
\ spatial extent data used for positioning, collision detection, and layout\
|
|
1742
|
+
\ operations within PDF documents."
|
|
1648
1743
|
ChangeFormFieldRequest:
|
|
1649
1744
|
required:
|
|
1650
1745
|
- ref
|
|
@@ -1660,16 +1755,26 @@ components:
|
|
|
1660
1755
|
properties:
|
|
1661
1756
|
red:
|
|
1662
1757
|
type: integer
|
|
1758
|
+
description: Red color component (0-255).
|
|
1663
1759
|
format: int32
|
|
1664
1760
|
green:
|
|
1665
1761
|
type: integer
|
|
1762
|
+
description: Green color component (0-255).
|
|
1666
1763
|
format: int32
|
|
1667
1764
|
blue:
|
|
1668
1765
|
type: integer
|
|
1766
|
+
description: Blue color component (0-255).
|
|
1669
1767
|
format: int32
|
|
1670
1768
|
alpha:
|
|
1671
1769
|
type: integer
|
|
1770
|
+
description: "Alpha (transparency) component (0-255, where 255 is fully\
|
|
1771
|
+
\ opaque)."
|
|
1672
1772
|
format: int32
|
|
1773
|
+
description: "Represents color information using RGBA (Red, Green, Blue, Alpha)\
|
|
1774
|
+
\ color model. This class encapsulates color data for PDF objects, supporting\
|
|
1775
|
+
\ both opaque and transparent colors with integer values ranging from 0-255\
|
|
1776
|
+
\ for each component. Provides convenient constructors and utility methods\
|
|
1777
|
+
\ for color manipulation."
|
|
1673
1778
|
CommandResult:
|
|
1674
1779
|
required:
|
|
1675
1780
|
- commandName
|
|
@@ -1703,6 +1808,7 @@ components:
|
|
|
1703
1808
|
initialPageCount:
|
|
1704
1809
|
type: integer
|
|
1705
1810
|
format: int32
|
|
1811
|
+
description: Request to create a new blank PDF session.
|
|
1706
1812
|
DeleteRequest:
|
|
1707
1813
|
required:
|
|
1708
1814
|
- objectRef
|
|
@@ -1713,6 +1819,16 @@ components:
|
|
|
1713
1819
|
description: Request record for deleting PDF objects from a document. This immutable
|
|
1714
1820
|
record encapsulates the object reference needed to identify and remove specific
|
|
1715
1821
|
PDF objects from a document during editing operations.
|
|
1822
|
+
DocumentFontInfoDto:
|
|
1823
|
+
required:
|
|
1824
|
+
- documentFontName
|
|
1825
|
+
- systemFontName
|
|
1826
|
+
type: object
|
|
1827
|
+
properties:
|
|
1828
|
+
documentFontName:
|
|
1829
|
+
type: string
|
|
1830
|
+
systemFontName:
|
|
1831
|
+
type: string
|
|
1716
1832
|
DocumentSnapshot:
|
|
1717
1833
|
required:
|
|
1718
1834
|
- fonts
|
|
@@ -1726,7 +1842,7 @@ components:
|
|
|
1726
1842
|
fonts:
|
|
1727
1843
|
type: array
|
|
1728
1844
|
items:
|
|
1729
|
-
$ref: "#/components/schemas/
|
|
1845
|
+
$ref: "#/components/schemas/DocumentFontInfoDto"
|
|
1730
1846
|
pages:
|
|
1731
1847
|
type: array
|
|
1732
1848
|
items:
|
|
@@ -1748,30 +1864,27 @@ components:
|
|
|
1748
1864
|
$ref: "#/components/schemas/Position"
|
|
1749
1865
|
hint:
|
|
1750
1866
|
type: string
|
|
1867
|
+
description: "Request record for searching PDF objects within a document. This\
|
|
1868
|
+
\ immutable record encapsulates search criteria for locating PDF objects based\
|
|
1869
|
+
\ on type, getPosition constraints, and optional search hints, enabling flexible\
|
|
1870
|
+
\ and efficient object discovery within PDF documents."
|
|
1751
1871
|
Font:
|
|
1752
1872
|
type: object
|
|
1753
1873
|
properties:
|
|
1754
1874
|
name:
|
|
1755
1875
|
type: string
|
|
1876
|
+
description: "Font family name (e.g., \"Arial\", \"Times New Roman\", \"\
|
|
1877
|
+
Helvetica\")."
|
|
1756
1878
|
size:
|
|
1757
1879
|
type: number
|
|
1880
|
+
description: Font size in points.
|
|
1758
1881
|
format: double
|
|
1759
1882
|
embedded:
|
|
1760
1883
|
type: boolean
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
- similarityScore
|
|
1766
|
-
type: object
|
|
1767
|
-
properties:
|
|
1768
|
-
fontName:
|
|
1769
|
-
type: string
|
|
1770
|
-
fontType:
|
|
1771
|
-
$ref: "#/components/schemas/FontType"
|
|
1772
|
-
similarityScore:
|
|
1773
|
-
type: number
|
|
1774
|
-
format: double
|
|
1884
|
+
description: "Represents font properties for text rendering in PDF documents.\
|
|
1885
|
+
\ This class encapsulates font characteristics including typeface name, size,\
|
|
1886
|
+
\ and styling attributes such as bold, italic, and underline formatting. Used\
|
|
1887
|
+
\ throughout the API for consistent text formatting and style management."
|
|
1775
1888
|
FontType:
|
|
1776
1889
|
type: string
|
|
1777
1890
|
enum:
|
|
@@ -1962,10 +2075,35 @@ components:
|
|
|
1962
2075
|
- $ref: "#/components/schemas/FormFieldRef"
|
|
1963
2076
|
ObjectType:
|
|
1964
2077
|
type: string
|
|
2078
|
+
description: "Enumeration of PDF object types supported by the PDFDancer API.\
|
|
2079
|
+
\ This enum categorizes the different types of objects that can exist within\
|
|
2080
|
+
\ a PDF document, enabling type-safe operations and filtering across the API.\
|
|
2081
|
+
\ Each type represents a distinct category of PDF content with specific manipulation\
|
|
2082
|
+
\ capabilities and properties."
|
|
2083
|
+
x-enum-descriptions:
|
|
2084
|
+
- Root PDF document object containing all pages and metadata
|
|
2085
|
+
- Individual page within the PDF document
|
|
2086
|
+
- Single character or glyph element
|
|
2087
|
+
- Text paragraph or block element
|
|
2088
|
+
- Embedded image or graphics element
|
|
2089
|
+
- Vector path or shape element
|
|
2090
|
+
- Linear path segment
|
|
2091
|
+
- Rectangular shape element
|
|
2092
|
+
- Bezier curve path element
|
|
2093
|
+
- Clipping region or mask
|
|
2094
|
+
- FormXObject container
|
|
2095
|
+
- Interactive acroform field element
|
|
2096
|
+
- ""
|
|
2097
|
+
- ""
|
|
2098
|
+
- ""
|
|
2099
|
+
- ""
|
|
2100
|
+
- ""
|
|
2101
|
+
- ""
|
|
2102
|
+
- ""
|
|
1965
2103
|
enum:
|
|
1966
2104
|
- PDF
|
|
1967
2105
|
- PAGE
|
|
1968
|
-
-
|
|
2106
|
+
- TEXT_ELEMENT
|
|
1969
2107
|
- PARAGRAPH
|
|
1970
2108
|
- IMAGE
|
|
1971
2109
|
- PATH
|
|
@@ -1984,6 +2122,10 @@ components:
|
|
|
1984
2122
|
- CHECKBOX
|
|
1985
2123
|
Orientation:
|
|
1986
2124
|
type: string
|
|
2125
|
+
description: Enumeration of page orientations.
|
|
2126
|
+
x-enum-descriptions:
|
|
2127
|
+
- Portrait orientation (height \> width)
|
|
2128
|
+
- Landscape orientation (width \> height)
|
|
1987
2129
|
enum:
|
|
1988
2130
|
- PORTRAIT
|
|
1989
2131
|
- LANDSCAPE
|
|
@@ -2041,6 +2183,10 @@ components:
|
|
|
2041
2183
|
toPageIndex:
|
|
2042
2184
|
type: integer
|
|
2043
2185
|
format: int32
|
|
2186
|
+
description: "Request record for reordering pages within a PDF document. This\
|
|
2187
|
+
\ immutable record specifies a page movement operation, defining which page\
|
|
2188
|
+
\ should be moved and where it should be repositioned in the document's page\
|
|
2189
|
+
\ sequence."
|
|
2044
2190
|
PageRef:
|
|
2045
2191
|
required:
|
|
2046
2192
|
- orientation
|
|
@@ -2065,9 +2211,12 @@ components:
|
|
|
2065
2211
|
height:
|
|
2066
2212
|
type: number
|
|
2067
2213
|
format: double
|
|
2214
|
+
description: "Represents PDF page dimensions, supporting both standard sizes\
|
|
2215
|
+
\ and custom dimensions. Dimensions are specified in points (1/72 inch)."
|
|
2068
2216
|
PageSnapshot:
|
|
2069
2217
|
required:
|
|
2070
2218
|
- elements
|
|
2219
|
+
- fonts
|
|
2071
2220
|
- pageRef
|
|
2072
2221
|
type: object
|
|
2073
2222
|
properties:
|
|
@@ -2077,6 +2226,10 @@ components:
|
|
|
2077
2226
|
type: array
|
|
2078
2227
|
items:
|
|
2079
2228
|
$ref: "#/components/schemas/ObjectRef"
|
|
2229
|
+
fonts:
|
|
2230
|
+
type: array
|
|
2231
|
+
items:
|
|
2232
|
+
$ref: "#/components/schemas/DocumentFontInfoDto"
|
|
2080
2233
|
description: "Represents a complete snapshot of a single PDF page including\
|
|
2081
2234
|
\ its metadata and all elements. This response aggregates page information\
|
|
2082
2235
|
\ and all contained objects (paragraphs, images, etc.) into a single response,\
|
|
@@ -2188,6 +2341,10 @@ components:
|
|
|
2188
2341
|
"y":
|
|
2189
2342
|
type: number
|
|
2190
2343
|
format: double
|
|
2344
|
+
description: "Immutable point record representing 2D coordinates. This record\
|
|
2345
|
+
\ provides a simple and efficient way to represent coordinate pairs within\
|
|
2346
|
+
\ PDF documents, with conversion utilities for interoperability with Java's\
|
|
2347
|
+
\ standard geometry classes."
|
|
2191
2348
|
Position:
|
|
2192
2349
|
type: object
|
|
2193
2350
|
properties:
|
|
@@ -2199,26 +2356,54 @@ components:
|
|
|
2199
2356
|
type: string
|
|
2200
2357
|
x:
|
|
2201
2358
|
type: number
|
|
2359
|
+
description: "Returns the X coordinate of this getPosition. If no bounding\
|
|
2360
|
+
\ rectangle is defined, returns -1 as a sentinel value."
|
|
2202
2361
|
format: double
|
|
2203
2362
|
"y":
|
|
2204
2363
|
type: number
|
|
2364
|
+
description: "Returns the Y coordinate of this getPosition. If no bounding\
|
|
2365
|
+
\ rectangle is defined, returns -1 as a sentinel value."
|
|
2205
2366
|
format: double
|
|
2206
2367
|
pageIndex:
|
|
2207
2368
|
type: integer
|
|
2369
|
+
description: Returns the page number where this getPosition is located.
|
|
2208
2370
|
format: int32
|
|
2209
2371
|
shape:
|
|
2210
|
-
|
|
2372
|
+
description: Returns the geometric shape type of this getPosition.
|
|
2373
|
+
allOf:
|
|
2374
|
+
- $ref: "#/components/schemas/Position.ShapeType"
|
|
2211
2375
|
mode:
|
|
2212
|
-
|
|
2376
|
+
description: Returns the getPosition matching mode.
|
|
2377
|
+
allOf:
|
|
2378
|
+
- $ref: "#/components/schemas/Position.PositionMode"
|
|
2213
2379
|
boundingRect:
|
|
2214
|
-
|
|
2380
|
+
description: Returns the bounding rectangle defining the spatial extent
|
|
2381
|
+
of this getPosition.
|
|
2382
|
+
allOf:
|
|
2383
|
+
- $ref: "#/components/schemas/BoundingRect"
|
|
2384
|
+
description: "Represents spatial positioning and location information for PDF\
|
|
2385
|
+
\ objects. This class encapsulates various ways to specify object locations\
|
|
2386
|
+
\ within PDF documents, including page-based coordinates, bounding rectangles,\
|
|
2387
|
+
\ and different positioning modes. It supports both precise coordinate positioning\
|
|
2388
|
+
\ and area-based location specifications."
|
|
2215
2389
|
Position.PositionMode:
|
|
2216
2390
|
type: string
|
|
2391
|
+
description: Defines how getPosition matching should be performed when searching
|
|
2392
|
+
for objects.
|
|
2393
|
+
x-enum-descriptions:
|
|
2394
|
+
- Objects that intersect with the specified getPosition area
|
|
2395
|
+
- Objects completely contained within the specified getPosition area
|
|
2217
2396
|
enum:
|
|
2218
2397
|
- INTERSECT
|
|
2219
2398
|
- CONTAINS
|
|
2220
2399
|
Position.ShapeType:
|
|
2221
2400
|
type: string
|
|
2401
|
+
description: Defines the geometric shape type used for getPosition specification.
|
|
2402
|
+
x-enum-descriptions:
|
|
2403
|
+
- Single point coordinate
|
|
2404
|
+
- Linear shape between two points
|
|
2405
|
+
- Circular area with radius
|
|
2406
|
+
- Rectangular area with width and height
|
|
2222
2407
|
enum:
|
|
2223
2408
|
- POINT
|
|
2224
2409
|
- LINE
|
|
@@ -2278,13 +2463,21 @@ components:
|
|
|
2278
2463
|
properties:
|
|
2279
2464
|
width:
|
|
2280
2465
|
type: number
|
|
2466
|
+
description: Returns the width dimension.
|
|
2281
2467
|
format: double
|
|
2282
2468
|
height:
|
|
2283
2469
|
type: number
|
|
2470
|
+
description: Returns the height dimension.
|
|
2284
2471
|
format: double
|
|
2285
2472
|
area:
|
|
2286
2473
|
type: number
|
|
2474
|
+
description: "Calculates and returns the total area. This method computes\
|
|
2475
|
+
\ the area by multiplying width and height, useful for size comparisons\
|
|
2476
|
+
\ and layout calculations."
|
|
2287
2477
|
format: double
|
|
2478
|
+
description: "Represents dimensional measurements with width and height properties.\
|
|
2479
|
+
\ This class encapsulates size information for PDF objects (images, forms,\
|
|
2480
|
+
\ etc.), providing both individual dimension access and calculated area methods."
|
|
2288
2481
|
Subscription:
|
|
2289
2482
|
required:
|
|
2290
2483
|
- end
|
|
@@ -2357,7 +2550,6 @@ components:
|
|
|
2357
2550
|
type: string
|
|
2358
2551
|
TextStatus:
|
|
2359
2552
|
required:
|
|
2360
|
-
- fontRecommendation
|
|
2361
2553
|
- fontType
|
|
2362
2554
|
type: object
|
|
2363
2555
|
properties:
|
|
@@ -2367,12 +2559,13 @@ components:
|
|
|
2367
2559
|
type: boolean
|
|
2368
2560
|
fontType:
|
|
2369
2561
|
$ref: "#/components/schemas/FontType"
|
|
2370
|
-
|
|
2371
|
-
$ref: "#/components/schemas/
|
|
2562
|
+
fontInfoDto:
|
|
2563
|
+
$ref: "#/components/schemas/DocumentFontInfoDto"
|
|
2372
2564
|
warning:
|
|
2373
2565
|
type: string
|
|
2374
2566
|
TextTypeObjectRef:
|
|
2375
2567
|
required:
|
|
2568
|
+
- children
|
|
2376
2569
|
- color
|
|
2377
2570
|
- fontName
|
|
2378
2571
|
- fontSize
|
|
@@ -2434,6 +2627,7 @@ components:
|
|
|
2434
2627
|
type: string
|
|
2435
2628
|
status:
|
|
2436
2629
|
type: string
|
|
2630
|
+
description: Response containing user's tenant information with their role.
|
|
2437
2631
|
VersionResponse:
|
|
2438
2632
|
required:
|
|
2439
2633
|
- color
|
|
@@ -16,12 +16,14 @@ from .models import (
|
|
|
16
16
|
FontType, PathSegment, Line, Bezier, Path
|
|
17
17
|
)
|
|
18
18
|
from .paragraph_builder import ParagraphBuilder
|
|
19
|
+
from .page_builder import PageBuilder
|
|
19
20
|
from .path_builder import PathBuilder, LineBuilder, BezierBuilder
|
|
20
21
|
|
|
21
22
|
__version__ = "1.0.0"
|
|
22
23
|
__all__ = [
|
|
23
24
|
"PDFDancer",
|
|
24
25
|
"ParagraphBuilder",
|
|
26
|
+
"PageBuilder",
|
|
25
27
|
"PathBuilder",
|
|
26
28
|
"LineBuilder",
|
|
27
29
|
"BezierBuilder",
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
|
|
3
|
+
from pdfdancer import ValidationException, Image, Position
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ImageBuilder:
|
|
7
|
+
|
|
8
|
+
def __init__(self, client: 'PDFDancer'):
|
|
9
|
+
"""
|
|
10
|
+
Initialize the image builder with a client reference.
|
|
11
|
+
|
|
12
|
+
Args:
|
|
13
|
+
client: The PDFDancer instance for font registration
|
|
14
|
+
"""
|
|
15
|
+
if client is None:
|
|
16
|
+
raise ValidationException("Client cannot be null")
|
|
17
|
+
|
|
18
|
+
self._client = client
|
|
19
|
+
self._image = Image()
|
|
20
|
+
|
|
21
|
+
def from_file(self, img_path: Path) -> 'ImageBuilder':
|
|
22
|
+
self._image.data = img_path.read_bytes()
|
|
23
|
+
return self
|
|
24
|
+
|
|
25
|
+
def at(self, page, x, y) -> 'ImageBuilder':
|
|
26
|
+
self._image.position = Position.at_page_coordinates(page, x, y)
|
|
27
|
+
return self
|
|
28
|
+
|
|
29
|
+
def add(self) -> bool:
|
|
30
|
+
# noinspection PyProtectedMember
|
|
31
|
+
return self._client._add_image(self._image, self._image.position)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class ImageOnPageBuilder:
|
|
35
|
+
|
|
36
|
+
def __init__(self, client: 'PDFDancer', page_index: int):
|
|
37
|
+
"""
|
|
38
|
+
Initialize the image builder with a client reference.
|
|
39
|
+
|
|
40
|
+
Args:
|
|
41
|
+
client: The PDFDancer instance for font registration
|
|
42
|
+
"""
|
|
43
|
+
if client is None:
|
|
44
|
+
raise ValidationException("Client cannot be null")
|
|
45
|
+
|
|
46
|
+
self._client = client
|
|
47
|
+
self._image = Image()
|
|
48
|
+
self._page_index = page_index
|
|
49
|
+
|
|
50
|
+
def from_file(self, img_path: Path) -> 'ImageOnPageBuilder':
|
|
51
|
+
self._image.data = img_path.read_bytes()
|
|
52
|
+
return self
|
|
53
|
+
|
|
54
|
+
def at(self, x, y) -> 'ImageOnPageBuilder':
|
|
55
|
+
self._image.position = Position.at_page_coordinates(self._page_index, x, y)
|
|
56
|
+
return self
|
|
57
|
+
|
|
58
|
+
def add(self) -> bool:
|
|
59
|
+
# noinspection PyProtectedMember
|
|
60
|
+
return self._client._add_image(self._image, self._image.position)
|