Skip to content

API Reference

PDFGate

Client for the PDFGate API.

Attributes:

Name Type Description
api_key str

API key used for authentication.

domain str

Base API domain derived from the API key.

request_builder RequestBuilder

Builds HTTP requests for the API from parameter objects.

sync_client PDFGateHTTPClientSync

Synchronous HTTP client that handles HTTP errors.

async_client PDFGateHTTPClientAsync

Asynchronous HTTP client that handles HTTP errors.

Source code in src/pdfgate/pdfgate.py
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
class PDFGate:
    """Client for the PDFGate API.

    Attributes:
        api_key (str):
            API key used for authentication.
        domain (str):
            Base API domain derived from the API key.
        request_builder (RequestBuilder):
            Builds HTTP requests for the API from parameter objects.
        sync_client (PDFGateHTTPClientSync):
            Synchronous HTTP client that handles HTTP errors.
        async_client (PDFGateHTTPClientAsync):
            Asynchronous HTTP client that handles HTTP errors.
    """

    def __init__(self, api_key: str):
        """Initialize a PDFGate client.

        Args:
            api_key: The API key to use. Must start with 'live_' or 'test_'.

        Raises:
            PDFGateError: If the API key is invalid.
        """
        self.domain = get_domain_from_api_key(api_key)
        self.api_key = api_key
        self.request_builder = RequestBuilder(api_key=api_key)
        self.sync_client = PDFGateHTTPClientSync(api_key=api_key)
        self.async_client = PDFGateHTTPClientAsync(api_key=api_key)

    def get_document(self, params: GetDocumentParams) -> PDFGateDocument:
        """Retrieve a stored document’s metadata (and optionally a fresh pre-signed download URL).

        Returns:
            A `PDFGateDocument` parsed from the JSON response.

        Raises:
            PDFGateError: If the HTTP request fails (including non-2xx responses) or if
                there is a network/connection error. The error includes status code
                and message when available.
        """
        request = self.request_builder.build_get_document(params)
        response = self.sync_client.try_make_request(request)
        result = ResponseBuilder.build_document_response(response)

        return result

    async def get_document_async(self, params: GetDocumentParams) -> PDFGateDocument:
        """Retrieve a stored document’s metadata (and optionally a fresh pre-signed download URL).

        Returns:
            A `PDFGateDocument` parsed from the JSON response.

        Raises:
            PDFGateError: If the HTTP request fails (including non-2xx responses) or if
                there is a network/connection error. The error includes status code
                and message when available.
        """
        request = self.request_builder.build_get_document(params)
        response = await self.async_client.try_make_request_async(request)
        result = ResponseBuilder.build_document_response(response)

        return result

    def get_file(self, params: GetFileParams) -> bytes:
        """Download a raw PDF file by its document ID.

        Important: Accessing stored generated files requires enabling
        “Save files” in the PDFGate Dashboard settings (disabled by default).

        Returns:
            The raw bytes of the file.
        """
        request = self.request_builder.build_get_file(params.document_id)
        response = self.sync_client.try_make_request(request=request)

        return response.content

    async def get_file_async(self, params: GetFileParams) -> bytes:
        """Download a raw PDF file by its document ID.

        Important: Accessing stored generated files requires enabling
        “Save files” in the PDFGate Dashboard settings (disabled by default).

        Returns:
            The raw bytes of the file.
        """
        request = self.request_builder.build_get_file(params.document_id)
        response = await self.async_client.try_make_request_async(request=request)

        return response.content

    def generate_pdf(self, params: GeneratePDFParams) -> PDFGateDocument:
        """Generate a PDF from a URL or raw HTML.

        Returns:
            A `PDFGateDocument` parsed from the JSON response.
        """
        if not params.html and not params.url:
            raise ParamsValidationError(
                "Either the 'html' or 'url' parameters must be provided to generate a PDF."
            )

        request = self.request_builder.build_generate_pdf(params)
        response = self.sync_client.try_make_request(request)
        result = ResponseBuilder.build_document_response(response)

        return result

    async def generate_pdf_async(self, params: GeneratePDFParams) -> PDFGateDocument:
        """Generate a PDF from a URL or raw HTML.

        Returns:
            A `PDFGateDocument` parsed from the JSON response.
        """
        if not params.html and not params.url:
            raise ParamsValidationError(
                "Either the 'html' or 'url' parameters must be provided to generate a PDF."
            )

        request = self.request_builder.build_generate_pdf(params)
        response = await self.async_client.try_make_request_async(request)
        result = ResponseBuilder.build_document_response(response)

        return result

    def flatten_pdf(self, params: FlattenPDFParams) -> PDFGateDocument:
        """Flatten an interactive PDF into a static, non-editable PDF.

        Args:
            params: A `FlattenPDFParams` instance.

        Returns:
            A `PDFGateDocument` instance.
        """
        request = self.request_builder.build_flatten_pdf(params)
        response = self.sync_client.try_make_request(request)
        result = ResponseBuilder.build_document_response(response)

        return result

    async def flatten_pdf_async(self, params: FlattenPDFParams) -> PDFGateDocument:
        """Flatten an interactive PDF into a static, non-editable PDF.

        Args:
            params: A `FlattenPDFParams` instance.

        Returns:
            A `PDFGateDocument` instance.
        """
        request = self.request_builder.build_flatten_pdf(params)
        response = await self.async_client.try_make_request_async(request)
        result = ResponseBuilder.build_document_response(response)

        return result

    def extract_pdf_form_data(self, params: ExtractPDFFormDataParams) -> Any:
        """Extract form field data from a fillable PDF and return it as JSON.

        Args:
            params: A `ExtractPDFFormDataParams` instance.

        Returns:
            JSON object mapping form field names to their values.
        """
        request = self.request_builder.build_extract_pdf_form_data(params)
        response = self.sync_client.try_make_request(request)
        result = ResponseBuilder.build_json_response(response)

        return result

    async def extract_pdf_form_data_async(
        self, params: ExtractPDFFormDataParams
    ) -> Any:
        """Extract form field data from a fillable PDF and return it as JSON.

        Args:
            params: A `ExtractPDFFormDataParams` instance.

        Returns:
            JSON object mapping form field names to their values.
        """
        request = self.request_builder.build_extract_pdf_form_data(params)
        response = await self.async_client.try_make_request_async(request)
        result = ResponseBuilder.build_json_response(response)

        return result

    def protect_pdf(self, params: ProtectPDFParams) -> PDFGateDocument:
        """Protect a PDF using encryption + optional permission restrictions.

        Security options highlights:
            - `algorithm`: `"AES256"` (default) or `"AES128"`.
            - `user_password`: password required to open the PDF (optional).
            - `owner_password`: full control password; required in some cases (e.g., AES256 with `user_password`).
            - Restrictions: `disable_print`, `disable_copy`, `disable_editing`.
            - `encrypt_metadata`: whether PDF metadata is encrypted (default `False`).

        Args:
            params: A `ProtectPDFParams` instance.

        Returns:
            A `PDFGateDocument` instance.
        """
        request = self.request_builder.build_protect_pdf(params)
        response = self.sync_client.try_make_request(request)
        result = ResponseBuilder.build_document_response(response)

        return result

    async def protect_pdf_async(self, params: ProtectPDFParams) -> PDFGateDocument:
        """Protect a PDF using encryption + optional permission restrictions.

        Security options highlights:
            - `algorithm`: `"AES256"` (default) or `"AES128"`.
            - `user_password`: password required to open the PDF (optional).
            - `owner_password`: full control password; required in some cases (e.g., AES256 with `user_password`).
            - Restrictions: `disable_print`, `disable_copy`, `disable_editing`.
            - `encrypt_metadata`: whether PDF metadata is encrypted (default `False`).

        Args:
            params: A `ProtectPDFParams` instance.

        Returns:
            A `PDFGateDocument` instance.
        """
        request = self.request_builder.build_protect_pdf(params)
        response = await self.async_client.try_make_request_async(request)
        result = ResponseBuilder.build_document_response(response)

        return result

    def compress_pdf(self, params: CompressPDFParams) -> PDFGateDocument:
        """Compress a PDF document to reduce its size without changing its visual content.

        Args:
            params: A `CompressPDFParams` instance.

        Returns:
            A `PDFGateDocument` instance.
        """
        request = self.request_builder.build_compress_pdf(params)
        response = self.sync_client.try_make_request(request)
        result = ResponseBuilder.build_document_response(response)

        return result

    async def compress_pdf_async(self, params: CompressPDFParams) -> PDFGateDocument:
        """Compress a PDF document to reduce its size without changing its visual content.

        Args:
            params: A `CompressPDFParams` instance.

        Returns:
            A `PDFGateDocument` instance.
        """
        request = self.request_builder.build_compress_pdf(params)
        response = await self.async_client.try_make_request_async(request)
        result = ResponseBuilder.build_document_response(response)

        return result

    def watermark_pdf(self, params: WatermarkPDFParams) -> PDFGateDocument:
        """Apply a text or image watermark to a PDF.

        Watermark configuration highlights:
            - `type` is required: `"text"` or `"image"`.
            - For text watermarks: `text` required when `type="text"`.
            - For image watermarks: upload `watermark` image file (`.png`, `.jpg`, `.jpeg`).
            - Optional: `font` (standard PDF fonts), `fontFile`
            (`.ttf`/`.otf` overrides `font`), `fontSize`, `fontColor`,
            `opacity` (0..1), `xPosition`, `yPosition`, `imageWidth`, `imageHeight`,
            `rotate` (0..360).

        Args:
            params: A `WatermarkPDFParams` instance.

        Returns:
            A `PDFGateDocument` instance.
        """
        request = self.request_builder.build_watermark_pdf(params)
        response = self.sync_client.try_make_request(request)
        result = ResponseBuilder.build_document_response(response)

        return result

    async def watermark_pdf_async(self, params: WatermarkPDFParams) -> PDFGateDocument:
        """Apply a text or image watermark to a PDF.

        Watermark configuration highlights:
            - `type` is required: `"text"` or `"image"`.
            - For text watermarks: `text` required when `type="text"`.
            - For image watermarks: upload `watermark` image file (`.png`, `.jpg`, `.jpeg`).
            - Optional: `font` (standard PDF fonts), `fontFile`
            (`.ttf`/`.otf` overrides `font`), `fontSize`, `fontColor`,
            `opacity` (0..1), `xPosition`, `yPosition`, `imageWidth`, `imageHeight`,
            `rotate` (0..360).

        Args:
            params: A `WatermarkPDFParams` instance.

        Returns:
            A `PDFGateDocument` instance.
        """
        request = self.request_builder.build_watermark_pdf(params)
        response = await self.async_client.try_make_request_async(request)
        result = ResponseBuilder.build_document_response(response)

        return result

