Official Python SDK for the PDFik PDF generation API
Project description
pdfik
Official Python SDK for PDFik — the premium, fast, and reliable PDF generation API.
Convert HTML markup or any public URL into pixel-perfect PDF documents in seconds, powered by scalable browser rendering.
Features
- Type Safety: Type hints for all options and response objects.
- Sync & Async: Exposes both
PdfikClientandAsyncPdfikClientusing the modernhttpxengine. - Auto Retry: Automatic exponential backoff for
5xxand429(Rate Limit) errors powered bytenacity. - DX Affordances: Built-in polling logic (
wait_for_job) and file download helpers.
Installation
pip install pdfik
Quick Start
Convert public URL to PDF (Sync)
from pdfik import PdfikClient, PdfOptions, MarginOptions
# Initialize the client
client = PdfikClient(api_key="sk_live_...")
# 1. Submit the URL to be rendered
job = client.url_to_pdf(
"https://example.com",
options=PdfOptions(
format="A4",
landscape=False,
print_background=True,
margin=MarginOptions(top="10mm", bottom="10mm")
)
)
print(f"Job created: {job.job_id}. Waiting for rendering...")
# 2. Poll until the job completes
result = client.wait_for_job(job.job_id)
print(f"Job finished! Pages: {result.pages_count}")
# 3. Download the PDF bytes
pdf_bytes = client.download_pdf(job.job_id)
with open("output.pdf", "wb") as f:
f.write(pdf_bytes)
print("PDF saved to output.pdf")
# Close connection pool
client.close()
Convert raw HTML to PDF (Async)
import asyncio
from pdfik import AsyncPdfikClient, PdfOptions
async def main():
async with AsyncPdfikClient(api_key="sk_live_...") as client:
job = await client.html_to_pdf(
"<h1>Hello World</h1><p>Sent from PDFik Python SDK</p>",
options=PdfOptions(format="Letter")
)
result = await client.wait_for_job(job.job_id)
print(f"Job finished! Status: {result.status}")
pdf_bytes = await client.download_pdf(job.job_id)
asyncio.run(main())
Get the direct download URL
Get the direct API download URL for the generated PDF (requires the "X-API-Key" header to download):
file_info = client.get_file_url(job.job_id)
print(f"Direct Download URL: {file_info.download_url}")
Handling Webhooks
If you specify webhook_url in the options of url_to_pdf or html_to_pdf, PDFik will send an HTTP POST request to your server when the rendering job is finished.
You should verify the authenticity of the webhook by validating the signature. We provide a static helper verify_webhook_signature in PdfikClient for this purpose.
Example (FastAPI):
from fastapi import FastAPI, Request, HTTPException
from pdfik import PdfikClient
app = FastAPI()
# Get your webhook secret from the PDFik Dashboard
WEBHOOK_SECRET = "whsec_..."
@app.post("/webhook")
async def handle_webhook(request: Request):
# Retrieve headers
headers = dict(request.headers)
# Retrieve the raw payload bytes
raw_body = await request.body()
# Verify signature
is_valid = PdfikClient.verify_webhook_signature(raw_body, headers, WEBHOOK_SECRET)
if not is_valid:
raise HTTPException(status_code=400, detail="Invalid signature")
# Process event
event = await request.json()
print(f"Received webhook event: {event.get('event_type')} for job: {event.get('job_id')}")
return {"received": True}
License
MIT License.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pdfik-0.2.1.tar.gz.
File metadata
- Download URL: pdfik-0.2.1.tar.gz
- Upload date:
- Size: 7.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1063a63ee30f47f42de8dd8c4fbfca3549b3d6ac2cafd81b65c708e84de9efec
|
|
| MD5 |
6a2d8dc49b04cd8ed4ce81afaf661c44
|
|
| BLAKE2b-256 |
633bedd51e1a5ac722bb281de8c5d35309c4df256f468ade67a86d7dc160bf29
|
File details
Details for the file pdfik-0.2.1-py3-none-any.whl.
File metadata
- Download URL: pdfik-0.2.1-py3-none-any.whl
- Upload date:
- Size: 7.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee311af83086991f2e17703a9b8827672536c6705798bf01a07a49a184aadcc9
|
|
| MD5 |
e6dacd09b84fb61392096e32d351ea39
|
|
| BLAKE2b-256 |
b43f33d6d41ce371d6fec025a3c004cad04b81c526ebecc367fca5650f767815
|