Python SDK
Generate PDFs from your Python applications — Django, Flask, FastAPI, or scripts.
Installation
Bash
pip install documentstackQuick Start
Python
from documentstack import DocumentStack
client = DocumentStack(api_key="ds_live_your_key_here")
pdf = client.generate(
template_id="tmpl_abc123",
data={
"customer_name": "Acme Corp",
"invoice_number": "INV-001",
"total": "$5,000.00",
},
)
with open("invoice.pdf", "wb") as f:
f.write(pdf)
print("PDF generated successfully!")Store your API key in an environment variable and load it with
os.environ["DOCUMENTSTACK_API_KEY"] instead of hardcoding.Configuration
| Parameter | Type | Default | Description |
|---|---|---|---|
api_key | str | — | Your API key (required) |
base_url | str | API URL | Custom URL for self-hosted instances |
timeout | int | 30 | Request timeout in seconds |
Django Example
Serve PDFs from a Django view:
Python
from django.http import HttpResponse
from documentstack import DocumentStack
client = DocumentStack(api_key=settings.DOCUMENTSTACK_API_KEY)
def download_invoice(request, invoice_id):
invoice = Invoice.objects.get(id=invoice_id)
pdf = client.generate(
template_id="tmpl_invoice",
data={
"customer_name": invoice.customer.name,
"invoice_number": invoice.number,
"line_items": [
{"description": item.desc, "amount": str(item.amount)}
for item in invoice.items.all()
],
"total": str(invoice.total),
},
)
response = HttpResponse(pdf, content_type="application/pdf")
response["Content-Disposition"] = f'attachment; filename="invoice-{invoice.number}.pdf"'
return responseFastAPI Example
Python
from fastapi import FastAPI
from fastapi.responses import Response
from documentstack import DocumentStack
app = FastAPI()
client = DocumentStack(api_key="ds_live_your_key_here")
@app.post("/generate-pdf")
async def generate_pdf(template_id: str, data: dict):
pdf = client.generate(template_id=template_id, data=data)
return Response(
content=pdf,
media_type="application/pdf",
headers={"Content-Disposition": 'attachment; filename="document.pdf"'},
)Flask Example
Python
from flask import Flask, send_file
from documentstack import DocumentStack
import io
import { CodeBlock } from "@/components/docs/CodeBlock";
import { generateDocsMetadata, generateDocsJsonLd } from "@/lib/docs-seo";
export const metadata = generateDocsMetadata("/docs/sdk-python");
app = Flask(__name__)
client = DocumentStack(api_key="ds_live_your_key_here")
@app.route("/invoice/<invoice_id>/pdf")
def invoice_pdf(invoice_id):
invoice = get_invoice(invoice_id)
pdf = client.generate(
template_id="tmpl_invoice",
data={"customer_name": invoice["name"], "total": invoice["total"]},
)
return send_file(
io.BytesIO(pdf),
mimetype="application/pdf",
download_name=f"invoice-{invoice_id}.pdf",
)Error Handling
Python
from documentstack import DocumentStack, DocumentStackError
client = DocumentStack(api_key="ds_live_your_key_here")
try:
pdf = client.generate(template_id="tmpl_abc", data={"name": "Test"})
except DocumentStackError as e:
print(f"Generation failed: {e.message}")
print(f"Status code: {e.status_code}")View on GitHub
The source code is available on GitHub. Report issues, view examples, or contribute improvements.