__init__(api_key)

Initialize a PDFGate client.

Parameters:

Name Type Description Default
api_key str

The API key to use. Must start with 'live_' or 'test_'.

required

Raises:

Type Description
PDFGateError

If the API key is invalid.

Source code in src/pdfgate/pdfgate.py
37
38
39
40
41
42
43
44
45
46
47
48
49
50
def __init__(self, api_key: str):
    """Initialize a PDFGate client.

    Args:
        api_key: The API key to use. Must start with 'live_' or 'test_'.

    Raises:
        PDFGateError: If the API key is invalid.
    """
    self.domain = get_domain_from_api_key(api_key)
    self.api_key = api_key
    self.request_builder = RequestBuilder(api_key=api_key)
    self.sync_client = PDFGateHTTPClientSync(api_key=api_key)
    self.async_client = PDFGateHTTPClientAsync(api_key=api_key)

compress_pdf(params)

Compress a PDF document to reduce its size without changing its visual content.

Parameters:

Name Type Description Default
params CompressPDFParams

A CompressPDFParams instance.

required

Returns:

Type Description
PDFGateDocument

A PDFGateDocument instance.

Source code in src/pdfgate/pdfgate.py
254
255
256
257
258
259
260
261
262
263
264
265
266
267
def compress_pdf(self, params: CompressPDFParams) -> PDFGateDocument:
    """Compress a PDF document to reduce its size without changing its visual content.

    Args:
        params: A `CompressPDFParams` instance.

    Returns:
        A `PDFGateDocument` instance.
    """
    request = self.request_builder.build_compress_pdf(params)
    response = self.sync_client.try_make_request(request)
    result = ResponseBuilder.build_document_response(response)

    return result

