Server-side PDF export¶
grid-view-spec provides a PDF export view (export_pdf) that:
- Resolves a registered builder key from
?builder= - Calls the builder →
GridViewExportJob(spec, rows, table_id=…) - Renders spec HTML (Jinja2) and converts to PDF (WeasyPrint by default)
HTML and PDF share the same GridViewSpec + rows from your page loader.
Install¶
Mount routes — Django integration:
Register a builder¶
In AppConfig.ready():
from grid_view_spec.export.registry import GridViewExportJob, register_pdf_export
def register_exports():
def builder(host, ctx):
page = load_orders_page(ctx) # DjangoExportContext
return GridViewExportJob(
spec=page.spec,
rows=page.rows,
table_id="orders_table",
)
register_pdf_export("orders", builder)
Builder signature: (GridViewHost, ExportContextLike) → GridViewExportJob.
| Parameter | Purpose |
|---|---|
name |
URL ?builder= key |
builder |
Returns GridViewExportJob |
template |
Jinja template name (default spec_report.html) |
filename_fn |
Optional (host, ctx, payload) → str |
Templates live under grid_view_spec/templates/export/.
HTTP handler¶
Implemented in grid_view_spec.backends.django.views.export_pdf:
- Throttled via
export_throttle - Resolves builder from
grid_view_spec.export.registry - Returns PDF via
grid_view_spec.export.pdf_response.pdf_response_from_html
Charts in PDF¶
Pass PNG paths on the job:
return GridViewExportJob(
spec=page.spec,
rows=page.rows,
table_id="records",
chart_images=("/tmp/chart1.png",),
)
Optional matplotlib rasterization: pip install "grid-view-spec[static-charts]" (host responsibility to generate images).