Skip to content

Commit 10d5ce8

Browse files
helewrer3Garvit Kansal
andauthored
Python SDK Release v4.2.0 (#42)
* Upgrading Python SDK to v4.2.0 | Adding Import & Export Form Data Functionality * Updating Request Format --------- Co-authored-by: Garvit Kansal <[email protected]>
1 parent e321b9d commit 10d5ce8

17 files changed

+724
-3
lines changed

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ def parse_requirements(filename, session=None):
1212

1313
setuptools.setup(
1414
name="pdfservices-sdk",
15-
version="4.1.1",
15+
version="4.2.0",
1616
author='Adobe Acrobat Services',
1717
author_email='[email protected]',
1818
license='Apache2',
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Copyright 2024 Adobe
2+
# All Rights Reserved.
3+
#
4+
# NOTICE: All information contained herein is, and remains
5+
# the property of Adobe and its suppliers, if any. The intellectual
6+
# and technical concepts contained herein are proprietary to Adobe
7+
# and its suppliers and are protected by all applicable intellectual
8+
# property laws, including trade secret and copyright laws.
9+
# Dissemination of this information or reproduction of this material
10+
# is strictly forbidden unless prior written permission is obtained
11+
# from Adobe.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Copyright 2024 Adobe
2+
# All Rights Reserved.
3+
#
4+
# NOTICE: All information contained herein is, and remains
5+
# the property of Adobe and its suppliers, if any. The intellectual
6+
# and technical concepts contained herein are proprietary to Adobe
7+
# and its suppliers and are protected by all applicable intellectual
8+
# property laws, including trade secret and copyright laws.
9+
# Dissemination of this information or reproduction of this material
10+
# is strictly forbidden unless prior written permission is obtained
11+
# from Adobe.
12+
13+
import json
14+
from typing import List
15+
16+
from adobe.pdfservices.operation.config.notifier.notifier_config import NotifierConfig
17+
from adobe.pdfservices.operation.internal.api.dto.request.pdf_services_api.pdf_services_api_request import \
18+
PDFServicesAPIRequest
19+
from adobe.pdfservices.operation.internal.util.json_hint_encoder import JSONHintEncoder
20+
from adobe.pdfservices.operation.io.asset import Asset
21+
from adobe.pdfservices.operation.io.external_asset import ExternalAsset
22+
23+
24+
class ExportPDFFormDataExternalAssetRequest(PDFServicesAPIRequest):
25+
json_hint = {
26+
'input': 'input',
27+
'output': 'output',
28+
'notify_config_list': 'notifiers'
29+
}
30+
31+
def __init__(self, input_asset: Asset, notify_config_list: List[NotifierConfig] = None,
32+
output_asset: ExternalAsset = None):
33+
super().__init__()
34+
input_asset.__class__ = ExternalAsset
35+
self.input: ExternalAsset = input_asset
36+
if output_asset is not None:
37+
self.output = output_asset
38+
self.notify_config_list = notify_config_list
39+
40+
def to_json(self):
41+
return json.dumps(self, cls=JSONHintEncoder, indent=1, sort_keys=True)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Copyright 2024 Adobe
2+
# All Rights Reserved.
3+
#
4+
# NOTICE: All information contained herein is, and remains
5+
# the property of Adobe and its suppliers, if any. The intellectual
6+
# and technical concepts contained herein are proprietary to Adobe
7+
# and its suppliers and are protected by all applicable intellectual
8+
# property laws, including trade secret and copyright laws.
9+
# Dissemination of this information or reproduction of this material
10+
# is strictly forbidden unless prior written permission is obtained
11+
# from Adobe.
12+
13+
import json
14+
from typing import List
15+
16+
from adobe.pdfservices.operation.config.notifier.notifier_config import NotifierConfig
17+
from adobe.pdfservices.operation.internal.api.dto.request.pdf_services_api.pdf_services_api_request import \
18+
PDFServicesAPIRequest
19+
from adobe.pdfservices.operation.internal.util.json_hint_encoder import JSONHintEncoder
20+
21+
22+
class ExportPDFFormDataInternalAssetRequest(PDFServicesAPIRequest):
23+
json_hint = {
24+
'asset_id': 'assetID',
25+
'notify_config_list': 'notifiers'
26+
}
27+
28+
def __init__(self, input_asset_id: str, notify_config_list: List[NotifierConfig] = None):
29+
super().__init__()
30+
self.asset_id = input_asset_id
31+
self.notify_config_list = notify_config_list
32+
33+
def to_json(self):
34+
return json.dumps(self, cls=JSONHintEncoder, indent=1, sort_keys=True)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Copyright 2024 Adobe
2+
# All Rights Reserved.
3+
#
4+
# NOTICE: All information contained herein is, and remains
5+
# the property of Adobe and its suppliers, if any. The intellectual
6+
# and technical concepts contained herein are proprietary to Adobe
7+
# and its suppliers and are protected by all applicable intellectual
8+
# property laws, including trade secret and copyright laws.
9+
# Dissemination of this information or reproduction of this material
10+
# is strictly forbidden unless prior written permission is obtained
11+
# from Adobe.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
# Copyright 2024 Adobe
2+
# All Rights Reserved.
3+
#
4+
# NOTICE: All information contained herein is, and remains
5+
# the property of Adobe and its suppliers, if any. The intellectual
6+
# and technical concepts contained herein are proprietary to Adobe
7+
# and its suppliers and are protected by all applicable intellectual
8+
# property laws, including trade secret and copyright laws.
9+
# Dissemination of this information or reproduction of this material
10+
# is strictly forbidden unless prior written permission is obtained
11+
# from Adobe.
12+
13+
import json
14+
from typing import List
15+
16+
from adobe.pdfservices.operation.config.notifier.notifier_config import NotifierConfig
17+
from adobe.pdfservices.operation.internal.api.dto.request.pdf_services_api.pdf_services_api_request import PDFServicesAPIRequest
18+
from adobe.pdfservices.operation.internal.util.json_hint_encoder import JSONHintEncoder
19+
from adobe.pdfservices.operation.io.external_asset import ExternalAsset
20+
from adobe.pdfservices.operation.pdfjobs.params.import_pdf_form_data.import_pdf_form_data_params import ImportPDFFormDataParams
21+
22+
23+
class ImportPDFFormDataParamsPayload:
24+
"""
25+
Payload class for Import PDF Form Data parameters
26+
"""
27+
json_hint = {
28+
'json_form_fields_data': 'jsonFormFieldsData'
29+
}
30+
31+
def __init__(self, import_pdf_form_data_params: ImportPDFFormDataParams = None):
32+
"""
33+
Constructs a new ImportPDFFormDataParamsPayload instance.
34+
35+
:param import_pdf_form_data_params: Parameters containing form data to import
36+
:type import_pdf_form_data_params: ImportPDFFormDataParams
37+
"""
38+
self.json_form_fields_data = None
39+
if import_pdf_form_data_params is not None:
40+
self.json_form_fields_data = import_pdf_form_data_params.get_json_form_fields_data()
41+
42+
def to_json(self):
43+
"""
44+
:return: JSON representation of the payload
45+
:rtype: str
46+
"""
47+
return json.dumps(self, cls=JSONHintEncoder, indent=1, sort_keys=True)
48+
49+
50+
class ImportPDFFormDataExternalAssetRequest(PDFServicesAPIRequest):
51+
"""
52+
Request DTO for Import PDF Form Data operation using external assets
53+
"""
54+
55+
json_hint = {
56+
'input_asset': 'input',
57+
'params': 'params',
58+
'output_asset': 'output',
59+
'notify_config_list': 'notifiers'
60+
}
61+
62+
def __init__(self, input_asset: ExternalAsset, import_pdf_form_data_params: ImportPDFFormDataParams,
63+
notifier_config_list: List[NotifierConfig] = None):
64+
"""
65+
Constructs a new ImportPDFFormDataExternalAssetRequest instance.
66+
67+
:param input_asset: External asset representing the input PDF
68+
:type input_asset: ExternalAsset
69+
:param import_pdf_form_data_params: Parameters containing form data to import
70+
:type import_pdf_form_data_params: ImportPDFFormDataParams
71+
:param notifier_config_list: List of notifier configurations (Optional)
72+
:type notifier_config_list: List[NotifierConfig]
73+
"""
74+
super().__init__()
75+
self.input_asset = input_asset
76+
self.params = ImportPDFFormDataParamsPayload(import_pdf_form_data_params)
77+
self.notify_config_list = notifier_config_list
78+
self.output_asset = None
79+
80+
def set_output(self, output_asset: ExternalAsset):
81+
"""
82+
Sets the output external asset.
83+
84+
:param output_asset: External asset for output
85+
:type output_asset: ExternalAsset
86+
:return: Self for method chaining
87+
:rtype: ImportPDFFormDataExternalAssetRequest
88+
"""
89+
self.output_asset = output_asset
90+
return self
91+
92+
def to_json(self):
93+
"""
94+
:return: JSON representation of the request
95+
:rtype: str
96+
"""
97+
return json.dumps(self, cls=JSONHintEncoder, indent=1, sort_keys=True)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# Copyright 2024 Adobe
2+
# All Rights Reserved.
3+
#
4+
# NOTICE: All information contained herein is, and remains
5+
# the property of Adobe and its suppliers, if any. The intellectual
6+
# and technical concepts contained herein are proprietary to Adobe
7+
# and its suppliers and are protected by all applicable intellectual
8+
# property laws, including trade secret and copyright laws.
9+
# Dissemination of this information or reproduction of this material
10+
# is strictly forbidden unless prior written permission is obtained
11+
# from Adobe.
12+
13+
import json
14+
from typing import List
15+
16+
from adobe.pdfservices.operation.config.notifier.notifier_config import NotifierConfig
17+
from adobe.pdfservices.operation.internal.api.dto.request.pdf_services_api.pdf_services_api_request import PDFServicesAPIRequest
18+
from adobe.pdfservices.operation.internal.util.json_hint_encoder import JSONHintEncoder
19+
from adobe.pdfservices.operation.pdfjobs.params.import_pdf_form_data.import_pdf_form_data_params import ImportPDFFormDataParams
20+
21+
22+
class ImportPDFFormDataInternalAssetRequest(PDFServicesAPIRequest):
23+
"""
24+
Request DTO for Import PDF Form Data operation using internal assets
25+
"""
26+
27+
json_hint = {
28+
'asset_id': 'assetID',
29+
'json_form_fields_data': 'jsonFormFieldsData',
30+
'notify_config_list': 'notifiers'
31+
}
32+
33+
def __init__(self, asset_id: str, import_pdf_form_data_params: ImportPDFFormDataParams,
34+
notifier_config_list: List[NotifierConfig] = None):
35+
"""
36+
Constructs a new ImportPDFFormDataInternalAssetRequest instance.
37+
38+
:param asset_id: Asset ID of the input PDF document
39+
:type asset_id: str
40+
:param import_pdf_form_data_params: Parameters containing form data to import
41+
:type import_pdf_form_data_params: ImportPDFFormDataParams
42+
:param notifier_config_list: List of notifier configurations (Optional)
43+
:type notifier_config_list: List[NotifierConfig]
44+
"""
45+
super().__init__()
46+
self.asset_id = asset_id
47+
self.json_form_fields_data = import_pdf_form_data_params.get_json_form_fields_data()
48+
self.notify_config_list = notifier_config_list
49+
50+
def to_json(self):
51+
"""
52+
:return: JSON representation of the request
53+
:rtype: str
54+
"""
55+
return json.dumps(self, cls=JSONHintEncoder, indent=1, sort_keys=True)

src/adobe/pdfservices/operation/internal/constants/operation_header_info_endpoint_map.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ class OperationHeaderInfoEndpointMap(Enum):
1717
CREATE_PDF = ("Create PDF Operation", "createpdf")
1818
COMBINE_PDF = ("Combine Files Operation", "combinepdf")
1919
EXPORT_PDF = ("Export PDF Operation", "exportpdf")
20+
EXPORT_PDF_FORM_DATA = ("Export PDF Form Data Operation", "getformdata")
21+
IMPORT_PDF_FORM_DATA = ("Import PDF Form Data Operation", "setformdata")
2022
EXPORT_PDF_TO_IMAGES = ("Export PDF to Images Operation", "pdftoimages")
2123
HTML_TO_PDF = ("HTML to PDF Operation", "htmltopdf")
2224
OCR = ("OCR Operation", "ocr")

src/adobe/pdfservices/operation/internal/constants/service_constants.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ class ServiceConstants:
4747
PROTECT_PDF_NAME = "PROTECT_PDF"
4848
COMBINE_PDF_NAME = "COMBINE_PDF"
4949
EXPORT_PDF_OPERATION_NAME = "EXPORT_PDF"
50+
EXPORT_PDF_FORM_DATA_OPERATION_NAME = "EXPORT_PDF_FORM_DATA"
51+
IMPORT_PDF_FORM_DATA_OPERATION_NAME = "IMPORT_PDF_FORM_DATA"
5052
OCR_PDF_OPERATION_NAME = "OCR_PDF"
5153
HTML_TO_PDF_OPERATION_NAME = "HTML_TO_PDF"
5254
COMPRESS_PDF_OPERATION_NAME = "COMPRESS_PDF"

src/adobe/pdfservices/operation/internal/http/http_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def _append_default_headers(headers: dict):
5151
# Set SDK Info header
5252
headers[DefaultHeaders.DC_APP_INFO_HEADER_KEY] = "{lang}-{name}-{version}".format(lang="python",
5353
name='pdfservices-sdk',
54-
version='4.1.0')
54+
version='4.2.0')
5555
headers[DefaultHeaders.ACCEPT_HEADER_NAME] = DefaultHeaders.JSON_TXT_CONTENT_TYPE
5656

5757

0 commit comments

Comments
 (0)