compress_pdf_async(params) async

Compress a PDF document to reduce its size without changing its visual content.

Parameters:

Name Type Description Default
params CompressPDFParams

A CompressPDFParams instance.

required

Returns:

Type Description
PDFGateDocument

A PDFGateDocument instance.

Source code in src/pdfgate/pdfgate.py
269
270
271
272
273
274
275
276
277
278
279
280
281
282
async def compress_pdf_async(self, params: CompressPDFParams) -> PDFGateDocument:
    """Compress a PDF document to reduce its size without changing its visual content.

    Args:
        params: A `CompressPDFParams` instance.

    Returns:
        A `PDFGateDocument` instance.
    """
    request = self.request_builder.build_compress_pdf(params)
    response = await self.async_client.try_make_request_async(request)
    result = ResponseBuilder.build_document_response(response)

    return result

extract_pdf_form_data(params)

Extract form field data from a fillable PDF and return it as JSON.

Parameters:

Name Type Description Default
params ExtractPDFFormDataParams

A ExtractPDFFormDataParams instance.

required

Returns:

Type Description
Any

JSON object mapping form field names to their values.

Source code in src/pdfgate/pdfgate.py
178
179
180
181
182
183
184
185
186
187
188
189
190
191
def extract_pdf_form_data(self, params: ExtractPDFFormDataParams) -> Any:
    """Extract form field data from a fillable PDF and return it as JSON.

    Args:
        params: A `ExtractPDFFormDataParams` instance.

    Returns:
        JSON object mapping form field names to their values.
    """
    request = self.request_builder.build_extract_pdf_form_data(params)
    response = self.sync_client.try_make_request(request)
    result = ResponseBuilder.build_json_response(response)

    return result

extract_pdf_form_data_async(params) async

Extract form field data from a fillable PDF and return it as JSON.

Parameters:

Name Type Description Default
params ExtractPDFFormDataParams

