Skip to main content

Python SDK for the Forme hosted PDF API

Project description

forme

Python SDK for the Forme hosted PDF API.

Installation

pip install formepdf

Quick Start

from formepdf import Forme

client = Forme("forme_sk_...")

# Render a template to PDF bytes
pdf = client.render("invoice", {"customer": "Acme", "total": 100})

with open("invoice.pdf", "wb") as f:
    f.write(pdf)

API Reference

Forme(api_key, base_url="https://api.formepdf.com")

Create a client instance.

client.render(slug, data=None, *, s3=None)

Render a template synchronously. Returns bytes (PDF), or a dict with {"url": "..."} when s3 is provided.

# Direct PDF bytes
pdf = client.render("invoice", {"customer": "Acme"})

# Upload to S3
result = client.render("invoice", {"customer": "Acme"}, s3={
    "bucket": "my-bucket",
    "key": "invoices/001.pdf",
    "accessKeyId": "AK...",
    "secretAccessKey": "SK...",
})
print(result["url"])

client.render_async(slug, data=None, *, webhook_url=None)

Start an asynchronous render job. Returns {"jobId": "...", "status": "pending"}.

job = client.render_async("report", data, webhook_url="https://example.com/hook")
print(job["jobId"])

client.get_job(job_id)

Poll the status of an async job.

result = client.get_job("job-123")
if result["status"] == "complete":
    pdf_b64 = result["pdfBase64"]

client.extract(pdf_bytes)

Extract embedded data from a PDF. Returns the data dict, or None if none is embedded.

data = client.extract(pdf_bytes)

Error Handling

All methods raise FormeError on non-2xx responses:

from formepdf import Forme, FormeError

try:
    pdf = client.render("invoice", data)
except FormeError as e:
    print(f"Error {e.status}: {e.message}")

Requirements

  • Python 3.8+
  • No dependencies (stdlib only)

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

formepdf-0.7.13.tar.gz (17.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

formepdf-0.7.13-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

Details for the file formepdf-0.7.13.tar.gz.

File metadata

  • Download URL: formepdf-0.7.13.tar.gz
  • Upload date:
  • Size: 17.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.12

File hashes

Hashes for formepdf-0.7.13.tar.gz
Algorithm Hash digest
SHA256 a1489126ebb560ff6c322c9e201635971dab1828ddba1021c89e2001c5bc8109
MD5 3ccbdfb4f546220641c051002486e6c3
BLAKE2b-256 0578d8df3c21a5ef1c5d02921f83f0c7aeb38f1cd72a961321d194b3d44a6a3c

See more details on using hashes here.

File details

Details for the file formepdf-0.7.13-py3-none-any.whl.

File metadata

  • Download URL: formepdf-0.7.13-py3-none-any.whl
  • Upload date:
  • Size: 13.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.12

File hashes

Hashes for formepdf-0.7.13-py3-none-any.whl
Algorithm Hash digest
SHA256 4bc83763c8d1b2be39fb42920dc9dcc0d0f6b1e98dcf296868bf156369a7dc7e
MD5 2158077d590ca4632eea232f1732a9e5
BLAKE2b-256 ed56eac9bca23558552bd47335fcc314b864a44358173c726f412bafe6e2377f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page