Skip to content

Commit 82f948a

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 f7e9712 commit 82f948a

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,
@@ -3300,7 +3304,7 @@ def rasterize_pdf(
33003304
timeout=timeout,
33013305
)
33023306

3303-
def convert_to_pdf(
3307+
def convert_office_to_pdf(
33043308
self,
33053309
file: PdfRestFile | Sequence[PdfRestFile],
33063310
*,
@@ -3318,7 +3322,7 @@ def convert_to_pdf(
33183322
extra_body: Body | None = None,
33193323
timeout: TimeoutTypes | None = None,
33203324
) -> PdfRestFileBasedResponse:
3321-
"""Convert a supported file type to PDF."""
3325+
"""Convert a Microsoft Office file (Word, Excel, PowerPoint) to PDF."""
33223326

33233327
payload: dict[str, Any] = {"files": file}
33243328
if output is not None:
@@ -3343,7 +3347,135 @@ def convert_to_pdf(
33433347
return self._post_file_operation(
33443348
endpoint="/pdf",
33453349
payload=payload,
3346-
payload_model=ConvertToPdfPayload,
3350+
payload_model=ConvertOfficeToPdfPayload,
3351+
extra_query=extra_query,
3352+
extra_headers=extra_headers,
3353+
extra_body=extra_body,
3354+
timeout=timeout,
3355+
)
3356+
3357+
def convert_postscript_to_pdf(
3358+
self,
3359+
file: PdfRestFile | Sequence[PdfRestFile],
3360+
*,
3361+
output: str | None = None,
3362+
compression: PdfConversionCompression | None = None,
3363+
downsample: PdfConversionDownsample | None = None,
3364+
extra_query: Query | None = None,
3365+
extra_headers: AnyMapping | None = None,
3366+
extra_body: Body | None = None,
3367+
timeout: TimeoutTypes | None = None,
3368+
) -> PdfRestFileBasedResponse:
3369+
"""Convert a PostScript or EPS file to PDF."""
3370+
3371+
payload: dict[str, Any] = {"files": file}
3372+
if output is not None:
3373+
payload["output"] = output
3374+
if compression is not None:
3375+
payload["compression"] = compression
3376+
if downsample is not None:
3377+
payload["downsample"] = downsample
3378+
3379+
return self._post_file_operation(
3380+
endpoint="/pdf",
3381+
payload=payload,
3382+
payload_model=ConvertPostscriptToPdfPayload,
3383+
extra_query=extra_query,
3384+
extra_headers=extra_headers,
3385+
extra_body=extra_body,
3386+
timeout=timeout,
3387+
)
3388+
3389+
def convert_email_to_pdf(
3390+
self,
3391+
file: PdfRestFile | Sequence[PdfRestFile],
3392+
*,
3393+
output: str | None = None,
3394+
extra_query: Query | None = None,
3395+
extra_headers: AnyMapping | None = None,
3396+
extra_body: Body | None = None,
3397+
timeout: TimeoutTypes | None = None,
3398+
) -> PdfRestFileBasedResponse:
3399+
"""Convert an RFC822 email file to PDF."""
3400+
3401+
payload: dict[str, Any] = {"files": file}
3402+
if output is not None:
3403+
payload["output"] = output
3404+
3405+
return self._post_file_operation(
3406+
endpoint="/pdf",
3407+
payload=payload,
3408+
payload_model=ConvertEmailToPdfPayload,
3409+
extra_query=extra_query,
3410+
extra_headers=extra_headers,
3411+
extra_body=extra_body,
3412+
timeout=timeout,
3413+
)
3414+
3415+
def convert_image_to_pdf(
3416+
self,
3417+
file: PdfRestFile | Sequence[PdfRestFile],
3418+
*,
3419+
output: str | None = None,
3420+
extra_query: Query | None = None,
3421+
extra_headers: AnyMapping | None = None,
3422+
extra_body: Body | None = None,
3423+
timeout: TimeoutTypes | None = None,
3424+
) -> PdfRestFileBasedResponse:
3425+
"""Convert a supported image file to PDF."""
3426+
3427+
payload: dict[str, Any] = {"files": file}
3428+
if output is not None:
3429+
payload["output"] = output
3430+
3431+
return self._post_file_operation(
3432+
endpoint="/pdf",
3433+
payload=payload,
3434+
payload_model=ConvertImageToPdfPayload,
3435+
extra_query=extra_query,
3436+
extra_headers=extra_headers,
3437+
extra_body=extra_body,
3438+
timeout=timeout,
3439+
)
3440+
3441+
def convert_html_to_pdf(
3442+
self,
3443+
file: PdfRestFile | Sequence[PdfRestFile],
3444+
*,
3445+
output: str | None = None,
3446+
compression: PdfConversionCompression | None = None,
3447+
downsample: PdfConversionDownsample | None = None,
3448+
page_size: HtmlPageSize | None = None,
3449+
page_margin: str | None = None,
3450+
page_orientation: HtmlPageOrientation | None = None,
3451+
web_layout: HtmlWebLayout | None = None,
3452+
extra_query: Query | None = None,
3453+
extra_headers: AnyMapping | None = None,
3454+
extra_body: Body | None = None,
3455+
timeout: TimeoutTypes | None = None,
3456+
) -> PdfRestFileBasedResponse:
3457+
"""Convert an uploaded HTML file to PDF."""
3458+
3459+
payload: dict[str, Any] = {"files": file}
3460+
if output is not None:
3461+
payload["output"] = output
3462+
if compression is not None:
3463+
payload["compression"] = compression
3464+
if downsample is not None:
3465+
payload["downsample"] = downsample
3466+
if page_size is not None:
3467+
payload["page_size"] = page_size
3468+
if page_margin is not None:
3469+
payload["page_margin"] = page_margin
3470+
if page_orientation is not None:
3471+
payload["page_orientation"] = page_orientation
3472+
if web_layout is not None:
3473+
payload["web_layout"] = web_layout
3474+
3475+
return self._post_file_operation(
3476+
endpoint="/pdf",
3477+
payload=payload,
3478+
payload_model=ConvertHtmlToPdfPayload,
33473479
extra_query=extra_query,
33483480
extra_headers=extra_headers,
33493481
extra_body=extra_body,
@@ -4885,7 +5017,7 @@ async def rasterize_pdf(
48855017
timeout=timeout,
48865018
)
48875019

4888-
async def convert_to_pdf(
5020+
async def convert_office_to_pdf(
48895021
self,
48905022
file: PdfRestFile | Sequence[PdfRestFile],
48915023
*,
@@ -4903,7 +5035,7 @@ async def convert_to_pdf(
49035035
extra_body: Body | None = None,
49045036
timeout: TimeoutTypes | None = None,
49055037
) -> PdfRestFileBasedResponse:
4906-
"""Asynchronously convert a supported file type to PDF."""
5038+
"""Asynchronously convert a Microsoft Office file to PDF."""
49075039

49085040
payload: dict[str, Any] = {"files": file}
49095041
if output is not None:
@@ -4928,7 +5060,135 @@ async def convert_to_pdf(
49285060
return await self._post_file_operation(
49295061
endpoint="/pdf",
49305062
payload=payload,
4931-
payload_model=ConvertToPdfPayload,
5063+
payload_model=ConvertOfficeToPdfPayload,
5064+
extra_query=extra_query,
5065+
extra_headers=extra_headers,
5066+
extra_body=extra_body,
5067+
timeout=timeout,
5068+
)
5069+
5070+
async def convert_postscript_to_pdf(
5071+
self,
5072+
file: PdfRestFile | Sequence[PdfRestFile],
5073+
*,
5074+
output: str | None = None,
5075+
compression: PdfConversionCompression | None = None,
5076+
downsample: PdfConversionDownsample | None = None,
5077+
extra_query: Query | None = None,
5078+
extra_headers: AnyMapping | None = None,
5079+
extra_body: Body | None = None,
5080+
timeout: TimeoutTypes | None = None,
5081+
) -> PdfRestFileBasedResponse:
5082+
"""Asynchronously convert a PostScript or EPS file to PDF."""
5083+
5084+
payload: dict[str, Any] = {"files": file}
5085+
if output is not None:
5086+
payload["output"] = output
5087+
if compression is not None:
5088+
payload["compression"] = compression
5089+
if downsample is not None:
5090+
payload["downsample"] = downsample
5091+
5092+
return await self._post_file_operation(
5093+
endpoint="/pdf",
5094+
payload=payload,
5095+
payload_model=ConvertPostscriptToPdfPayload,
5096+
extra_query=extra_query,
5097+
extra_headers=extra_headers,
5098+
extra_body=extra_body,
5099+
timeout=timeout,
5100+
)
5101+
5102+
async def convert_email_to_pdf(
5103+
self,
5104+
file: PdfRestFile | Sequence[PdfRestFile],
5105+
*,
5106+
output: str | None = None,
5107+
extra_query: Query | None = None,
5108+
extra_headers: AnyMapping | None = None,
5109+
extra_body: Body | None = None,
5110+
timeout: TimeoutTypes | None = None,
5111+
) -> PdfRestFileBasedResponse:
5112+
"""Asynchronously convert an RFC822 email file to PDF."""
5113+
5114+
payload: dict[str, Any] = {"files": file}
5115+
if output is not None:
5116+
payload["output"] = output
5117+
5118+
return await self._post_file_operation(
5119+
endpoint="/pdf",
5120+
payload=payload,
5121+
payload_model=ConvertEmailToPdfPayload,
5122+
extra_query=extra_query,
5123+
extra_headers=extra_headers,
5124+
extra_body=extra_body,
5125+
timeout=timeout,
5126+
)
5127+
5128+
async def convert_image_to_pdf(
5129+
self,
5130+
file: PdfRestFile | Sequence[PdfRestFile],
5131+
*,
5132+
output: str | None = None,
5133+
extra_query: Query | None = None,
5134+
extra_headers: AnyMapping | None = None,
5135+
extra_body: Body | None = None,
5136+
timeout: TimeoutTypes | None = None,
5137+
) -> PdfRestFileBasedResponse:
5138+
"""Asynchronously convert a supported image file to PDF."""
5139+
5140+
payload: dict[str, Any] = {"files": file}
5141+
if output is not None:
5142+
payload["output"] = output
5143+
5144+
return await self._post_file_operation(
5145+
endpoint="/pdf",
5146+
payload=payload,
5147+
payload_model=ConvertImageToPdfPayload,
5148+
extra_query=extra_query,
5149+
extra_headers=extra_headers,
5150+
extra_body=extra_body,
5151+
timeout=timeout,
5152+
)
5153+
5154+
async def convert_html_to_pdf(
5155+
self,
5156+
file: PdfRestFile | Sequence[PdfRestFile],
5157+
*,
5158+
output: str | None = None,
5159+
compression: PdfConversionCompression | None = None,
5160+
downsample: PdfConversionDownsample | None = None,
5161+
page_size: HtmlPageSize | None = None,
5162+
page_margin: str | None = None,
5163+
page_orientation: HtmlPageOrientation | None = None,
5164+
web_layout: HtmlWebLayout | None = None,
5165+
extra_query: Query | None = None,
5166+
extra_headers: AnyMapping | None = None,
5167+
extra_body: Body | None = None,
5168+
timeout: TimeoutTypes | None = None,
5169+
) -> PdfRestFileBasedResponse:
5170+
"""Asynchronously convert an uploaded HTML file to PDF."""
5171+
5172+
payload: dict[str, Any] = {"files": file}
5173+
if output is not None:
5174+
payload["output"] = output
5175+
if compression is not None:
5176+
payload["compression"] = compression
5177+
if downsample is not None:
5178+
payload["downsample"] = downsample
5179+
if page_size is not None:
5180+
payload["page_size"] = page_size
5181+
if page_margin is not None:
5182+
payload["page_margin"] = page_margin
5183+
if page_orientation is not None:
5184+
payload["page_orientation"] = page_orientation
5185+
if web_layout is not None:
5186+
payload["web_layout"] = web_layout
5187+
5188+
return await self._post_file_operation(
5189+
endpoint="/pdf",
5190+
payload=payload,
5191+
payload_model=ConvertHtmlToPdfPayload,
49325192
extra_query=extra_query,
49335193
extra_headers=extra_headers,
49345194
extra_body=extra_body,

0 commit comments

Comments
 (0)