A ExtractPDFFormDataParams instance.

required

Returns:

Type Description
Any

JSON object mapping form field names to their values.

Source code in src/pdfgate/pdfgate.py
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
async def extract_pdf_form_data_async(
    self, params: ExtractPDFFormDataParams
) -> Any:
    """Extract form field data from a fillable PDF and return it as JSON.

    Args:
        params: A `ExtractPDFFormDataParams` instance.

    Returns:
        JSON object mapping form field names to their values.
    """
    request = self.request_builder.build_extract_pdf_form_data(params)
    response = await self.async_client.try_make_request_async(request)
    result = ResponseBuilder.build_json_response(response)

    return result

flatten_pdf(params)

Flatten an interactive PDF into a static, non-editable PDF.

Parameters:

Name Type Description Default
params FlattenPDFParams

A FlattenPDFParams instance.

required

Returns:

Type Description
PDFGateDocument

A PDFGateDocument instance.

Source code in src/pdfgate/pdfgate.py
148
149
150
151
152
153
154
155
156
157
158
159
160
161
def flatten_pdf(self, params: FlattenPDFParams) -> PDFGateDocument:
    """Flatten an interactive PDF into a static, non-editable PDF.

    Args:
        params: A `FlattenPDFParams` instance.

    Returns:
        A `PDFGateDocument` instance.
    """
    request = self.request_builder.build_flatten_pdf(params)
    response = self.sync_client.try_make_request(request)
    result = ResponseBuilder.build_document_response(response)

    return result

flatten_pdf_async(params) async

Flatten an interactive PDF into a static, non-editable PDF.

Parameters:

Name Type Description Default
params FlattenPDFParams

A FlattenPDFParams instance.

required

Returns:

Type Description
PDFGateDocument

A PDFGateDocument instance.

Source code in src/pdfgate/pdfgate.py
163
164
165
166
167
168
169
170
171
172
173
174
175
176
async def flatten_pdf_async(self, params: FlattenPDFParams) -> PDFGateDocument:
    """Flatten an interactive PDF into a static, non-editable PDF.

    Args:
        params: A `FlattenPDFParams` instance.

    Returns:
        A `PDFGateDocument` instance.
    """
    request = self.request_builder.build_flatten_pdf(params)
    response = await self.async_client.try_make_request_async(request)
    result = ResponseBuilder.build_document_response(response)

    return result

generate_pdf(params)

Generate a PDF from a URL or raw HTML.

Returns:

Type Description
PDFGateDocument

A PDFGateDocument parsed from the JSON response.

Source code in src/pdfgate/pdfgate.py
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
def generate_pdf(self, params: GeneratePDFParams) -> PDFGateDocument:
    """Generate a PDF from a URL or raw HTML.

    Returns:
        A `PDFGateDocument` parsed from the JSON response.
    """
    if not params.html and not params.url:
        raise ParamsValidationError(
            "Either the 'html' or 'url' parameters must be provided to generate a PDF."
        )

    request = self.request_builder.build_generate_pdf(params)
    response = self.sync_client.try_make_request(request)
    result = ResponseBuilder.build_document_response(response)

    return result

generate_pdf_async(params) async

Generate a PDF from a URL or raw HTML.

Returns:

Type Description
PDFGateDocument

A PDFGateDocument parsed from the JSON response.

Source code in src/pdfgate/pdfgate.py
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
async def generate_pdf_async(self, params: GeneratePDFParams) -> PDFGateDocument:
    """Generate a PDF from a URL or raw HTML.

    Returns:
        A `PDFGateDocument` parsed from the JSON response.
    """
    if not params.html and not params.url:
        raise ParamsValidationError(
            "Either the 'html' or 'url' parameters must be provided to generate a PDF."
        )

    request = self.request_builder.build_generate_pdf(params)
    response = await self.async_client.try_make_request_async(request)
    result = ResponseBuilder.build_document_response(response)

    return result

get_document(params)

Retrieve a stored document’s metadata (and optionally a fresh pre-signed download URL).

Returns:

Type Description
PDFGateDocument

A PDFGateDocument parsed from the JSON response.

Raises:

Type Description
PDFGateError

If the HTTP request fails (including non-2xx responses) or if there is a network/connection error. The error includes status code and message when available.

Source code in src/pdfgate/pdfgate.py
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
def get_document(self, params: GetDocumentParams) -> PDFGateDocument:
    """Retrieve a stored document’s metadata (and optionally a fresh pre-signed download URL).

    Returns:
        A `PDFGateDocument` parsed from the JSON response.

    Raises:
        PDFGateError: If the HTTP request fails (including non-2xx responses) or if
            there is a network/connection error. The error includes status code
            and message when available.
    """
    request = self.request_builder.build_get_document(params)
    response = self.sync_client.try_make_request(request)
    result = ResponseBuilder.build_document_response(response)

    return result

