Skip to content

Commit 24e710b

Browse files
Split up /pdf methods
- Split by input format "families" - eml - HTML - image - Office - PostScript - Leave URL input separate, as it was Assisted-by: Codex
1 parent e7d3686 commit 24e710b

19 files changed

Lines changed: 2096 additions & 588 deletions

src/pdfrest/client.py

Lines changed: 267 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,12 @@
7575
from .models._internal import (
7676
BasePdfRestGraphicPayload,
7777
BmpPdfRestPayload,
78+
ConvertEmailToPdfPayload,
79+
ConvertHtmlToPdfPayload,
80+
ConvertImageToPdfPayload,
81+
ConvertOfficeToPdfPayload,
82+
ConvertPostscriptToPdfPayload,
7883
ConvertToMarkdownPayload,
79-
ConvertToPdfPayload,
8084
ConvertUrlsToPdfPayload,
8185
DeletePayload,
8286
ExtractImagesPayload,
@@ -3086,7 +3090,7 @@ def rasterize_pdf(
30863090
timeout=timeout,
30873091
)
30883092

3089-
def convert_to_pdf(
3093+
def convert_office_to_pdf(
30903094
self,
30913095
file: PdfRestFile | Sequence[PdfRestFile],
30923096
*,
@@ -3104,7 +3108,7 @@ def convert_to_pdf(
31043108
extra_body: Body | None = None,
31053109
timeout: TimeoutTypes | None = None,
31063110
) -> PdfRestFileBasedResponse:
3107-
"""Convert a supported file type to PDF."""
3111+
"""Convert a Microsoft Office file (Word, Excel, PowerPoint) to PDF."""
31083112

31093113
payload: dict[str, Any] = {"files": file}
31103114
if output is not None:
@@ -3129,7 +3133,135 @@ def convert_to_pdf(
31293133
return self._post_file_operation(
31303134
endpoint="/pdf",
31313135
payload=payload,
3132-
payload_model=ConvertToPdfPayload,
3136+
payload_model=ConvertOfficeToPdfPayload,
3137+
extra_query=extra_query,
3138+
extra_headers=extra_headers,
3139+
extra_body=extra_body,
3140+
timeout=timeout,
3141+
)
3142+
3143+
def convert_postscript_to_pdf(
3144+
self,
3145+
file: PdfRestFile | Sequence[PdfRestFile],
3146+
*,
3147+
output: str | None = None,
3148+
compression: PdfConversionCompression | None = None,
3149+
downsample: PdfConversionDownsample | None = None,
3150+
extra_query: Query | None = None,
3151+
extra_headers: AnyMapping | None = None,
3152+
extra_body: Body | None = None,
3153+
timeout: TimeoutTypes | None = None,
3154+
) -> PdfRestFileBasedResponse:
3155+
"""Convert a PostScript or EPS file to PDF."""
3156+
3157+
payload: dict[str, Any] = {"files": file}
3158+
if output is not None:
3159+
payload["output"] = output
3160+
if compression is not None:
3161+
payload["compression"] = compression
3162+
if downsample is not None:
3163+
payload["downsample"] = downsample
3164+
3165+
return self._post_file_operation(
3166+
endpoint="/pdf",
3167+
payload=payload,
3168+
payload_model=ConvertPostscriptToPdfPayload,
3169+
extra_query=extra_query,
3170+
extra_headers=extra_headers,
3171+
extra_body=extra_body,
3172+
timeout=timeout,
3173+
)
3174+
3175+
def convert_email_to_pdf(
3176+
self,
3177+
file: PdfRestFile | Sequence[PdfRestFile],
3178+
*,
3179+
output: str | None = None,
3180+
extra_query: Query | None = None,
3181+
extra_headers: AnyMapping | None = None,
3182+
extra_body: Body | None = None,
3183+
timeout: TimeoutTypes | None = None,
3184+
) -> PdfRestFileBasedResponse:
3185+
"""Convert an RFC822 email file to PDF."""
3186+
3187+
payload: dict[str, Any] = {"files": file}
3188+
if output is not None:
3189+
payload["output"] = output
3190+
3191+
return self._post_file_operation(
3192+
endpoint="/pdf",
3193+
payload=payload,
3194+
payload_model=ConvertEmailToPdfPayload,
3195+
extra_query=extra_query,
3196+
extra_headers=extra_headers,
3197+
extra_body=extra_body,
3198+
timeout=timeout,
3199+
)
3200+
3201+
def convert_image_to_pdf(
3202+
self,
3203+
file: PdfRestFile | Sequence[PdfRestFile],
3204+
*,
3205+
output: str | None = None,
3206+
extra_query: Query | None = None,
3207+
extra_headers: AnyMapping | None = None,
3208+
extra_body: Body | None = None,
3209+
timeout: TimeoutTypes | None = None,
3210+
) -> PdfRestFileBasedResponse:
3211+
"""Convert a supported image file to PDF."""
3212+
3213+
payload: dict[str, Any] = {"files": file}
3214+
if output is not None:
3215+
payload["output"] = output
3216+
3217+
return self._post_file_operation(
3218+
endpoint="/pdf",
3219+
payload=payload,
3220+
payload_model=ConvertImageToPdfPayload,
3221+
extra_query=extra_query,
3222+
extra_headers=extra_headers,
3223+
extra_body=extra_body,
3224+
timeout=timeout,
3225+
)
3226+
3227+
def convert_html_to_pdf(
3228+
self,
3229+
file: PdfRestFile | Sequence[PdfRestFile],
3230+
*,
3231+
output: str | None = None,
3232+
compression: PdfConversionCompression | None = None,
3233+
downsample: PdfConversionDownsample | None = None,
3234+
page_size: HtmlPageSize | None = None,
3235+
page_margin: str | None = None,
3236+
page_orientation: HtmlPageOrientation | None = None,
3237+
web_layout: HtmlWebLayout | None = None,
3238+
extra_query: Query | None = None,
3239+
extra_headers: AnyMapping | None = None,
3240+
extra_body: Body | None = None,
3241+
timeout: TimeoutTypes | None = None,
3242+
) -> PdfRestFileBasedResponse:
3243+
"""Convert an uploaded HTML file to PDF."""
3244+
3245+
payload: dict[str, Any] = {"files": file}
3246+
if output is not None:
3247+
payload["output"] = output
3248+
if compression is not None:
3249+
payload["compression"] = compression
3250+
if downsample is not None:
3251+
payload["downsample"] = downsample
3252+
if page_size is not None:
3253+
payload["page_size"] = page_size
3254+
if page_margin is not None:
3255+
payload["page_margin"] = page_margin
3256+
if page_orientation is not None:
3257+
payload["page_orientation"] = page_orientation
3258+
if web_layout is not None:
3259+
payload["web_layout"] = web_layout
3260+
3261+
return self._post_file_operation(
3262+
endpoint="/pdf",
3263+
payload=payload,
3264+
payload_model=ConvertHtmlToPdfPayload,
31333265
extra_query=extra_query,
31343266
extra_headers=extra_headers,
31353267
extra_body=extra_body,
@@ -4467,7 +4599,7 @@ async def rasterize_pdf(
44674599
timeout=timeout,
44684600
)
44694601

4470-
async def convert_to_pdf(
4602+
async def convert_office_to_pdf(
44714603
self,
44724604
file: PdfRestFile | Sequence[PdfRestFile],
44734605
*,
@@ -4485,7 +4617,7 @@ async def convert_to_pdf(
44854617
extra_body: Body | None = None,
44864618
timeout: TimeoutTypes | None = None,
44874619
) -> PdfRestFileBasedResponse:
4488-
"""Asynchronously convert a supported file type to PDF."""
4620+
"""Asynchronously convert a Microsoft Office file to PDF."""
44894621

44904622
payload: dict[str, Any] = {"files": file}
44914623
if output is not None:
@@ -4510,7 +4642,135 @@ async def convert_to_pdf(
45104642
return await self._post_file_operation(
45114643
endpoint="/pdf",
45124644
payload=payload,
4513-
payload_model=ConvertToPdfPayload,
4645+
payload_model=ConvertOfficeToPdfPayload,
4646+
extra_query=extra_query,
4647+
extra_headers=extra_headers,
4648+
extra_body=extra_body,
4649+
timeout=timeout,
4650+
)
4651+
4652+
async def convert_postscript_to_pdf(
4653+
self,
4654+
file: PdfRestFile | Sequence[PdfRestFile],
4655+
*,
4656+
output: str | None = None,
4657+
compression: PdfConversionCompression | None = None,
4658+
downsample: PdfConversionDownsample | None = None,
4659+
extra_query: Query | None = None,
4660+
extra_headers: AnyMapping | None = None,
4661+
extra_body: Body | None = None,
4662+
timeout: TimeoutTypes | None = None,
4663+
) -> PdfRestFileBasedResponse:
4664+
"""Asynchronously convert a PostScript or EPS file to PDF."""
4665+
4666+
payload: dict[str, Any] = {"files": file}
4667+
if output is not None:
4668+
payload["output"] = output
4669+
if compression is not None:
4670+
payload["compression"] = compression
4671+
if downsample is not None:
4672+
payload["downsample"] = downsample
4673+
4674+
return await self._post_file_operation(
4675+
endpoint="/pdf",
4676+
payload=payload,
4677+
payload_model=ConvertPostscriptToPdfPayload,
4678+
extra_query=extra_query,
4679+
extra_headers=extra_headers,
4680+
extra_body=extra_body,
4681+
timeout=timeout,
4682+
)
4683+
4684+
async def convert_email_to_pdf(
4685+
self,
4686+
file: PdfRestFile | Sequence[PdfRestFile],
4687+
*,
4688+
output: str | None = None,
4689+
extra_query: Query | None = None,
4690+
extra_headers: AnyMapping | None = None,
4691+
extra_body: Body | None = None,
4692+
timeout: TimeoutTypes | None = None,
4693+
) -> PdfRestFileBasedResponse:
4694+
"""Asynchronously convert an RFC822 email file to PDF."""
4695+
4696+
payload: dict[str, Any] = {"files": file}
4697+
if output is not None:
4698+
payload["output"] = output
4699+
4700+
return await self._post_file_operation(
4701+
endpoint="/pdf",
4702+
payload=payload,
4703+
payload_model=ConvertEmailToPdfPayload,
4704+
extra_query=extra_query,
4705+
extra_headers=extra_headers,
4706+
extra_body=extra_body,
4707+
timeout=timeout,
4708+
)
4709+
4710+
async def convert_image_to_pdf(
4711+
self,
4712+
file: PdfRestFile | Sequence[PdfRestFile],
4713+
*,
4714+
output: str | None = None,
4715+
extra_query: Query | None = None,
4716+
extra_headers: AnyMapping | None = None,
4717+
extra_body: Body | None = None,
4718+
timeout: TimeoutTypes | None = None,
4719+
) -> PdfRestFileBasedResponse:
4720+
"""Asynchronously convert a supported image file to PDF."""
4721+
4722+
payload: dict[str, Any] = {"files": file}
4723+
if output is not None:
4724+
payload["output"] = output
4725+
4726+
return await self._post_file_operation(
4727+
endpoint="/pdf",
4728+
payload=payload,
4729+
payload_model=ConvertImageToPdfPayload,
4730+
extra_query=extra_query,
4731+
extra_headers=extra_headers,
4732+
extra_body=extra_body,
4733+
timeout=timeout,
4734+
)
4735+
4736+
async def convert_html_to_pdf(
4737+
self,
4738+
file: PdfRestFile | Sequence[PdfRestFile],
4739+
*,
4740+
output: str | None = None,
4741+
compression: PdfConversionCompression | None = None,
4742+
downsample: PdfConversionDownsample | None = None,
4743+
page_size: HtmlPageSize | None = None,
4744+
page_margin: str | None = None,
4745+
page_orientation: HtmlPageOrientation | None = None,
4746+
web_layout: HtmlWebLayout | None = None,
4747+
extra_query: Query | None = None,
4748+
extra_headers: AnyMapping | None = None,
4749+
extra_body: Body | None = None,
4750+
timeout: TimeoutTypes | None = None,
4751+
) -> PdfRestFileBasedResponse:
4752+
"""Asynchronously convert an uploaded HTML file to PDF."""
4753+
4754+
payload: dict[str, Any] = {"files": file}
4755+
if output is not None:
4756+
payload["output"] = output
4757+
if compression is not None:
4758+
payload["compression"] = compression
4759+
if downsample is not None:
4760+
payload["downsample"] = downsample
4761+
if page_size is not None:
4762+
payload["page_size"] = page_size
4763+
if page_margin is not None:
4764+
payload["page_margin"] = page_margin
4765+
if page_orientation is not None:
4766+
payload["page_orientation"] = page_orientation
4767+
if web_layout is not None:
4768+
payload["web_layout"] = web_layout
4769+
4770+
return await self._post_file_operation(
4771+
endpoint="/pdf",
4772+
payload=payload,
4773+
payload_model=ConvertHtmlToPdfPayload,
45144774
extra_query=extra_query,
45154775
extra_headers=extra_headers,
45164776
extra_body=extra_body,

0 commit comments

Comments
 (0)