get_document_async(params) async

Retrieve a stored document’s metadata (and optionally a fresh pre-signed download URL).

Returns:

Type Description
PDFGateDocument

A PDFGateDocument parsed from the JSON response.

Raises:

Type Description
PDFGateError

If the HTTP request fails (including non-2xx responses) or if there is a network/connection error. The error includes status code and message when available.

Source code in src/pdfgate/pdfgate.py
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
async def get_document_async(self, params: GetDocumentParams) -> PDFGateDocument:
    """Retrieve a stored document’s metadata (and optionally a fresh pre-signed download URL).

    Returns:
        A `PDFGateDocument` parsed from the JSON response.

    Raises:
        PDFGateError: If the HTTP request fails (including non-2xx responses) or if
            there is a network/connection error. The error includes status code
            and message when available.
    """
    request = self.request_builder.build_get_document(params)
    response = await self.async_client.try_make_request_async(request)
    result = ResponseBuilder.build_document_response(response)

    return result

get_file(params)

Download a raw PDF file by its document ID.

Important: Accessing stored generated files requires enabling “Save files” in the PDFGate Dashboard settings (disabled by default).

Returns:

Type Description
bytes

The raw bytes of the file.

Source code in src/pdfgate/pdfgate.py
86
87
88
89
90
91
92
93
94
95
96
97
98
def get_file(self, params: GetFileParams) -> bytes:
    """Download a raw PDF file by its document ID.

    Important: Accessing stored generated files requires enabling
    “Save files” in the PDFGate Dashboard settings (disabled by default).

    Returns:
        The raw bytes of the file.
    """
    request = self.request_builder.build_get_file(params.document_id)
    response = self.sync_client.try_make_request(request=request)

    return response.content

get_file_async(params) async

Download a raw PDF file by its document ID.

Important: Accessing stored generated files requires enabling “Save files” in the PDFGate Dashboard settings (disabled by default).

Returns:

Type Description
bytes

The raw bytes of the file.

Source code in src/pdfgate/pdfgate.py
100
101
102
103
104
105
106
107
108
109
110
111
112
async def get_file_async(self, params: GetFileParams) -> bytes:
    """Download a raw PDF file by its document ID.

    Important: Accessing stored generated files requires enabling
    “Save files” in the PDFGate Dashboard settings (disabled by default).

    Returns:
        The raw bytes of the file.
    """
    request = self.request_builder.build_get_file(params.document_id)
    response = await self.async_client.try_make_request_async(request=request)

    return response.content

protect_pdf(params)

Protect a PDF using encryption + optional permission restrictions.

Security options highlights
  • algorithm: "AES256" (default) or "AES128".
  • user_password: password required to open the PDF (optional).
  • owner_password: full control password; required in some cases (e.g., AES256 with user_password).
  • Restrictions: disable_print, disable_copy, disable_editing.
  • encrypt_metadata: whether PDF metadata is encrypted (default False).

Parameters:

Name Type Description Default
params ProtectPDFParams

A ProtectPDFParams instance.

required

Returns:

Type Description
PDFGateDocument

A PDFGateDocument instance.

Source code in src/pdfgate/pdfgate.py
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
def protect_pdf(self, params: ProtectPDFParams) -> PDFGateDocument:
    """Protect a PDF using encryption + optional permission restrictions.

    Security options highlights:
        - `algorithm`: `"AES256"` (default) or `"AES128"`.
        - `user_password`: password required to open the PDF (optional).
        - `owner_password`: full control password; required in some cases (e.g., AES256 with `user_password`).
        - Restrictions: `disable_print`, `disable_copy`, `disable_editing`.
        - `encrypt_metadata`: whether PDF metadata is encrypted (default `False`).

    Args:
        params: A `ProtectPDFParams` instance.

    Returns:
        A `PDFGateDocument` instance.
    """
    request = self.request_builder.build_protect_pdf(params)
    response = self.sync_client.try_make_request(request)
    result = ResponseBuilder.build_document_response(response)

    return result

protect_pdf_async(params) async

Protect a PDF using encryption + optional permission restrictions.

Security options highlights
  • algorithm: "AES256" (default) or "AES128".
  • user_password: password required to open the PDF (optional).
  • owner_password: full control password; required in some cases (e.g., AES256 with user_password).
  • Restrictions: disable_print, disable_copy, disable_editing.
  • encrypt_metadata: whether PDF metadata is encrypted (default False).

Parameters:

Name Type Description Default
params ProtectPDFParams

A ProtectPDFParams instance.

required

Returns:

Type Description
PDFGateDocument

A PDFGateDocument instance.

Source code in src/pdfgate/pdfgate.py
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
async def protect_pdf_async(self, params: ProtectPDFParams) -> PDFGateDocument:
    """Protect a PDF using encryption + optional permission restrictions.

    Security options highlights:
        - `algorithm`: `"AES256"` (default) or `"AES128"`.
        - `user_password`: password required to open the PDF (optional).
        - `owner_password`: full control password; required in some cases (e.g., AES256 with `user_password`).
        - Restrictions: `disable_print`, `disable_copy`, `disable_editing`.
        - `encrypt_metadata`: whether PDF metadata is encrypted (default `False`).

    Args:
        params: A `ProtectPDFParams` instance.

    Returns:
        A `PDFGateDocument` instance.
    """
    request = self.request_builder.build_protect_pdf(params)
    response = await self.async_client.try_make_request_async(request)
    result = ResponseBuilder.build_document_response(response)

    return result

watermark_pdf(params)

Apply a text or image watermark to a PDF.

Watermark configuration highlights
  • type is required: "text" or "image".
  • For text watermarks: text required when type="text".
  • For image watermarks: upload watermark image file (.png, .jpg, .jpeg).
  • Optional: font (standard PDF fonts), fontFile (.ttf/.otf overrides font), fontSize, fontColor, opacity (0..1), xPosition, yPosition, imageWidth, imageHeight, rotate (0..360).

Parameters:

Name Type Description Default
params WatermarkPDFParams

A WatermarkPDFParams instance.

required

Returns:

Type Description
PDFGateDocument

A PDFGateDocument instance.

Source code in src/pdfgate/pdfgate.py
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
def watermark_pdf(self, params: WatermarkPDFParams) -> PDFGateDocument:
    """Apply a text or image watermark to a PDF.

    Watermark configuration highlights:
        - `type` is required: `"text"` or `"image"`.
        - For text watermarks: `text` required when `type="text"`.
        - For image watermarks: upload `watermark` image file (`.png`, `.jpg`, `.jpeg`).
        - Optional: `font` (standard PDF fonts), `fontFile`
        (`.ttf`/`.otf` overrides `font`), `fontSize`, `fontColor`,
        `opacity` (0..1), `xPosition`, `yPosition`, `imageWidth`, `imageHeight`,
        `rotate` (0..360).

    Args:
        params: A `WatermarkPDFParams` instance.

    Returns:
        A `PDFGateDocument` instance.
    """
    request = self.request_builder.build_watermark_pdf(params)
    response = self.sync_client.try_make_request(request)
    result = ResponseBuilder.build_document_response(response)

    return result

watermark_pdf_async(params) async

Apply a text or image watermark to a PDF.

Watermark configuration highlights
  • type is required: "text" or "image".
  • For text watermarks: text required when type="text".
  • For image watermarks: upload watermark image file (.png, .jpg, .jpeg).
  • Optional: font (standard PDF fonts), fontFile (.ttf/.otf overrides font), fontSize, fontColor, opacity (0..1), xPosition, yPosition, imageWidth, imageHeight, rotate (0..360).

Parameters:

Name Type Description Default
params WatermarkPDFParams

A WatermarkPDFParams instance.

required

Returns:

Type Description
PDFGateDocument

A PDFGateDocument instance.

Source code in src/pdfgate/pdfgate.py
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
async def watermark_pdf_async(self, params: WatermarkPDFParams) -> PDFGateDocument:
    """Apply a text or image watermark to a PDF.

    Watermark configuration highlights:
        - `type` is required: `"text"` or `"image"`.
        - For text watermarks: `text` required when `type="text"`.
        - For image watermarks: upload `watermark` image file (`.png`, `.jpg`, `.jpeg`).
        - Optional: `font` (standard PDF fonts), `fontFile`
        (`.ttf`/`.otf` overrides `font`), `fontSize`, `fontColor`,
        `opacity` (0..1), `xPosition`, `yPosition`, `imageWidth`, `imageHeight`,
        `rotate` (0..360).

    Args:
        params: A `WatermarkPDFParams` instance.

    Returns:
        A `PDFGateDocument` instance.
    """
    request = self.request_builder.build_watermark_pdf(params)
    response = await self.async_client.try_make_request_async(request)
    result = ResponseBuilder.build_document_response(response)

    return result

Parameter types and enums used by PDFGate API calls.

ClickSelectorChain dataclass

Sequence of selectors to click in order.

Source code in src/pdfgate/params.py
65
66
67
68
69
@dataclass
class ClickSelectorChain:
    """Sequence of selectors to click in order."""

    selectors: list[str]

ClickSelectorChainSetup dataclass

Configuration for click selector chains.

Source code in src/pdfgate/params.py
72
73
74
75
76
77
@dataclass
class ClickSelectorChainSetup:
    """Configuration for click selector chains."""

    ignore_failing_chains: Optional[bool] = None
    chains: Optional[list["ClickSelectorChain"]] = None

CompressPDFParams dataclass

Bases: PDFGateParams

Parameters for compressing a PDF by document ID.

Source code in src/pdfgate/params.py
200
201
202
203
204
205
206
207
@dataclass
class CompressPDFParams(PDFGateParams):
    """Parameters for compressing a PDF by document ID."""

    document_id: Optional[str] = None
    linearize: Optional[bool] = None
    pre_signed_url_expires_in: Optional[int] = None
    metadata: Optional[Any] = None

EmulateMediaType

Bases: Enum

Media types for CSS emulation during rendering.

Source code in src/pdfgate/params.py
31
32
33
34
35
class EmulateMediaType(Enum):
    """Media types for CSS emulation during rendering."""

    SCREEN = "screen"
    PRINT = "print"

EncryptionAlgorithm

Bases: Enum

Supported encryption algorithms.

Source code in src/pdfgate/params.py
177
178
179
180
181
class EncryptionAlgorithm(Enum):
    """Supported encryption algorithms."""

    AES_256 = "AES256"
    AES_128 = "AES128"

ExtractPDFFormDataParams dataclass

Bases: PDFGateParams

Parameters for extracting form data by document ID.

Source code in src/pdfgate/params.py
170
171
172
173
174
@dataclass
class ExtractPDFFormDataParams(PDFGateParams):
    """Parameters for extracting form data by document ID."""

    document_id: str

FileOrientation

Bases: Enum

Orientation options for generated PDFs.

Source code in src/pdfgate/params.py
24
25
26
27
28
class FileOrientation(Enum):
    """Orientation options for generated PDFs."""

    PORTRAIT = "portrait"
    LANDSCAPE = "landscape"

FileParam

Bases: NamedTuple

Binary file payload for multipart uploads.

Source code in src/pdfgate/params.py
162
163
164
165
166
167
class FileParam(NamedTuple):
    """Binary file payload for multipart uploads."""

    name: str
    data: bytes
    type: Optional[str] = None

FlattenPDFParams dataclass

Bases: PDFGateParams

Parameters for flattening a PDF by document ID.

Source code in src/pdfgate/params.py
153
154
155
156
157
158
159
@dataclass
class FlattenPDFParams(PDFGateParams):
    """Parameters for flattening a PDF by document ID."""

    document_id: Optional[str] = None
    pre_signed_url_expires_in: Optional[int] = None
    metadata: Optional[Any] = None

GeneratePDFAuthentication dataclass

"Authentication credentials for accessing protected web content.

Source code in src/pdfgate/params.py
102
103
104
105
106
107
@dataclass
class GeneratePDFAuthentication:
    """ "Authentication credentials for accessing protected web content."""

    username: str
    password: str

GeneratePDFParams dataclass

Bases: PDFGateParams

Parameters for generating a PDF from HTML or a URL.

Source code in src/pdfgate/params.py
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
@dataclass
class GeneratePDFParams(PDFGateParams):
    """Parameters for generating a PDF from HTML or a URL."""

    html: Optional[str] = None
    url: Optional[str] = None
    pre_signed_url_expires_in: Optional[int] = None
    page_size_type: Optional[PageSizeType] = None
    width: Optional[int] = None
    height: Optional[int] = None
    orientation: Optional[FileOrientation] = None
    header: Optional[str] = None
    footer: Optional[str] = None
    margin: Optional[PdfPageMargin] = None
    timeout: Optional[int] = None
    javascript: Optional[str] = None
    css: Optional[str] = None
    emulate_media_type: Optional[EmulateMediaType] = None
    http_headers: Optional[dict[str, str]] = None
    metadata: Optional[Any] = None
    wait_for_selector: Optional[str] = None
    click_selector: Optional[str] = None
    click_selector_chain_setup: Optional[ClickSelectorChainSetup] = None
    wait_for_network_idle: Optional[bool] = None
    enable_form_fields: Optional[bool] = None
    delay: Optional[int] = None
    load_images: Optional[bool] = None
    scale: Optional[float] = None
    page_ranges: Optional[str] = None
    print_background: Optional[bool] = None
    user_agent: Optional[str] = None
    authentication: Optional[GeneratePDFAuthentication] = None
    viewport: Optional[Viewport] = None

GetDocumentParams dataclass

Bases: PDFGateParams

Parameters for fetching a document's metadata.

Source code in src/pdfgate/params.py
87
88
89
90
91
92
@dataclass
class GetDocumentParams(PDFGateParams):
    """Parameters for fetching a document's metadata."""

    document_id: str
    pre_signed_url_expires_in: Optional[int] = None

GetFileParams dataclass

Bases: PDFGateParams

Parameters for downloading a document's file content.

Source code in src/pdfgate/params.py
95
96
97
98
99
@dataclass
class GetFileParams(PDFGateParams):
    """Parameters for downloading a document's file content."""

    document_id: str

PDFGateParams dataclass

Marker base class for all parameter dataclasses.

Source code in src/pdfgate/params.py
80
81
82
83
84
@dataclass
class PDFGateParams:
    """Marker base class for all parameter dataclasses."""

    pass

PageSizeType

Bases: Enum

Supported page sizes for generated PDFs.

Source code in src/pdfgate/params.py
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
class PageSizeType(Enum):
    """Supported page sizes for generated PDFs."""

    A0 = "a0"
    A1 = "a1"
    A2 = "a2"
    A3 = "a3"
    A4 = "a4"
    A5 = "a5"
    A6 = "a6"
    LEDGER = "ledger"
    TABLOID = "tabloid"
    LEGAL = "legal"
    LETTER = "letter"

PdfPageMargin dataclass

Margins to apply to a PDF page.

Source code in src/pdfgate/params.py
55
56
57
58
59
60
61
62
@dataclass
class PdfPageMargin:
    """Margins to apply to a PDF page."""

    top: Optional[str] = None
    bottom: Optional[str] = None
    left: Optional[str] = None
    right: Optional[str] = None

PdfStandardFont

Bases: Enum

Standard built-in fonts supported by the renderer.

Source code in src/pdfgate/params.py
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
class PdfStandardFont(Enum):
    """Standard built-in fonts supported by the renderer."""

    TIMES_ROMAN = "times-roman"
    TIMES_BOLD = "times-bold"
    TIMES_ITALIC = "times-italic"
    TIMES_BOLD_ITALIC = "times-bolditalic"
    HELVETICA = "helvetica"
    HELVETICA_BOLD = "helvetica-bold"
    HELVETICA_OBLIQUE = "helvetica-oblique"
    HELVETICA_BOLD_OBLIQUE = "helvetica-boldoblique"
    COURIER = "courier"
    COURIER_BOLD = "courier-bold"
    COURIER_OBLIQUE = "courier-oblique"
    COURIER_BOLD_OBLIQUE = "courier-boldoblique"

ProtectPDFParams dataclass

Bases: PDFGateParams

Parameters for protecting a PDF by document ID.

Source code in src/pdfgate/params.py
184
185
186
187
188
189
190
191
192
193
194
195
196
197
@dataclass
class ProtectPDFParams(PDFGateParams):
    """Parameters for protecting a PDF by document ID."""

    document_id: Optional[str] = None
    algorithm: Optional[EncryptionAlgorithm] = None
    user_password: Optional[str] = None
    owner_password: Optional[str] = None
    disable_print: Optional[bool] = None
    disable_copy: Optional[bool] = None
    disable_editing: Optional[bool] = None
    encrypt_metadata: Optional[bool] = None
    pre_signed_url_expires_in: Optional[int] = None
    metadata: Optional[Any] = None

Viewport dataclass

Viewport dimensions for rendering.

Source code in src/pdfgate/params.py
110
111
112
113
114
115
@dataclass
class Viewport:
    """Viewport dimensions for rendering."""

    width: int
    height: int

WatermarkPDFParams dataclass

Bases: PDFGateParams

Parameters for watermarking a PDF by document ID.

Source code in src/pdfgate/params.py
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
@dataclass
class WatermarkPDFParams(PDFGateParams):
    """Parameters for watermarking a PDF by document ID."""

    type: WatermarkType
    document_id: Optional[str] = None
    text: Optional[str] = None
    watermark: Optional[FileParam] = None
    font: Optional[PdfStandardFont] = None
    font_size: Optional[int] = None
    font_color: Optional[str] = None
    opacity: Optional[float] = None
    x_position: Optional[int] = None
    y_position: Optional[int] = None
    image_width: Optional[int] = None
    image_height: Optional[int] = None
    rotate: Optional[float] = None
    pre_signed_url_expires_in: Optional[int] = None
    metadata: Optional[Any] = None

Response models for PDFGate API results.

DocumentType

Bases: Enum

Document types reported by the PDFGate API.

Source code in src/pdfgate/responses.py
15
16
17
18
19
20
21
22
23
class DocumentType(Enum):
    """Document types reported by the PDFGate API."""

    FROM_HTML = "from_html"
    FLATTENED = "flattened"
    WATERMARKED = "watermarked"
    ENCRYPTED = "encrypted"
    COMPRESSED = "compressed"
    SIGNED = "signed"

PDFGateDocument

Bases: TypedDict

Typed dictionary representing a PDFGate document response.

Source code in src/pdfgate/responses.py
26
27
28
29
30
31
32
33
34
35
36
37
class PDFGateDocument(TypedDict, total=False):
    """Typed dictionary representing a PDFGate document response."""

    id: str
    status: DocumentStatus
    created_at: datetime
    expires_at: datetime
    type: Optional[DocumentType]
    file_url: Optional[str]
    size: Optional[int]
    metadata: Optional[dict[str, Any]]
    derived_from: Optional[str]